WordPressの通常のバックアップは、UpdraftPlusというプラグインを使って自動的にGoogleDriveに保存している。
よくよく考えてみたら、このバックアップは有効なのか確認してみたことがない。
サーバー上のphpMyAdminで手動バックアップしたデータの復元は幾度もやってみている。
今回は、UpdraftPlus + GoogleDriveで保存したデータベースをインポートして、正常に復元できるのかやってみた。
1.GoogleDriveへ行って保存されているデータをダウンロードする。
2.適当な場所に解凍する。
3.Speeeeed(spe5d151.zip)で以下のように文字列を置換する。
neo-sahara.com –> 192.168.###.### (Orange PiのIPアドレス)
0000-00-00 00:00:00 –> 1970-01-01 00:00:01 の置換も行う(理由は下に)。
https –> http (2019/07/26 追記)
4.SFTPでOrange Piへ転送する。
便宜上 /home/orangepi/ へ test.sql としてアップロードした (2019/07/26 追記)。
5.インポートする。
mysql -uroot -phogepass wpdatabase < /home/orangepi/test.sql
赤字のみデータベースのパスワードに書き換えて実行する。
ここあたりは「Orange Pi PC2 – MySQLのデータベースをインポートする –」に書いてある手順と同じだ。
1 |
ERROR 1067 (42000) at line 578: Invalid default value for 'user_registered' |
というエラーが出て止まる(以下、上の手順ではすでに対策済み。)。
578行から始まる括りの中に
1 |
`user_registered` datetime NOT NULL default '0000-00-00 00:00:00', |
と書いてある行がある。
調べてみると、時刻の設定値が「0000-00-00 00:00:00」となってるのは間違いで、「1970-01-01 00:00:01」にしなきゃダメなようなことが書かれていた。
「1970-01-01 00:00:01」から「2038-01-19 03:14:07」までじゃなきゃダメなんだって。
時刻の基点が「1970-01-01 00:00:00」だってことは良く知られている。
「2038-01-19 03:14:07」の方は2038年問題でおなじみのやつだ。
そのことがあるのに、バックアップしたデータで「0000-00-00 00:00:00」が登場してしまっている理由は良く分からない。
まあ、ダメなことはダメなんだろう。
「0000-00-00 00:00:00」をすべて「1970-01-01 00:00:01」に置換したらエラーは出ずにデータのインポートが完了した。
WordPressを表示してみた。
ちゃんと最新の記事が取り込まれているし、今のところ問題は無いようだ。
追記(2019/07/26)
基本的に同じ手順(いくつか追記)でインポートした。
問題なく稼働している。
追記(2020/03/27)
上記の手順で問題なくインポート完了した。
ダッシュボードにアクセスできなかった。
今まで記事の確認だけでログインはしてなかったので気づかなかった。
.htaccessを削除したらログインできるようになった。
その後、ダッシュボードの
[設定]>[パーマリンク設定]>[変更を保存]
をクリックする。
参考にさせていただいたサイトはここ。
追記(2020/11/18)
データベースやコンテンツ自体は上の手順で問題なく更新できた。
Speeeeedでの置換も置換えリストが保存されていたのですぐ済んだ。
外サーバの.htaccessを上書きして画像が表示されなくなった。
.htaccessを書き戻して復旧した。
追記(2021/08/25)
Orange Pi PC 2のデータベースをMariaDBに変更した。
上の手順に全く変更はなかった。
MariaDB の起動
sudo systemctl start mariadb
MariaDB の終了
sudo systemctl stop mariadb
追記(2022/01/30)
データベースやコンテンツ自体は上の手順で問題なく更新できた。
Speeeeedでの置換も置換えリストが保存されていたのですぐ済んだ。
外サーバの.htaccessを上書きして画像が表示されなくなった。
uploads以下の.htaccessが下のように書かれていたのを
1 2 3 4 5 |
SetEnvIf Referer "^https://neo-sahara\.com" ShowOK SetEnvIf Referer "^http://neo-sahara\.com" ShowOK order deny,allow deny from all allow from env=ShowOK |
下のように3行目を追加して復旧した。
1 2 3 4 5 6 |
SetEnvIf Referer "^https://neo-sahara\.com" ShowOK SetEnvIf Referer "^http://neo-sahara\.com" ShowOK SetEnvIf Referer "^http://192\.168\.###\.###" ShowOK order deny,allow deny from all allow from env=ShowOK |
Tweet