仕事と晩飯とその他

日記です。

MySQLのバージョンアップ

デルタやですYO!のデータベースをバージョンアップ。MySQL5.5から5.7へ。

先週はうまくいかなかった。次の土日でやろうと色々調べたり試したりしていたのがよかったようで、予想以上にすんなり。というか、実質30分もかからず完了。よく考えたら、データベースからデータベースへテーブル(ファイル)をエクスポート・インポートして、あとはデータベースへの接続ファイルを書き換えるだけなんだから、そんなに時間もかからないか。先週失敗したのはよく調べずになんとなくやろうとしたからだったんだな。

と思っていたが、深夜になって急に「そういえばcronで設定したファイルがきちんと実行されているのだろうか」と気になって調べてみたら、なんということか、動いていない。cronで実行しているファイルを手動で動かしてみるが、エラー。そこから慌てて調べたら、移動し忘れているテーブルを発見。急いでそれを移動。再度実行。動いた。

もうひとつのPHPファイルも手動実行。動かない。エラーメッセージを書き出すように設定し直してエラーを調べる。変数の定義の問題があるのでエラーが大量に吐き出される。が、途中で止まった。そこを見るとSQLのエラーのようだ。該当するSQL文をMySQL5.7のほうのPHPMyAdminで実行。動かない。ここか。エラーメッセージを見ると、GROUP BYの問題らしい。カラムがGROUP BYされてないよということのようだ。んん? と思いつつ、該当のカラムをGROUP BYしてみたら動いた。なるほど。そこを修正したPHPファイルを実行。また途中で止まる。同じようなSQLがあったので、そこだった。修正して再実行。ようやく最後まで動作。よかった。

これで、cronで動かしていたPHPファイルの修正は完了。次のタイミングで、openBDの取り込み→既存のテーブルと比較して差分にフラグを立てた上でテーブルに格納→静的HTMLやランキング・検索用のテーブルなどを更新、という一連の手順が動くかどうか。

月曜になっても動いていない。調べてみると、動いていないわけではなく、深夜にやった作業で差分を作るためのテーブルが上書きされてしまっていたようで、差分が差分として取り込まれていなかったようだ(取り込み自体は成功)。それとは別にテーブルのエクスポート・インポートに失敗しているテーブルも発見。手作業で不足分をエクスポート・インポート。

結局、17時半の更新で、ようやく全て完了。よかった。

今回、テーブルサイズが大きくなるとエクスポート・インポートに手間取るのは誤算だったが、会社のレンタルサーバーの乗り換えのための良い予行演習になった。何事もやってみないと分からない。勉強になった。