akishin999の日記

調べた事などを書いて行きます。

CentOS 6.4 に MariaDB 5.5 をインストールする

RHEL 7 からデフォルトでインストールできる DB が MySQL から MariaDB に変わるかも、という話を読んだので、ちょっと使ってみようと思い立ちインストールしてみました。
OS は CentOS 6.4 x86_64 です。

インストール

MariaDB - Setting up MariaDB Repositories - MariaDB
https://downloads.mariadb.org/mariadb/repositories/

まずは上記のページより、環境に合わせた yumリポジトリ設定を表示します。
設定が表示されたら yumリポジトリ設定ファイルを作成。

# vi /etc/yum.repos.d/mariadb.repo

先ほどのページで表示された内容を記述します。
ここでは CentOS 6.4 x86_64 なので以下のような内容になります。

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enable=0

取りあえず enable は 0 にしておきました。

yum リポジトリの準備が出来たので、次は GPG 鍵をインポート。

# rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

いよいよインストールします。
ここでは、MariaDB-server と MariaDB-client をインストールしました。

# yum install --enablerepo=mariadb MariaDB-server MariaDB-client

CentOS 6 系の場合、postfix やいくつかのパッケージが mysql-libs に依存しているのですが、MariaDBYum からインストールする場合は、以下のように自動的に MariaDB-compat パッケージへと置き換えてくれるようです。

======================================================================================================
 Package                    Arch               Version                      Repository           Size
======================================================================================================
Installing:
 MariaDB-client             x86_64             5.5.31-1                     mariadb              10 M
 MariaDB-compat             x86_64             5.5.31-1                     mariadb             2.7 M
     replacing  mysql-libs.x86_64 5.1.69-1.el6_4
・
・
・

これは楽ですね。

インストールしたらまずは MySQL サーバのデフォルトのキャラクターセットを UTF-8 に変更します。
設定ファイルは /etc/my.cnf.d/server.cnf を使うようです。

# vi /etc/my.cnf.d/server.cnf

[mysqld] セクションに character-set-server=utf8 を記述します。
この辺の設定項目は MySQL と同じっぽい。

[mysqld]
character-set-server=utf8

MySQL と比べるとデフォルトの状態で設定ファイルの中身がスカスカな感じですが、実際どんな値がデフォルトになってるんでしょうね?
その辺もそのうち確認してみたいです。

取りあえずここでは後回しにして、サーバを起動します。

# service mysql start

サーバの名前は mysql のままでした。

サーバが起動したら、mysql_secure_installation を実行して root ユーザへのパスワード設定や、root でのリモートログインの禁止などの設定を行っておきます。

# mysql_secure_installation

完了したらクライアントから接続してみます。
クライアントのコマンド名も mysql のままでした。

# mysql -uroot -p

サーバのステータスを表示して、キャラクターセットが utf8 になっていることを確認します。

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 5.5.31-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          9
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         5.5.31-MariaDB MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 4 min 30 sec

Threads: 1  Questions: 27  Slow queries: 0  Opens: 1  Flush tables: 2  Open tables: 27  Queries per second avg: 0.100
--------------

プロンプトが MariaDB となっている以外は見慣れた感じですね。

使用可能なエンジンを確認してみると以下のような感じ。

MariaDB [(none)]> show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| FEDERATED          | YES     | FederatedX pluggable storage engine                                        | YES          | NO   | YES        |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                                     | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)

InnoDB の実装がデフォルトで Percona-XtraDB になってるみたいです。
これはなかなか嬉しいかも。

ちなみに MariaDB-devel パッケージを入れれば、Ruby の mysql2 ライブラリも問題なくインストールできます。
軽く触った限りでは、Rails からも特に MariaDB という事を意識せず、 MySQL と同じ設定で使用できました。

これから少しずつ触ってみようかな。