レンタルサーバー会社mixhostの「性能向上を伴う新仕様サーバーへの移行のご案内」で新サーバー移行後にMovableTypeが動作しなくなった【MariaDBとDBD::mysqlの問題(cPanel環境)】

このブログを置いてるサーバーはレンタルサーバー会社のmixhostのサービスを使用しております。先日「性能向上を伴う新仕様サーバーへの移行のご案内」というメールが来ており、新仕様サーバーへの移行のご案内とありますがもうこのメールが来ている時点で移転は確定しており、メールに記載されてた日時は2025年07月10日 (木) 10:00前後開始予定でございました。

以前もmixhostによるサーバー移転はありましたが、それはサーバー環境の変化というよりかはリソース最適化という事で環境の変化を伴うものではなかった為、サーバーサイドの設定変更等は移行後も必要なく、クライアントサイドだけで済みました。
レンタルサーバー mixhostでリソース最適化の為、サーバー移転 完了(2024年9月18日(水曜日))
しかし今回はmixhostによると

システムを増強し、新仕様のサーバーへ移行をおこなわせていただくこととなりました。移行をおこなうサーバーについては、現状よりも安定性や速度が向上した 優れたものとなりますので、今まで以上に快適にご利用いただけます。

新サーバーの特徴としては、次のようなものがございます。

・処理性能と安定性の向上
新環境ではデータベースに MariaDB 10.11 を採用しており、トランザクション処理(SELECT/INSERT/UPDATE/DELETE)の速度が最大40%向上します。 新機能追加(降順インデックス、JSON処理の強化、レプリケーション強化)により、クエリ最適化とデータ処理がより高性能になります。アクセス集中時でもより安定したレスポンスが期待できます。

・強化されたセキュリティ対策
OSや各種ソフトウェアが最新バージョンとなり、セキュリティ面でもより安心してご利用いただける環境にアップグレードされます。

※新サーバーでは PHP 5.5 以下のバージョンは提供されません。
そのため、移行先環境において同一バージョンの PHP が存在しない場合、プログラムが正常に動作しない可能性がございます。
これを防ぐため、現在 PHP 5.5 以下をご利用中のお客様に対しては、弊社にて事前に PHP 5.6 へバージョンを引き上げたうえでマイグレーションを実施いたします。

