programing

Windows 서버에서 MySQL 데이터베이스 자동 백업

powerit 2023. 9. 5. 20:49
반응형

Windows 서버에서 MySQL 데이터베이스 자동 백업

지정된 서버에 대해 하루 중 특정 시간에 MySQL 데이터베이스를 자동으로 백업하거나 첨부 파일이 포함된 이메일을 보낼 수 있는 방법이 있습니까?이를 달성하기 위한 가장 좋고 안전한 방법은 무엇이라고 생각하십니까?

이를 위한 가장 좋은 방법은

mysqldump.exe --user=YourUserName --password=YourPassword --host=localhost --port=3306 --result-file="Path\dump.sql" --databases "DatabaseName1" "Database2"


mysqldump.exe --user=root --password=root  --host=localhost --port=3306 --result-file="c:\www\db\backup.%date:~10,4%%date:~7,2%%date:~4,2%.sql" --default-character-set=utf8 --single-transaction=TRUE --databases "dbtest1" "dbtest2"

패턴backup.%date:~10,4%%date:~7,2%%date:~4,2%.sql고유한 이름을 만듭니다(backup20131010.sql) 실행될 때마다

이제 작업 스케줄러에서 이 명령을 호출하기만 하면 됩니다.바로 그거예요 :)

Windows Task Scheduler/cron(시스템에 따라 다름)과 mysqdump를 사용합니다.링크에서 아래로 스크롤하면 원하는 것을 달성하는 방법에 대한 통찰력이 포함됩니다.

다음 명령 중 하나를 에 추가할 수 있습니다.Windows task scheduler:

mysqldump –-user [username] –-password=[password] [database name] > [dump file]

또는 콤팩트한 방식으로:

mysqldump –u[username] –p[password] [database name] > [dump file]

또는:

mysqldump -u[user] -p[password] --result-file="c:\<path>\backup.%DATE:~0,3%.sql" [database]

databaseW.2016,06,29-22,31,48-15.sql

@echo off
rem Backup Database (Daily,via Task Scheduler)
rem databaseW
set filename="c:\xampp\dbk\databaseW.%date:~6,4%,%date:~0,2%,%date:~3,2%-%time:~0,2%,%time:~3,2%,%time:~6,2%-%time:~9,2%.sql"
c:\xampp\mysql\bin\mysqldump.exe --user=root --password=dell@root --host=localhost --port=3306 --result-file=%filename% --default-character-set=utf8 --single-transaction=TRUE --databases "databaseW"

날짜 및 시간을 기준으로 이름이 지정된 파일을 만들려면 다음을 사용합니다.%date%그리고.%time%두 변수는 로케일 및 cmd 셸 버전을 기반으로 합니다.

  • cmd 창을 엽니다.
  • 입력echo %time%그리고.echo %date%나의 것은22:11:16.80,06/29/2016 Wed
  • 변수를 통과시키다%variable:~startpos,length%쉼표로 구분된 시간을 원합니다. 그러면 cmd가echo %time:~0,2%,%time:~3,2%,%time:~6,2%,%time:~9,2%
  • 다음과 같은 파일 이름을 가져옵니다.databaseW.2016,06,29-22,31,48-15.sql사용하다set filename="databaseW.%date:~6,4%,%date:~0,2%,%date:~3,2%-%time:~0,2%,%time:~3,2%,%time:~6,2%-%time:~9,2%.sql"
  • 확인합니다.date그리고.time미리
  • 을 사용합니다.--result-file대신 옵션>Mysql Manuel에 따르면, ">"를 사용하여 저장된 파일의 문자 집합은UTF-16그 사이에--result-file다음에--default-character-set
  • 파일에 저장BackpDay-databaseW.cmd
  • 새 태스크에 추가Action트리거를 설정합니다(Windows 작업 스케줄러)

다른 사람들이 설명한 것과 유사한 일을 했습니다.거의 차이가 없고 추가 작업 없이:

나는 배치 파일을 만들었습니다.
Windows 스케줄러를 통해 해당 배치 파일 실행
해당 작업에 적합한 일정을 작성
배치 파일 내에서 다음 단계가 실행됩니다.

  • 4-1) 현재 날짜를 기준으로 파일명 작성
  • 4-2) mysqdump의 지원을 받았습니다.해당 디렉토리 및 파일 이름의 exe
  • 4-3) 7-Zip app을 통해 압축파일을 만든 후(설치) 압축되지 않은 백업을 삭제합니다.
  • 4-4) 네트워크 파일 서버에 복사본 작성

다음은 스크립트(.bat) 샘플입니다.

@echo off
set current=%date:~10,4%%date:~4,2%%date:~7,2%
set filename="E:\MySQL Backups\DBName-%current%.sql"
set filename2="E:\MySQL Backups\DBName-%current%.zip"
echo %filename%
cd "E:\MySQL Backups"
C:\"Program Files"\MySQL\"MySQL Server 5.5"\bin\mysqldump.exe db_name --user=root --password=rootpass --host="127.0.0.1" --port=instancePort --result-file=%filename% --default-character-set=utf8 --single-transaction=TRUE
echo backup-finished

if exist %filename% (
    "C:\Program Files\7-Zip\7z.exe" a %filename2% %filename%
    echo zip-finished
    del %filename%
)
if exist %filename2% (
    copy %filename2% "\\192.168.x.x\MySQL Backups"
    echo copy-finished
)

언급URL : https://stackoverflow.com/questions/14666819/mysql-database-backup-automatically-on-a-windows-server

반응형