指定されたサーバーの特定の時刻にMySQLデータベースを自動的にバックアップする方法、または添付ファイル付きの電子メールを送信する方法はありますか。これを達成するための最良かつ最も安全な方法はどれですか。
Windowsタスクスケジューラ/ cron(システムによって異なります)と mysqldump を使用します。リンクを下にスクロールすると、目的を達成する方法についての洞察が含まれています。
これを行う最善の方法は
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
に追加できます。
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%
を使用します。 2つの変数はロケールとcmdシェルバージョンに基づいていることに注意してください
echo %time%
およびecho %date%
鉱山は22:11:16.80
、06/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"
を使用しますdate
とtime
を確認してください--result-file
の代わりに>
オプションを使用します。 Mysql Manuelによると、「>」を使用して保存されたファイルの文字セットはUTF-16
ですが、--result-file
は--default-character-set
の後に続きますBackpDay-databaseW.cmd
Action
に追加し、トリガーを設定します(Windowsタスクスケジューラー)他の人が説明したのと同じように作業を行いました...しかし、ほとんど違いはなく、余分な作業がありました:
1)バッチファイルを作成しました
2)Windowsスケジューラを介してバッチファイルを実行しました
3)そのタスクに適切なスケジュールを作成しました
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
)