※新サーバーでは Python2 は提供されません。
現在Python2をご利用中のお客様は、事前にPython3へのアップデートをお願い致します。
なお、Pythonのご利用やアップグレードについては、弊社サポート対象外となりますので、あらかじめご了承ください。
▼RubyやPythonの利用可否について - mixhost ヘルプ&サポート
[https://help.mixhost.jp/hc/ja/articles/4408140809753](https://help.mixhost.jp/hc/ja/articles/4408140809753)

※今回の収容サーバーの変更に伴い、各種プログラムのバージョンが以下となります。
・Perl 5.32.1
・PHP 8.4
・Sendmail(Exim)4.98.2
・gzip 1.12
・MySQL 15.1 Distrib 10.11.11-MariaDB
・mysqldump 10.19 Distrib 10.11.11-MariaDB
・ImageMagick 6.9.13.25 Q16
・Python 3.9.21

 
と環境が変ります。そしてちゃんと
「各ソフトやプログラムの内容・使用方法および、サーバーのバージョンアップに伴うプログラムの動作への影響、及び不具合への対応については、大変恐れ入りますがサポート対象外とさせていただいております。」
と書いてあるんだよね・・・・そりゃWordPressが高速って売りにしてるサーバーでMovableType使うこちらのあれだけどさw

なんか大がかりなアップデートっぽいのにいきなり移行?こういうのって普通は希望者からじゃないの?まあなるもんはしょうがないので移行を待ちます。
移行完了のメール「サーバー移行完了のお知らせ」が来たのは7月10日17:53でした。

何か影響があるかな?と思ったらあった。
クライアントサイドは前と同じでメールサーバー(これもレンタルサーバーのドメインじゃなくて独自ドメインで設定変更しておけばいらないんですが、恒例でそのままレンタルサーバーのアドレスにしちゃってた、今回は独自ドメインに一部、しました)ですとかシステムにログインする為のURLとかは新しいのに変更になるのでショートカットを作りなおしたりとかなのですが、このブログで使っているMovableTypeの管理画面にアクセスすると
「Got an error: install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted. Compilation failed in require」
というエラーが出てアクセスできない。MovableTypeは各コンテンツは静的HTMLなのでシステムが動いてなくても閲覧できますがブログの編集は当然ながらシステムにログインする必要があります、それが動かない。DBD/mysql.pmがない、という事らしいのでmixhostのcPanelの「Perl モジュール」から「DBD::mysql (5.012)」をインストールします。
試みましたがエラーでインストールされず。なぜ?前の環境だとインストールできたのに(できたからMovableTypeが動いてた)。

いくつかエラーを調べていると
Unable to install the "DBD::mysql" Perl module - cPanel
「This issue occurs when an SQL server other than MySQL 8 is installed due to the "DBD::mysql" module requiring MySQL 8.x. Servers running MariaDB 10.x or MySQL 5.x must install the "perl-DBD-MySQL" package.」
「この問題は、MySQL 8以外のSQLサーバーがインストールされている場合に発生します。これは、「DBD::mysql」モジュールがMySQL 8.xを必要とするためです。MariaDB 10.xまたはMySQL 5.xを実行しているサーバーでは、「perl-DBD-MySQL」パッケージをインストールする必要があります。」
は?DBD::mysql使えないの?かわりにperl-DBD-MySQLを使えと?でもMovableTypeは
動作に必要な環境とブラウザの対応 | CMSプラットフォーム Movable Type ドキュメントサイト
また、データベース モジュールとして以下の Perl モジュールが必要です。
DBI (バージョン 1.21 以上)
DBD::mysql

となっておりまして試しにperl-DBD-MySQLをインストールしてみてmt-config.cgiの
ObjectDriver DBD::mysql
の部分を
ObjectDriver perl-DBD-MySQL
に変えて試してみましたが駄目。対応してないとかエラーかな?

となるとDBD::mysqlをどうにかしていれなければいけない・・・・・・前もってわかってれば別サーバーに移転するかいろいろ検証もできただろうけど・・・・・

とりあえずエラーログを見てると足りないモジュールがあるっぽい。もうエラーを自分で読み解いてたら時間が多大に掛かるのでAIのGrowさんの力を借りる事にしました。エラーログを貼り付けると
DBI
がないぞ、と。これはcPanelの「Perl モジュール」から簡単にインストールできました。
あと強制インストールも試してみ?というのでターミナルでログインして
cpan -f DBD::mysql
するもエラー。

DBD::MariaDB
を使うのは駄目なのかい?との事でインストールしてmt-config.cgiの該当部分をDBD::MariaDBに変えてみましたがエラー、やはり対応していないみたい。

エラーを食わせるととにかく環境の情報をよこせ、と。
使用している OS(例: Ubuntu, CentOS, macOS)
Perl のバージョン(perl -v で確認)
MySQL のバージョン(mysql --version で確認)
完全なエラーログ(~/.cpan/build/ から取得)

と。
とりあえず環境を教えます。
・OS: CloudLinux 9(カーネル `5.14.0-503.40.1.el9_5.x86_64`、MixHost の cPanel 環境)
・Perl:5.32.1(システム Perl)
・MariaDB**: 10.11.13-MariaDB-cll-lve(ライブラリ `/usr/lib64/libmariadb.so`、ヘッダ `/usr/include/mysql/mysql.h`)

でエラーログを食べさせていると
- `Devel::CheckLib`: 1.16
- `Test::Deep`: 1.205
- `DBI`: 1.647
が必要やで?と。DBIはさっき入れたからDevel::CheckLibとTest::DeepもインストールしてDBD::mysqlをインストール試みるもエラー。

ひょっとして最新版じゃない方がいい?そういや前のサーバーで使えていたDBD::mysqlのVer、いくつだっけ?記録に残ってないかなと調べてると
レンタルサーバー mixhost(ミックスホスト)にMovable Type 7をインストール(2023年10月11日(水曜日))
「Movable Type システムチェックにアクセスするとサーバーに DBD::mysql がインストールされています(バージョン 4.050)。」
残ってた。まだVer4.050は提供されてるかな?と調べると
Index of /authors/id/D/DV/DVEEDEN
DBD-mysql-4.050.tar.gz
ありますね。これを調べている時にGrok 3 (xAI) も
「古いバージョンの DBD::mysql を試すDBD::mysql-5.012 が MariaDB 10.11.13 と互換性がない場合、互換性の高い古いバージョン(例: DBD::mysql-4.050)を試します。古いバージョンは新しい SSL 機能を要求しないため、成功する可能性があります。」
を提案してきました。

という事で
cpan DVEEDEN/DBD-mysql-4.050.tar.gz
でインストールを試みるが失敗、エラーログをまた食わせるといろいろ提案してきたので試します。
--nossl: SSL 関連の機能を無効化し、互換性問題を回避。
-lz -lssl -lcrypto: 依存ライブラリ(zlib、OpenSSL)を明示的に指定。
PREFIX=xxxxxxxxxxxxxx: モジュールをユーザーディレクトリにインストール。

いくつか手動インストールしたものに対してパスを通すの忘れてるとインストールできてもエラーになってたのでそれらも対応。

最終的には
DBD::mysql
はインストール出来ました。手動インストールというのもありシステムが各種インストールする所とは別のパスにインストールしたのでMovableTypeのフォルダの.htaccessに
SetEnv PERL5LIB DBD-mysqlをインストールしたパス
を追加してMovableType、稼働するようになりました。

速度がアップしたらしいのですが確かに管理画面での操作時のレスポンスは良くなってる気が。ついでにブログの再構築してみましたが・・・
7月6日に実施分
YUU MEDIA TOWN@blogを再構築しました。 処理時間: 5 分, 29 秒

7月12日実施分
YUU MEDIA TOWN@blogを再構築しました。 処理時間: 8 分, 24 秒
微妙に遅くなった?まあ実施した時間でサーバーの混み合い具合とかでも変化するだろうから・・・・・

しかしAI、凄いな・・・・・ログの内容を全部自分で手動で調べてたらもう数日、解決に時間がかかっていたかも・・・・・こういう分野には強いね。
ただし、ある程度、中身がわかってないと駄目(単に右から左に言われるようにコピペを繰り返す)ですが。危険なコマンドもあるからね。