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
-
タグ: aiツール, イーエージェンシー, カスタムai, コラム, ファインチューニング, モックアップ, 価値観, 文化, 朝会, 社内改善, 議事録
朝会の会話から毎日ひとつサービスのモックを作ってみる(AIが) – AIが変える朝会のあり方|公式note -
タグ: BigQuery, GA4, Googleアナリティクス, googleクラウド, vertexai, コラム, セミナー&イベント, データ活用, マーケティング, 広告最適化, 生成ai
Google アナリティクス の行動データを Google Cloud で活かす方法 -
タグ: GMP, googleアナリティクス4, googleクラウド, オフラインデータ, オンラインデータ, コラム, データクレンジング, データ統合, マーケティング戦略, 技術的課題, 組織的課題
データがバラバラで活用できない!データ統合の技術的かつ組織的な課題を解決する方法 -
タグ: コミュニケーション促進, コラム, ストレス管理, チームビルディング, ブログ, モチベーション向上, リモートワーク, 五反田納涼会, 企業文化, 社内イベント, 社員交流, 組織活性化
社内イベントが組織を変える:楽しみながら築く強いチームワーク|公式note -
タグ: エンジニア採用, キャリア採用, コミュニケーション, コラム, ブログ, リモートワーク, ワーケーション, 文化, 環境
【オープン社内報 2024年9月号】イー・エージェンシー プレミアムニュース|公式note -
タグ: エンジニア採用, キャリア採用, コミュニケーション, コラム, ブログ, リモートワーク, ワーケーション, 文化, 環境
2024年9月の募集職種一覧! エンジニア職からビジネス職まで採用強化中!|株式会社イー・エージェンシー公式note