【WordPress】プラグインを利用せずにデータベースをバックアップ&リストア(復元)する方法

  • 2019年7月21日
  • 2019年7月21日
  • WordPress

こんにちは。ますのです。
自前でWordPress用のWebサーバを構築していますが、サーバ移行することとなりました。データをバックアップする方法と復元方法についてメモしていきます!

先日アップした「AMIMOTO」という、WordPress仕様としてカリカリにチューニング済と謳っているAMIを利用してサーバを新規構築した時に対応した内容の続きになります。

サーバ移行実施要件の前提条件

・WordPressのプラグインは利用しない(※容量制限という壁に当たる)
・データベース:mySQLのdump出力でリストアする(※移行先でphpMyAdminの有効化が面倒だった)
・WP CLIを利用する(※MySQLのコマンド分からんです。AMIMOTOにデフォルトで入ってるぅ便利)

環境:利用するミドルウェア等

環境移行前移行後
OSWindows Server2016Amazon Linux
(AMIMOTO)
apache5系5系
mySQL5系5系
phpMyAdmin4.8系×
PHP5系7系
WP CLI×2系
データベース名aaabbb

手順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」に変更して完了です。

//dumpデータ冒頭の「Database」部分を修正する
-- 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’

※WP CLIを使わない場合はこんな感じのコマンドです。すっきり分かりやすいWP CLIは偉い子。
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」列に置換されたデータベース数が表示されます。
データベース置換後のURL(https://bbb.co.jp)にアクセスしてみましょう!
管理画面にログイン後、「データベースの更新が必要です」と表示されます。
「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 [ファイル名]
※ファイル名は任意でOK!wp-config.phpと同じフォルダに保存されます。
以上でWordPressのサーバ移行が完了します!
MySQLを触るときはいつもphpMyAdminを利用していたので、バックアップ〜復元まで地味に苦戦しました。プラグインも容量制限があったり、WordPressのデフォルトのxmlインポートはURL置換を別途する必要があるとで。せっかくなのでDBを触ってみようと対応した次第です。
これでWordPressを自前のサーバで作っても移行作業バッチリです^q^
またDBを触る機会があれば勉強したいと感じた対応でありました。
最新情報をチェックしよう!