
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/)と、面白い動きもあります。
今後も注目していきたいです。
参考資料
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
-

タグ: CART RECOVERY, カゴ落ち対策, カートリカバリー, クラウドサービス, コラム, ニュース
ゴルフネットワークプラス株式会社様 カゴ落ち改善を自動化「CART RECOVERY®(カートリカバリー)」ご利用事例 -

タグ: 1stPartyデータ, AI学習設計, GA4, GMP, Google広告, LTV最大化, ウェビナー開催, コラム, データ活用, 広告運用改善
広告成果の「頭打ち」を打破する!GA/GMPを活用したAI学習設計と運用戦略 -

タグ: AI Agents, AI分析, Amplitude Tokyo Meetup, PDCA改善, イベントレポート, グロース戦略, コラム, データドリブン, データ活用, プロダクト分析
【イベントレポート】プロダクトの意志をデータとAIで実装する 〜現場が自走するプロダクトアナリティクスの新時代〜 -

タグ: BigQuery連携, GA4, Looker Studio, コラム, ダッシュボード設計, データ分析効率化, データ活用, マーケティング分析, レポート自動化, 分析工数削減
2025年度 お客様満足度調査 結果のご報告 – Google アナリティクス 360等データ活用支援サービス -

タグ: AEO, AI Visibility, AI検索, Amplitude, コラム, データ分析, ブランド可視化, プロダクト分析, マーケティング分析
SEOの次はAEO?AI検索時代の新戦略②「AIビジビリティ」でブランドの視認性を解き明かす -

タグ: GA4, GA4導入, GTM, Udemy講座, googleタグマネージャー, アクセス解析, オンライン学習, コラム, データ活用, 計測設定
今なら1,500円!GA4×GTM徹底解説 GA4導入講座をUdemyで公開!

