[CentOS 7] MariaDB Serverのインストールとsystemdによる操作

RHEL7からMySQLの代わりにMariaDBが提供されるようになりましたね。
MySQLと互換性があるようなので、これからはMariaDBの時代が来るのでしょうか。
また、SysV Initに代わってsystemdが新しいinitプロセスとして採用されました。
操作方法が微妙に異なるので、ここで簡単にまとめておきます。

インストール

mysql, mysql-serverパッケージの代わりにmariadb, mariadb-serverパッケージが提供されています。

# yum install mariadb  # クライアント
# yum install mariadb-server  # サーバー

コマンドやUNIXソケットはMySQLと同じですが、バージョン情報を見るとちゃんとMariaDBになっています。

$ mysql --version
mysql  Ver 15.1 Distrib 5.5.37-MariaDB, for Linux (x86_64) using readline 5.1
$ mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.0 Distrib 5.5.37-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
 
Server version          5.5.37-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 2 min 49 sec

systemdの操作

RHEL7ではSysV initがsystemdで置き換えられました。基本的な操作はコマンドと引数の順番が違うだけなので覚えやすいと思います。
systemdではサービスやデバイスをUnitと言う単位で管理します。systemctlコマンドではこのUnitの名前を操作対象として指定します。
MariaDBのUnit名はmariadb.serviceです。

# systemctl アクション Unit名で基本的な操作ができます。
# ここで示したほかにもアクションがあるので、詳しくはsystemctl(1)のManページを見ましょう。
systemctl [enable|disable|start|stop|restart] mariadb.service

MariaDB Serverをインストールした後は、MySQLと同じように初期設定を行います。

# systemctl start mariadb.service
# mysql_secure_installation
()

システム起動時にMariaDB Serverが立ち上がるように設定します。

# systemctl enable mariadb.service

Image By: Giuseppe MoscatoCC BY-NC-SA 2.0

MySQLサーバーが立ち上がらない現象

Ubuntu ServerでパッケージからインストールしたMySQLサーバーが、再起動時に自動的に起動してない現象に遭遇した。

環境:
Ubuntu Server 13.10
MySQL Server 5.5.35-0ubuntu0.13.10.2

/var/log/mysql/error.logを見てみると、

(略)
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
140409 20:27:55  InnoDB: Unable to open the first data file
InnoDB: Error in opening ./ibdata1
(略)

こんな具合にエラーが出て起動に失敗しているようだ。

エラーメッセージには「もう別のmysqld起動してんじゃねぇの?」とあるが、再起動直後にそんなの居るわけない。

起動していないとさすがに困るので、/etc/rc.localで無理矢理起動してみることにする。

とりあえずしばらくは様子見ですかね。。。


Image By: smilemarkCC BY-NC-SA 2.0