MySQL5.6からMariaDB10.0に移行する(のに失敗した話)

 今までMySQLを使っていたのだけれど、SkySQLとMonty Programの合併でMariaDBに注力されるみたいだし、wikipediaとかいろんなところがMariaDBに乗り換えてるとか聞くし、ZabbixもMariaDBサポート!?みたいな話を人づて(ソース不明)に聞いたので、ちょっと試してみました。

 

環境

 

準備

 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 と書くと同様の動きをします。MySQLMariaDBはアップグレードらしい。

しかし、これでは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の連携

MySQLMariaDBのコマンド名とかモジュール名がほとんど同じなので、連携できるかなーと思ったのですが、phpmysqlライブラリ側で連携が失敗しました。こちらのサイトの「互換性」の見出しのところに原因と対策が書いています。

http://research.sakura.ad.jp/2013/02/28/mariadb-galera-cluster-3/

 

今回はやってません。