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に追加してやれば良いですね。

数日運用してみましたが、特にエラーもなくいい感じで動いています。

You may also like

Leave a comment