MySQLのバージョンアップに失敗した時の話

2018年5月20日

データベース テクノロジー トラブル

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のデータは消えてしまうので、こうした作業の前にきちんとバックアップとっておくことをお勧めします。 教訓「むやみにバックアップをせずに手堅い運用をするべし!」

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。