先週まで、WordPress と MySQL5.7 を同一 FreeBSD13.2 の上で運用していましたが、MySQL は RPI2 上に引っ越し、FreeBSD/amd64 の MySQL5.7 は(リソースを空けるために)停止していました。
RPI2上のMySQL8.0 は今のところ問題なく動いているようなので、FreeBSD/amd64 13.2 の MySQL 5.7 を 8.0 に上げておこうと思います。毎日届くセキュリティレポートにもMySQL5.7 は今年いっぱいで終了 って届くのも、そろそろ見たくありませんのでね。
以下は、先週まで使用中だった MySQL 5.7 データベースファイルを 8.0形式に変更した手順。
- 何といっても、バックアップ。すでに FreeBSD/arm にデータは引き継がれていますが、まだ何があるかわかりませんからね。
/var/db/mysql/* を cpio でアーカイブ。cpio -ovz > sql57.dump のような感じ。
続いて、mysqldump コマンドでもバックアップ。コマンドは何度もメモしているので省略。 - MySQL 5.7 パッケージを消す。
pkg delete mysql-\* - MySQL 8.0 を入れる。
pkg add mysql80-server
最後に、/usr/local/etc/mysql の下に残った残骸を消す。または移動する。 - 最後の大仕事が、mysql80-server を起動すること。成功すれば自動的にデータベース形式が最新版に更新されますが、何か準備に見落としがあって失敗すると、データベースが壊れるかも。とにかく、失敗した状態から復旧するのは大変。素直にデータベースを消してバックアップから戻す方が楽。
成功することを念じながら、
service mysql-server start
と実行。
以下の通り、今回は成功。
2023-11-08T05:57:23.578564Z 0 [Note] InnoDB: Shutdown completed; log sequence number 11858549970 2023-11-08T05:57:23.579028Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1" 2023-11-08T05:57:23.579063Z 0 [Note] Shutting down plugin 'MEMORY' 2023-11-08T05:57:23.579077Z 0 [Note] Shutting down plugin 'CSV' 2023-11-08T05:57:23.579089Z 0 [Note] Shutting down plugin 'sha256_password' 2023-11-08T05:57:23.579100Z 0 [Note] Shutting down plugin 'mysql_native_password' 2023-11-08T05:57:23.579294Z 0 [Note] Shutting down plugin 'binlog' 2023-11-08T05:57:23.656678Z 0 [Note] /usr/local/libexec/mysqld: Shutdown complete 2023-11-08T05:57:23.6NZ mysqld_safe mysqld from pid file /var/db/mysql/tokyo.lifewithunix.jp.pid ended 2023-11-08T13:59:42.6NZ mysqld_safe Logging to '/var/db/mysql/tokyo.lifewithunix.jp.err'. 2023-11-08T13:59:42.6NZ mysqld_safe Starting mysqld daemon with databases from /var/db/mysql 2023-11-08T13:59:42.979426Z 0 [System] [MY-010116] [Server] /usr/local/libexec/mysqld (mysqld 8.0.33) starting as process 98762 2023-11-08T13:59:43.191000Z 1 [System] [MY-011012] [Server] Starting upgrade of data directory. 2023-11-08T13:59:43.191043Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2023-11-08T14:00:01.024233Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2023-11-08T14:00:07.954809Z 2 [Warning] [MY-010772] [Server] db.opt file not found for test database. Using default Character set. 2023-11-08T14:00:13.819348Z 2 [System] [MY-011003] [Server] Finished populating Data Dictionary tables with data. 2023-11-08T14:00:20.130964Z 5 [System] [MY-013381] [Server] Server upgrade from '50700' to '80033' started. 2023-11-08T14:00:37.997896Z 5 [Warning] [MY-013384] [Server] Could not open server upgrade info file '/var/db/mysql/mysql_upgrade_info' for writing. Please make sure the file is writable. 2023-11-08T14:00:37.997941Z 5 [System] [MY-013381] [Server] Server upgrade from '50700' to '80033' completed. 2023-11-08T14:00:39.192844Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2023-11-08T14:00:39.192908Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2023-11-08T14:00:39.908555Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /tmp/mysqlx.sock 2023-11-08T14:00:39.908820Z 0 [System] [MY-010931] [Server] /usr/local/libexec/mysqld: ready for connections. Version: '8.0.33' socket: '/tmp/mysql.sock' port: 3306 Source distribution. 2023-11-08T14:05:44.979515Z 0 [System] [MY-013172] [Server] Received SHUTDOWN from user . Shutting down mysqld (Version: 8.0.33). 2023-11-08T14:05:46.113235Z 0 [System] [MY-010910] [Server] /usr/local/libexec/mysqld: Shutdown complete (mysqld 8.0.33) Source distribution. 2023-11-08T14:05:47.6NZ mysqld_safe mysqld from pid file /var/db/mysql/tokyo.lifewithunix.jp.pid ended
結果だけ見れば、データベースを分離せずに、そのまま MySQL 5.7 を抜いて、8.0 を入れてしまえばよかったわけですが、テストマシンでの成功率は50%くらいでしたからね。本番環境でいきなり作業していたら、きっと失敗していたはず。MySQLサーバーを分離したのは、正しかったものと信じています。
もし、FreeBSD/arm 上の WordPress 用データベースに何かあった場合は、一時的に元のサーバーでも運用できるように、バージョンを最新に保つようにする予定。
それよりも、明日届く予定のセキュリティレポートがどう変化するか。
セキュリティレポート出力結果:
アップデート前:
Checking for packages with security vulnerabilities: Database fetched: 2023-11-05T05:18+09:00 mysql57-server-5.7.42 mysql57-client-5.7.42: Tag: expiration_date Value: 2023-12-31 mysql57-server-5.7.42: Tag: expiration_date Value: 2023-12-31 mysql57-client-5.7.42: Tag: deprecated Value: Upstream support ended in October 2019 mysql57-server-5.7.42: Tag: deprecated Value: Upstream support ended in October 2019
アップデート後:
Checking for packages with security vulnerabilities: Database fetched: 2023-11-08T04:00+09:00 mysql80-server-8.0.33
MySQLのアップグレードサポートが2019/10月にすでに終わっていて、多分2023/12でパッケージコレクションからも消えるっぽい。それが、mysql80-server には脆弱性がある に変わりました。結局、脆弱性はある訳だ。
この脆弱性に関して調べてみたら、8.0.35 に上げればいいわけですが、まだ、バイナリーもソースも FreeBSDサイトに届いていない。。。。。まあ、イントラネット側なのでいいかっって感じで、リリース待ち状態です。