MariaDBをCentOS 6にyumでインストールする方法

2013年2月8日 | 八子 武司

名称未設定-13

MariaDBとは?

MariaDBは、MySQL派生のオープンソースな関係データベース管理システム(RDBMS)である。
MariaDBの開発は、MySQLのオリジナルコードの作者でMySQL ABの創設者でもあるMichael “Monty” Wideniusにより、 現在オラクルによって所有されているMySQLをフォークして立ち上げられたプロジェクトにより行われている。
配布ライセンスは、GNU General Public Licenseのバージョン2。

via http://ja.wikipedia.org/wiki/MariaDB

基本的にはMySQLと互換のリレーショナルデータベースです。
特別な学習コストなく使えるそうです。
つい先日、MariaDB 10.0.1がリリースされたので、インストールをしてみました。

MariaDBをインストール

CentOS 6.3で試してみます。

$ cat /etc/redhat-release 
CentOS release 6.3 (Final)

MariaDBのPGP keyをインストール。

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

レポジトリの設定を準備。

baseurlはhttp://yum.mariadb.org/から、自分の環境にあったURLを選択してください。

# vi /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0.1/centos6-x86
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=1

MariaDBをyumでインストールします。

# yum install MariaDB-devel MariaDB-client MariaDB-server
...
Is this ok [y/N]: y

ズラズラっと出てきて、Is this ok [y/N]: で y を入力します。
もし、以下の様なエラーが出たら、mysql-libsを削除する必要があります。

Transaction Check Error:
  file /etc/my.cnf conflicts between attempted installs of mysql-libs-5.1.67-1.el6_3.x86_64 and MariaDB-common-10.0.1-1.i686
  file /usr/share/mysql/charsets/Index.xml conflicts between attempted installs of mysql-libs-5.1.67-1.el6_3.x86_64 and MariaDB-common-10.0.1-1.i686
  file /usr/share/mysql/czech/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/danish/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/dutch/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/english/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/estonian/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/french/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/german/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/greek/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/hungarian/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/italian/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/japanese/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/korean/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/norwegian-ny/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/norwegian/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/polish/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/portuguese/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/romanian/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/russian/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/serbian/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/slovak/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/spanish/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/swedish/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
  file /usr/share/mysql/ukrainian/errmsg.sys conflicts between attempted installs of MariaDB-server-10.0.1-1.i686 and mysql-libs-5.1.67-1.el6_3.x86_64
 
Error Summary
-------------

mysql-libsを削除して、再度インストールします。

# rpm -e --nodeps mysql-libs
# yum install MariaDB-devel MariaDB-client MariaDB-server

さて、無事インストールが完了したでしょうか?

MariaDBをスタートする

早速、MariaDBを立ち上げてみましょう。

# /etc/init.d/mysql start
Starting MySQL. SUCCESS!

SUCCESS!
rootパスワードを設定します。
※パスワードは便宜設定してください。

/usr/bin/mysqladmin -u root password 'new-password'

コンソールを立ち上げてみましょう。

# mysql -uroot -pnew-password
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.0.1-MariaDB MariaDB Server
 
Copyright (c) 2000, 2012, Oracle, Monty Program Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
MariaDB [mysql]>

[(none)]のところには、useしているデータベース名が入ります。

ストレージエンジンを確認します。

MariaDB [(none)]> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| FEDERATED          | YES     | FederatedX pluggable storage engine                            | YES          | NO   | YES        |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| 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がデフォルトですね。

ステータスを確認。

MariaDB [(none)]> STATUS;
--------------
mysql  Ver 15.1 Distrib 10.0.1-MariaDB, for Linux (i686) using readline 5.1
 
Connection id:          11
Current database:       
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.0.1-MariaDB MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 7 min 11 sec
 
Threads: 1  Questions: 626  Slow queries: 0  Opens: 383  Flush tables: 2  Open tables: 32  Queries per second avg: 1.452
--------------

UNIX socketはmysql.sockですね。

MariaDBの設定ファイル

MariaDBは、クライアントとサーバで設定ファイルを分けることができます。
デフォルトではmy.cnfは以下のように記述してあって、.cnfをインクルードします。

# cat /etc/my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
 
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

クライアントの設定はこの設定ファイルです。

/etc/my.cnf.d/mysql-clients.cnf

サーバの設定はこの設定ファイルです。

/etc/my.cnf.d/server.cnf

試しに、文字コードをutf8にしてみます。

# vi /etc/my.cnf.d/server.cnf
[mysqld]
character-set-server = utf8

設定ができたら、MariaDBをリスタートしましょう。

# /etc/init.d/mysql restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS!

確認します。

$ mysql -uroot -pnew-password
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 1
Server version: 10.0.1-MariaDB MariaDB Server
 
Copyright (c) 2000, 2012, Oracle, Monty Program Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> status;
--------------
mysql  Ver 15.1 Distrib 10.0.1-MariaDB, for Linux (i686) using readline 5.1
 
