ヤドカリエンジニアリング

ヤドカリはずっと借家

WordPressの移行はSSHをおすすめしたい話

WordPressが登場した当初は、まだMySQL冗長化、高可用性があまり問題になっていなかった時代のもので、 現在でも個人レベルで「飛んだらおしまい」な状況が多くあるので最低限のバックアップ、また「飛ばせない対策」のメモを残しておく。

WordPressのバックアップ

サーバにSSH接続でログイン

$ ssh -i {ログインユーザ名}@{接続先アドレス} クライアントPCに秘密鍵(pem,rsa)が登録されていて、パスワード無しでログインできる場合

データベースのエクスポート・バックアップ

backupディレクトリに移動

$ mysql -u {データベース名} -h {データベースホスト or IP} -p {DBユーザ名}

DBの接続設定は wp-config.php に書いてある。

/** WordPress のデータベース名 */
define('DB_NAME', 'データベース名');

/** MySQL のユーザー名 */
define('DB_USER', 'ユーザー名');

/** MySQL のパスワード */
define('DB_PASSWORD', 'パスワード');

/** MySQL のホスト名 (ほとんどの場合変更する必要はありません。) */
define('DB_HOST', 'ホスト名');

可能ならDB一式をdump

$ mysqldump --single-transaction -u {データベース名} -h {データベースホスト or IP} -p {DBユーザ名} > {出力するファイル名}.sql

新サーバーでWordPress初期設定、もともと使っていたプラグインを設定

そのまま

新サーバーでデータベースのインポート

mysql -u {DBユーザ名} -h {データベースホスト or IP} -p {データベース名} < {インポートするファイル名}.sql

WordPressでデータベース内のドメイン・フルパスを新サーバー用に書き換え。

update wp_comments set comment_author_url = replace(comment_author_url, '{置き換え前のドメイン}', '{置き換え後のドメイン}'));
update wp_options set option_value = replace(option_value, '{置き換え前のドメイン}', {置き換え後のドメイン}'));
update wp_postmeta set meta_value = replace(meta_value, '{置き換え前のドメイン}', '{置き換え後のドメイン}'));
update wp_posts set post_content = replace(post_content, '{置き換え前のドメイン}', '{置き換え後のドメイン}')), guid = replace(guid, '{置き換え前のドメイン}', '{置き換え後のドメイン}'));

基本は上記のテーブルで良いが、プラグインが追加のテーブルを生成している場合は、それらも復元

(例)

update wp_ewwwio_images set path = replace(path, '{置き換え前のドメイン}', '{置き換え後のドメイン}');

新サーバーで、画像が飛んでいたりする場合もあるので、リンク切れをチェックする。

www.dead-link-checker.com

番外編

物理的に独立したサーバーが用意できるなら頑張って自力で冗長化する

nullpopopo.blogcube.info

お金で解決する

AWSで高可用性、負荷分散などをちゃんとやる

qiita.com

レンタルサーバーをお金で借りて、WordPressを設置するなら、AWSに払ったほうがいいんじゃないという考え。 大丈夫、課金が心配になるほど、それほど多くのWordPressサイトは見られていない。

お金も手間もかけずに解決する

はてなブログ」は国内のエンジニアから高評価。 集客にも強い。 MarkDownで記述できる。

以上、お疲れさまでした。