WordPressで、そこそこ記事数があるサイトのデータ移行のお話です。
最近、バックアップをとって復元するという仕事を何度もやっておりまして、そうなると、データベースっていうデータが入っているところを、まるっと引っ越しさせる必要があるんですよね。
phpMyAdminだとエラーでこけます
で、よく標準で使う phpMyAdmin っていうアプリを介して、データベースを出力(エクスポート)しようとすると、記事数が多いサイトだと、エラーでこけちゃうんですよ。
タイムアウトだったり、メモリ不足だったり。
これが、まあまあ困ります。
こけなくても、インポート先でオートインデックスがないよ、というエラーが起きるんですよね。これも厄介なわけです。
急がば回れ、SSHとWP-CLIでやるのが確実です
で、たどり着いた結論が、急がば回れなんですけれども、SSHでサーバーにログインして、WP-CLIを使ってデータベースを直接操作する方法です。
WP-CLIというのは、WordPressをコマンドラインから操作できるツールでして、これが、めちゃくちゃ便利なんですよね。データベースのユーザー名やパスワードを自分で入力しなくても、wp-config.php を読んでくれるので、コマンドがシンプルなんです。
最近の経験で、これが一番確実だとわかりました。
手順1:旧サーバーからデータベースをエクスポートします
まず、旧サーバーにSSHでログインします。(詳細は省略します)
ssh ユーザー名@旧サーバーのホスト名
ログインできたら、WordPressがインストールされているディレクトリに移動します。
cd /path/to/wordpress
そして、WP-CLIの db export コマンドを実行します。
wp db export export.sql
これだけで、データベースの中身がまるっと export.sql というファイルに出力されます。
データベースの接続情報は、WP-CLIが wp-config.php から自動で読み取ってくれるので、自分で入力する必要がないんですよね。ここが、楽です。
手順2:エクスポートしたファイルを新サーバーに転送します
次に、エクスポートした export.sql ファイルを新サーバーに持っていきます。scpコマンドが便利です。
scp export.sql ユーザー名@新サーバーのホスト名:~/
これで、新サーバーのホームディレクトリにファイルが転送されます。
手順3:新サーバーでデータベースにインポートします
新サーバーにSSHでログインします。
ssh ユーザー名@新サーバーのホスト名
ログインしたら、転送した export.sql を、新しいWordPressのディレクトリに移動して、
mv ~/export.sql /path/to/wordpress/
cd /path/to/wordpress
WP-CLIの db import コマンドで、インポートします。
wp db import export.sql
しばらく待つと、完了です。
これだけなんですよね。
phpMyAdminで苦しんでいた時間は何だったのか
正直、phpMyAdminでエラーが出るたびに、設定ファイルをいじったり、分割エクスポートを試したり、色々とやっていたんですけれども、SSHでWP-CLIを使ったら、あっさりうまくいきました。
WP-CLIだと、コマンドが wp db export と wp db import の2つだけで、データベースの認証情報も自動で処理してくれますので、本当にシンプルです。
記事数が多いWordPressサイトの移行は、はじめからSSHとWP-CLIでやるのが、結果的に一番早いです。
急がば回れ、そんな感じです。






