Wordpressを使っているとMySQLとうまく付き合わないといけません。
WordpressもMySQLも常にバージョンアップしているので、常に新しい問題が発生するのですが、バージョン依存問題とモジュールアップデートにおける問題があったので、対応方法の備忘録としてブログに書いておきます。
2つの問題点
それは、ロリポップでWordpressの運用をする仕事を請け負った時の話でした。
Wordpressのバックアップ環境を作ろうと思って、データベースのdump(コピー)を取り、それを別サーバーに移動した時に、
以下のようなエラーが発生していました。
$ mysql -u root -pwordpress < wordpress.sql
Enter password:
ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_unicode_520_ci'
すぐにググって見たところ、これは「MySQLのバージョン5.5以下では文字コードが違っているので使えません」というエラーのようです。
https://umebius.com/wordpress/unknown-collation-utf8mb4_unicode_520_ci/
と言う事で、MySQLを5.6以上にアップデートしなければいけません。
ここで2つ目の問題で、バックアップサーバーの環境はDebian8を使っていて、ベアボーンの少し特殊な32bitのPCでした。
世の中はすでに64bitの話ばかりになっていて、MySQLもORACLEがサービス構成を変更していたため、なかなか対象のバージョンのモジュールに他取り付けることができない状態です。
仕方なく、Qiitaなどの情報をもとに、書いてある通りにコマンドを打っていったら、どうやら間違ったモジュールがインストールされてしまったようで、SQLが正常に起動しない状態に陥ってしまいました。
おまけに、アンインストールしても、再インストールできないぐらい変な依存関係が残ってしまう状態...orz
Dockerであれば、イメージ毎作り直せばいいんですが、データベースのアップデートって本当に手間がかかります。
とりあえず、元の状態に戻すことを前提の作業を行うようにしました。
MySQLのアップデートに失敗した時の操作方法
まずは、dpkgでインストールした不要なモジュールの削除は以下のコマンドで消し去ります。
$ dpkg --purge mysql-community-server
-rではなく、--purgeで行う方がいいようです。
ちなみに、モジュール名は、適宜変更してコマンド実行してください。
次に、下記コマンドで、ビルドからやり直してもらいましょう。
$ apt-get build-dep mysql-server
最後に、aptitudeでインストールすることで、無事に元の状態に戻すことができました。
$ aptitude update
$ aptitude install mysql-server
しかし問題解決しておらず、この状態ではまだMySQL5.5の状態なので、最新のWordpressのデータを取り込むことができません。
とりあえず、今の所は、sqlファイルでバックアップしておくことにして、バージョンアップはDockerで検証した後に作業することにしましょう。
今回の作業をした際に、元のSQLのデータは消えてしまうので、こうした作業の前にきちんとバックアップとっておくことをお勧めします。
教訓「むやみにバックアップをせずに手堅い運用をするべし!」
0 件のコメント:
コメントを投稿