Connection id:          1
Current database:       
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.0.1-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:                 1 min 3 sec
 
Threads: 1  Questions: 4  Slow queries: 0  Opens: 0  Flush tables: 1  Open tables: 58  Queries per second avg: 0.063
--------------

Server/Db charactersetがutf8になりました。

環境に合わせてチューニングして行きましょう。

MariaDBでHandlerSocketを有効にする方法

HandlerSocketとは?

簡単に言うと、MySQLデータベースへのアクセスを高速化するためのプラグインです。MySQLのSQLパーザをすっ飛ばし、ネットワーク通信とマルチスレッド処理周辺を置き換えることによって、InnoDB等のデータベースエンジンの性能を限界まで引き出します。
このHandlerSocketですが、すでにモバゲータウンにて実際に運用しています。
従来MySQLとmemcachedの構成で運用していた箇所を、HanderSocketを組み込んだMySQLだけの構成に置き換えました。 その結果、MySQLサーバの負荷軽減、memcachedの負荷軽減、ネットワークトラフィック減少の効果がありました。
また、単純にHandlerSocketに置き換えたことだけによる効果というわけではないのですが、アプリケーションのCPU負荷も大幅に減少しています。

via http://engineer.dena.jp/2010/08/handlersocket-plugin-for-mysql.html

MariaDBは、デフォルトでHandlerSocketプラグインが梱包されています。
コマンドでINSTALL PLUGIN 構文を打つか、設定ファイル.cnfに記述するだけでHandlerSocketを有効にすることができます。

INSTALL PLUGIN 構文を実行する場合

MariaDB [(none)]> INSTALL PLUGIN handlersocket SONAME 'handlersocket.so';

設定ファイル.cnfに記述する場合

# vi /etc/my.cnf.d/server.cnf
[mysqld]
plugin-load=handlersocket.so

プラグインを確認してみましょう。

MariaDB [(none)]> SHOW PLUGINS;
+----------------------------+----------+--------------------+------------------+---------+
| Name                       | Status   | Type               | Library          | License |
+----------------------------+----------+--------------------+------------------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL             | GPL     |
| mysql_old_password         | ACTIVE   | AUTHENTICATION     | NULL             | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MRG_MyISAM                 | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| FEDERATED                  | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_FT_INSERTED         | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| Aria                       | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| FEEDBACK                   | DISABLED | INFORMATION SCHEMA | NULL             | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| handlersocket              | ACTIVE   | DAEMON             | handlersocket.so | BSD     |
+----------------------------+----------+--------------------+------------------+---------+
42 rows in set (0.01 sec)

最後にhandlersocketと出ています。 HandlerSocketが有効になりました。
簡単ですね!

まとめ

今回は、MariaDBのインストールのみの紹介でした。
MariaDBは、ストレージエンジンにXtraDBが使えるらしいのですが(http://www.mysqlperformanceblog.com/2009/08/03/xtradb-has-been-commited-to-mariadb/)、yumでインストールしたバージョンでは、/usr/lib/mysql/plugin/以下にha_xtradb.soプラグインが無かったので、今回はスルーしています。
MariaDBについてのチューニングのベストプラクティスや、詳細なベンチマークはこれから出てくるでしょう。

また、MariaDBは、ここ1年くらいから目立った動きが増えてきていて、例えば、Cassandraとの接続ができるようにしていたり(https://kb.askmonty.org/en/cassandra-storage-engine/)と、面白い動きもあります。
今後も注目していきたいです。

参考資料

https://mariadb.org/

MariaDB公式ページ

http://blog.mariadb.org/sysbench-oltp-mysql-5-6-vs-mariadb-10-0/

『Sysbench OLTP: MySQL-5.6 vs. MariaDB-10.0』

https://kb.askmonty.org/en/handlersocket/

MariaDBのHandlerSocketについての詳細

http://www.atmarkit.co.jp/ait/articles/1212/06/news106.html

『MySQL創始者、「MariaDB Foundation」の設立を発表』

http://enterprisezine.jp/dbonline/detail/4400?p=2

『MariaDBはたんなるMySQLのクローン製品ではない!』
MariaDBは、Booking.comが最大のユーザーであり、Facebookもさらにカスタマイズしたものを利用しているとのこと

http://gihyo.jp/admin/clip/01/linux_dt/201302/05

『2013年2月5日 FedoraがMariaDBにリプレース,MySQLはこれからどうなる?』
FedoraがMariaDBを採用したとの記事

http://www.zdnet.com/wikipedia-moving-from-mysql-to-mariadb-7000008912/

『Wikipedia moving from MySQL to MariaDB』
WikipediaがMariaDBを採用したとの記事

PICK UP

お問い合わせ

サービスに関するご相談は
こちらよりお気軽にお問い合わせください。

e-Agencyの様々な情報をSNSでお届けします!