MySQL5.6からMariaDB10.0に移行する(のに失敗した話)
今までMySQLを使っていたのだけれど、SkySQLとMonty Programの合併でMariaDBに注力されるみたいだし、wikipediaとかいろんなところがMariaDBに乗り換えてるとか聞くし、ZabbixもMariaDBサポート!?みたいな話を人づて(ソース不明)に聞いたので、ちょっと試してみました。
環境
- CentOS 6.2
- MySQL 5.6.11
MySQL-client-5.6.11-2.el6.x86_64 MySQL-shared-5.6.11-2.el6.x86_64 MySQL-server-5.6.11-2.el6.x86_64 MySQL-shared-compat-5.6.11-2.el6.x86_64 MySQL-devel-5.6.11-2.el6.x86_64
準備
https://kb.askmonty.org/en/installing-mariadb-with-yum/
上記サイトを参考に、リポジトリファイルを作成します。
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
enabled=1
gpgcheck=1
mysqlは停止させておきます。
updateしてみる
yum update mysql
を実行してみたところ、こうなりました。
=============================================================
Package Arch Version Repository Size
=============================================================
Installing:
MariaDB-client x86_64 10.0.2-1 mariadb 10 M
replacing MySQL-client.x86_64 5.6.11-2.el6
MariaDB-server x86_64 10.0.2-1 mariadb 33 M
replacing MySQL-server.x86_64 5.6.11-2.el6
Installing for dependencies:
MariaDB-common x86_64 10.0.2-1 mariadb 23 k
MariaDB-compat x86_64 10.0.2-1 mariadb 2.7 M
Transaction Summary
============================================================
MariaDBのサイトを見ると、 yum install MariaDB-server・・・と書いてますが、mysql と書くと同様の動きをします。MySQL→MariaDBはアップグレードらしい。
しかし、これではdevelやsharedが変わらないので、これらを個別に指定する必要があるのですが、shared-compatが競合するため、予め削除する必要があります。つまり、実際には次のコマンドを実行します。
rpm -e MySQL-shared-compat --nodeps
yum update MySQL-server MySQL-client MySQL-devel MySQL-shared
devel, sharedを追加すると、mysqlでserverとclientがインストール対象にならないので、わざわざ指定しています。
このまま起動すると、バイナリログの差異エラーが出るので、予め削除しておきます。
rm -f /var/lib/mysql/ib_logfile*
起動ファイルが同じ名前で作成されているので、同じように起動します。
service mysql start
すると、次のエラーが出ます。
Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
なので、skipモードで起動してみます。
mysqld --skip-grant &
すると、起動はされるのですが、起動中に次のエラーメッセージが何件か表示されます。
[ERROR] Incorrect definition of table performance_schema.events_waits_current: expected column 'THREAD_ID' at position 0 to have type int(11), found type bigint(20) unsigned.
performance_schemaのいくつかのテーブルの主キーTHREAD_IDは5.5ではint(11)だったのですが、5.6ではbigint(20)になっています。MariaDBの10.0は5.5に対応しているため、エラーが発生しました。
ちなみに、本環境ではMySQL5.6で書いていますが、別環境のMySQL5.5で同じようにやったところ、正常に起動することができました。
インストールしなおす
とすることにしました。古いMySQLをアンインストールして、MariaDBをインストールします。データベースは一旦削除します。これを実行する前にダンプファイルをとっておきます。
rpm -e --nodeps MySQL-server MySQL-client MySQL-shared MySQL-shared-compat MySQL-devel
rm -rf /var/lib/mysql
yum install MariaDB-server MariaDB-client MariaDB-devel MySQL-shared
上記と同じコマンドでサービスを起動して、データをインポートすれば完了です。
ZabbixとMariaDBの連携
MySQLとMariaDBのコマンド名とかモジュール名がほとんど同じなので、連携できるかなーと思ったのですが、phpのmysqlライブラリ側で連携が失敗しました。こちらのサイトの「互換性」の見出しのところに原因と対策が書いています。
http://research.sakura.ad.jp/2013/02/28/mariadb-galera-cluster-3/
今回はやってません。