Windowsでのmysql-baseの毎日のアーカイブ

私の前に立っていたタスク:

Windows Server 2008 R2を実行するmysqlを備えたサーバーがあります。このサーバーでは、特に、数十のデータベースでmysqlが実行されており、その数と構成は定期的に変更されます。 各データベースが個別のアーカイブに分類されるように、mysqlサーバーを停止せずにこれらのデータベースの毎日のバックアップを整理する必要があります。 これは、一見したところ、最も単純なタスク(おそらくその方法)が私にとって非常に複雑であることがわかりました。



Googleは何を教えてくれますか?



mysqlhotcopyとmysqldumpがあること。 1つ目はデータベースファイルを直接操作し、2つ目はクエリを使用してダンプします。



最も単純なパラメーターでもmysqlhotcopyを動作させることができず、グーグル、このスクリプトはWindowsに適していないという結論に達しました(間違えた場合は修正してください)。



私の場合、ファイルを直接操作する方が簡単なため、mysqlhotcopyから始めました。ファイルを筋肉に入れて作業するだけです。 ダンプは、インデックスがないため重量は軽くなりますが、インポートする必要があります。 しかし、 mysqlを停止せずに別の方法見つけられなかったため、ダンプを実行します。



ここで 、スクリプトキーの優れたガイドを見つけました。 そのため、彼はすべてのデータベースの一般的なダンプを1つのファイルにする(非常に不便)か、リストされているデータベースをダンプすることができます。 塩基の数と名前は変化しているため、リストを書くことはオプションではありません。リストを編集するたびに苦しめられます。 したがって、mysqldumpの各データベースを1つずつ置き換えるスクリプトが必要です。



このように実装しました。バッチファイルはmysqlデータディレクトリにあるフォルダーを調べ、ループでmysqldumpパラメーター文字列の各フォルダーの名前(データベースの名前)を置き換えます。



SET SOURCEDIR=E:\xampp\mysql\data\ set hour=%TIME:~0,2% set minute=%TIME:~3,2% set second=%TIME:~6,2% set HHMMSS=%hour%-%minute% for /d %%i in (%SOURCEDIR%\*) do "E:\xampp\mysql\bin\mysqldump.exe" -uusername -hlocalhost -ppassword -c -n %%~ni | "c:\Program Files\7-Zip\7z.exe" a -tgzip -si"%%~ni_%DATE%_%HHMMSS%.sql" "D:\backups\data\%DATE%_%HHMMSS%\%%~ni.sql.gzip" eachfile.exe -purge -r -w -e -d 13 -l 0 -dir D:\backups\data\ exit
      
      







結果のダンプは、 7-zip to gzip形式を使用してすぐにアーカイブされます(結果ファイルを解凍せずにマッスルにフィードできるように)。 まあ、各ファイルユーティリティは古いバックアップを削除します。



グーグルの過程で、 MySQL Backup Toolプログラムに出くわしましたが、テストする勇気はありませんでした。



All Articles