XAMPPテストサーバー上のMySQLにWPバックアップDBを自動で読み込ませる設定。
こんにちは!
サイト管理人のYosukeです。
先日、linuxBeanにWPテスト環境XAMPPをインストールし、
XAMPPでバーチャルホスト、MySQLの設定、WPテスト環境を構築しました。
さらに、エックスサーバーのWordPressサイトをDropboxに自動バックアップしているので、
linuxBean上には、rsyncしたサイトの完全なバックアップと、DBDumpの圧縮アーカイブがあります。
せっかくなので、圧縮アーカイブを、XAMPP上のMySQLデータを自動で読み込ませて、
自動でテストサーバーに反映してしまおう!
という事を思いたち、今回その手順を進めていきたいと思います。
mysql-clientのインストール
XAMPP上のMySQLにコマンドラインで接続して操作するには、mysql-client が必要です。
Synaptic パッケージマネージャ、または apt-get
からインストールします。
mysql-client と検索し、mysql-client-core-5.5 をインストールしました。
(mysql-clientでも良いですが、パッケージが多めにインストールされます)
追加を求められるものも合わせてインストールします。
MySQLのテーブルを空にする
これでコマンドラインでXAMPP上のMySQLに接続する事が出来るようになりました。
ですが…
単にcrontabでDBDumpの圧縮アーカイブを、MySQLに読み込ませるシェルを繰り返しても、
既存のデータベースを「上書き」していくだけなので、削除したはずのデータも残り続けてしまいますね。
まずデータベースを空にするコマンドを実行する必要がありそうです。
空にしたいMySQL各種項目の例
- MySQLホスト名 :localhost
- データベース名 :yosuke_gamalog
この場合…
コマンド
$ sudo mysql -uroot yosuke_gamalog -hlocalhost -N -e 'show tables' | while read table; do mysql -uroot -e "truncate table $table" yosuke_gamalog -hlocalhost; done
※上記はパスワードなしrootユーザーでMySQLに接続している例です。
上記コマンドは、存在するテーブルのデータが空になります。(テーブル自体は残る)
もし、テーブルごと削除する場合は難しそうだったのでヤメました…。
参考サイト
DBDumpアーカイブをMySQLに読み込ませる
読み込みたいMySQL各種項目の例(作成日:2016/1/1 の場合の例)
- MySQLユーザ名 :root
- MySQLパスワード :
- MySQLホスト名 :localhost
- データベース名 :yosuke_gamalog
- 保存先ディレクトリ:/home/yosuke/backups/archives/1601/01
- 保存データベース名:160101_db_yosuke_gamalog.sql.gz
コマンド
$ sudo zcat /home/yosuke/backups/archives/`date +%y%m`/`date +%d`/`date +%y%m%d`_db_yosuke_gamalog.sql.gz | mysql -uroot -hlocalhost yosuke_gamalog
※これもパスワードなしrootユーザーでMySQLに接続している例
gzipアーカイブの内容をzcat
コマンドで表示し、パイプで渡してmysql
コマンドを実行させています。
最後に
あとは、上記コマンドを必要に応じて書き換えて、バックアップ用シェルスクリプトにして、
crontabに追加してやれば良いですね。
数日運用してみましたが、特にエラーもなくいい感じで動いています。