web-dev-qa-db-ja.com

WindowsサーバーでのMySQLデータベースのバックアップ

指定されたサーバーの特定の時刻にMySQLデータベースを自動的にバックアップする方法、または添付ファイル付きの電子メールを送信する方法はありますか。これを達成するための最良かつ最も安全な方法はどれですか。

31
Coderwannabe

Windowsタスクスケジューラ/ cron(システムによって異なります)と mysqldump を使用します。リンクを下にスクロールすると、目的を達成する方法についての洞察が含まれています。

23
martin

これを行う最善の方法は

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)実行するたびに

ここで、タスクスケジューラでこのコマンドを呼び出すだけです。それでおしまい。 :)

22
Tarun Gupta

次のコマンドのいずれかを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]
7
Jess Stone

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 [email protected] --Host=localhost --port=3306 --result-file=%filename% --default-character-set=utf8 --single-transaction=TRUE --databases "databaseW"

日付と時刻に基づいた名前のファイルを作成するには、%date%%time%を使用します。 2つの変数はロケールとcmdシェルバージョンに基づいていることに注意してください

  • cmdウィンドウを開きます
  • 入力echo %time%およびecho %date%鉱山は22:11:16.8006/29/2016 Wedです
  • %variable:~startpos,length%を介して変数をsubstrコンマで区切られた時間が欲しいので、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"を使用します
  • 事前にdatetimeを確認してください
  • --result-fileの代わりに>オプションを使用します。 Mysql Manuelによると、「>」を使用して保存されたファイルの文字セットはUTF-16ですが、--result-file--default-character-setの後に続きます
  • ファイルに保存BackpDay-databaseW.cmd
  • 新しいタスクActionに追加し、トリガーを設定します(Windowsタスクスケジューラー)
2
Mitoxys

他の人が説明したのと同じように作業を行いました...しかし、ほとんど違いはなく、余分な作業がありました

1)バッチファイルを作成しました
2)Windowsスケジューラを介してバッチファイルを実行しました
3)そのタスクに適切なスケジュールを作成しました
4)バッチファイル内で、次の手順が実行されます。

  • 4-1)現在の日付に基づいてファイル名を準備しました
  • 4-2)対応するディレクトリとファイル名でmysqldump.exeによってバックアップを取得しました
  • 4-3)7-Zipアプリで圧縮ファイルを作成し(インストール)、非圧縮バックアップを削除します
  • 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
)
1
MShNajar