こんにちは。ますのです。
自前でWordPress用のWebサーバを構築していますが、サーバ移行することとなりました。データをバックアップする方法と復元方法についてメモしていきます!
先日アップした「AMIMOTO」という、WordPress仕様としてカリカリにチューニング済と謳っているAMIを利用してサーバを新規構築した時に対応した内容の続きになります。
サーバ移行実施要件の前提条件
・WordPressのプラグインは利用しない(※容量制限という壁に当たる)
・データベース:mySQLのdump出力でリストアする(※移行先でphpMyAdminの有効化が面倒だった)
・WP CLIを利用する(※MySQLのコマンド分からんです。AMIMOTOにデフォルトで入ってるぅ便利)
環境:利用するミドルウェア等
環境 | 移行前 | 移行後 |
OS | Windows Server2016 | Amazon Linux (AMIMOTO) |
apache | 5系 | 5系 |
mySQL | 5系 | 5系 |
phpMyAdmin | 4.8系 | × |
PHP | 5系 | 7系 |
WP CLI | × | 2系 |
データベース名 | aaa | bbb |
手順1:WordPressデータをdump出力する
今回は移行先サーバでデータベース名を変更する必要がありました。
mysqldumpコマンドのオプション「 –add-drop-table」をつけることで、dump内:createコマンドの前にdropコマンドをつけてくれるようになります。つまり、既存のDBを一度削除後、新たにテーブルを記載していくためDBを上書きする際に使うオプションとなります。
別名のDBにも対応できそうや!ということで使ってみました。
mysqldump -u(ユーザ名) -p -l dbname --add-drop-table > dump.sql
例)
mysqldump -uwpuser -p -l aaa --add-drop-table > dump.sql
mysqldumpコマンドのWordPressのDB名や、ユーザ名、パスワードがわからない場合はWordPressが保存されているフォルダ直下にある「wp-config.php」をメモ帳などのテキストエディタで開くと記載されているので確認してみましょう!
// ** MySQL 設定 – この情報はホスティング先から入手してください。 ** //
// WordPress のためのデータベース名 //
define(‘DB_NAME’, ‘database_name_here‘);
// MySQL データベースのユーザー名 //
define(‘DB_USER’, ‘username_here‘);
//MySQL データベースのパスワード //
define(‘DB_PASSWORD’, ‘password_here‘);
手順2:出力したdumpのデータベース名を変更する
手順1で出力したdumpデータ内に、移行前のデータ内容が記載されています。
WordPress用のデータベース名が移行元、移行先で等しければこの手順はスキップしてOKです!
テキストエディタで手順1で作成した「dump.sql」を開きます。
以下の「Database: aaa
」を「Database: bbb
」に変更して完了です。
-- MySQL dump 10.16 Distrib 10.1.34-MariaDB, for Win32 (AMD64)
--
-- Host: localhost Database: aaa
手順3:修正したdumpデータを移行先サーバへ転送する
私はWindowsサーバ→Amazon Linuxへの移行となったため、TeraTermを利用しました。
- TeraTermでLAMPサーバへSSH接続をする。
- ファイル>SSH SCPを選択
- From:手順2で作成した「dump.sql」を選択
To:LAMPサーバのWordPress保存フォルダの直下を選択 - Sendをクリックし、データ転送が完了したら成功です!
手順4:移行先サーバでデータベースの復元を実行する
はい!ついにDBを復元します!WP CLIの場合、mysqlのコマンドで利用する「>」の向きに気をつけなくて良いので精神衛生上良いですね。
$ wp db import [dumpデータファイルのパス]
例)
$ wp db import /var/www/dump.sql
Success: Imported from ‘/var/www/dump.sql’
mysql -u db_user_name -p database_name < dump.sql
手順5:移行先のドメインに置換する
phpMyAdminを利用したり、dumpデータを直接テキストエディタで編集とかで出来ます。
今回はWP CLIが利用できるのでコマンドから実行しました。
$ wp search-replace ‘移行前ドメイン’ ‘移行後ドメイン’
例)
$ wp search-replace ‘https://aaa.com’ ‘https://bbb.co.jp’
「Replacements」列に置換されたデータベース数が表示されます。
管理画面にログイン後、「データベースの更新が必要です」と表示されます。
「WordPressデータベースを更新」をクリックし、「更新完了」画面に切り替われば無事完了です。
アクセスしたドメインが移行前の内容になったり、DBリストア前の画面が表示されたりします。私はこの現象に悩み3時間後くらいに再度アクセスしたら勝手に直っておりました。摩訶不思議。
手順6:テンプレートや画像ファイル、メディアの移動は忘れずに!
移行前のサーバから必要データを移動しましょう。
データの移動はFTPソフトで適当に。必要そうなデータはだいたいこの3つでしょうか。
データ種類 | 保存場所 |
テンプレート | /(DocumentRoot)/wp-content/themes |
プラグイン | /(DocumentRoot)/wp-content/plugins |
メディア | /(DocumentRoot)/wp-content/uploads |
余談:WP CLIでデータベースをバックアップする方法
今回は使いませんでしたが、WP CLIが入っているサーバでエクスポートする方法もあります。
まずはカレントディレクトリをwordpressがインストールされているフォルダに移動します。
(wp-config.phpが保存されている場所)
wp db export [ファイル名]
MySQLを触るときはいつもphpMyAdminを利用していたので、バックアップ〜復元まで地味に苦戦しました。プラグインも容量制限があったり、WordPressのデフォルトのxmlインポートはURL置換を別途する必要があるとで。せっかくなのでDBを触ってみようと対応した次第です。
またDBを触る機会があれば勉強したいと感じた対応でありました。