cPanel の一部や、さくらインターネットなどの場合、phpMySQL に同期やSynchronize という項目があって、データベースを同期させることができる。これを上手く使えば、複数サーバーでの展開もできるのかもしれない。(coreserver は無いらしい)
いま2つのケースがあって
- 移転元、移転先いずれも 海外サーバー&cPanel だけれど、ソース側が上手く動作していない
- 移転元がcoreserver で移転先がさくらインターネットだけれど、受け入れ側はシンクロOKでもソース側がシンクロNG
という泥沼で、どうにもならない。
スポンサードリンク
更に追い打ちをかけるのが、この記事で述べる内容になるが、
「phpMySQL では受け入れられない大きさ」
なのだ。この観点から見ると上記サーバーは次の制限がある
- 50MB
- 16MB
php.ini などの設定で変更できるのかもしれないが、およそ許可されない大きさのデータベースだ(後述)。
何を移動するのか
という観点で上記サーバーに当てはめるてみると
- シングルサイト WordPress 、マルチサイトWordPress 、 Gallery
- WordPress
このうち、1のWordPress はphpMyAdmin でデータベースを、FTP でデータを移動した。(サーバーによってはWordPressのインポート処理に任せることもできる)
というわけで、あとはデータベースを移動したらDNS を書き換える程度なのだが、今回はデータベースが大きくて移動できない。
データベースの大きさ
- 550MB
- 170MB
1のテーブルを調べるとキャッシュらしいものがほとんどを占めている。ならばシステム側からキャッシュを破棄してやれば良さそうなのだが、システム側も上手く動いていない。これは何となく乗っている廉価な海外サーバーが何かしらやらかしたようにも思うのだが・・。
2は単純にデータが多い。
いずれも見ての通り最適化したくらいでは容量が減る状態ではない。
ならばSSH しかあるまい
こうなってくると、ならばSSH でダンプを取り、FTP で転送し、コマンドラインから流しこむほかない。(ちなみにソース側はSSH 接続ができないタイプだ!何かしらダンプなりが取れるシステムが用意されていると信じたい)
MySQL コマンド
SSH 接続後に、どのようなコマンドを送れば良いのか。参考文献に記載されていたコマンドを見てみる。
バックアップ(>)
基本形
# mysqldump -u {USER} -p {DATABASE} > dumpfile.sql
圧縮(gzip)
# mysqldump –opt -u{USER} -p{PASSWORD} –all-database | gzip > mysql.dmp.gz
※MySQL5 系はopt を明示しなくて良いらしいが、4系は明示する必要があるらしい
データベースの指定
すべて(-A オプション)
# mysqldump -A -u {USER} -p {PASSWORD}> dumpfile.sql
特定のデータベース
# mysqldump -u {USER} -p{PASSWORD} {DATABASE} > mydatabase_dump.sql
リストア(<)
基本形
# mysql -u {USER} -p {PASSWORD} < dumpfile.sql
さくらインターネットなどlocalhost でない場合
mysql -h mysql***.sakura.ne.jp -u {USER} -p {PASSWORD} < data.sql
データベースを指定
# mysql -u {USER} -p{PASSWORD} {DATABASE} < mydatabase_dump.sql
$ mysql –user={USER} –password={PASSWORD} {DATABASE} < BACKUP.mysql
→ それではいよいよ次回実践してみる
参考文献
- mysqldump が生成したファイルからデータベースをリストアする – IT革命~
- p
- MySQLのバックアップとリストア – 総天然色頁
- Movable Type 5 ドキュメント
- 「mysqldump」を使った「MySQL」のバックアップとリストア – FlatLabs
- 【 ファイルを圧縮・展開する(拡張子.gz,.tar.gz) 】 – Linuxコマンド逆引き大全:ITpro
コメント