ライン

ポイント:*

ライン

 はじめに

CentOS 6.6

 今回は、MySQLのフォークDBのMariaDBを導入します。
折角なので、2台で同期する Galera Cluster を利用して冗長化させた形を試そうと思います。

 VMware 以下のゲストとしてOSバージョンは、CentOS 6.6を利用することにしました。

 インストール

 まずは、インストールから。yumで導入しますが、レポジトリは個別なので、追加してから導入します。
細かいことは割愛。

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

で、以下を追加。

# MariaDB 10.0 CentOS repository list - created 2015-04-18 10:00 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

実行しましょう。

# yum install MariaDB-Galera-server MariaDB-client galera
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * updates: ftp.nara.wide.ad.jp
base                                                     | 3.7 kB     00:00
extras                                                   | 3.4 kB     00:00
mariadb                                                  | 2.9 kB     00:00
mariadb/primary_db                                       |  22 kB     00:00
updates                                                  | 3.4 kB     00:00
updates/primary_db                                       | 2.8 MB     00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package MariaDB-Galera-server.x86_64 0:10.0.17-1.el6 will be インストール
--> 依存性の処理をしています: MariaDB-common のパッケージ: MariaDB-Galera-server-10.0.17-1.el6.x86_64
---> Package MariaDB-client.x86_64 0:10.0.17-1.el6 will be インストール
---> Package galera.x86_64 0:25.3.9-1.rhel6.el6 will be インストール
--> 依存性の処理をしています: nmap のパッケージ: galera-25.3.9-1.rhel6.el6.x86_64
--> 依存性の処理をしています: nc のパッケージ: galera-25.3.9-1.rhel6.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package MariaDB-common.x86_64 0:10.0.17-1.el6 will be インストール
--> 依存性の処理をしています: MariaDB-compat のパッケージ: MariaDB-common-10.0.17-1.el6.x86_64
---> Package nc.x86_64 0:1.84-22.el6 will be インストール
---> Package nmap.x86_64 2:5.51-4.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package MariaDB-compat.x86_64 0:10.0.17-1.el6 will be obsoleting
---> Package mysql-libs.x86_64 0:5.1.73-3.el6_5 will be 不要
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 パッケージ                アーキテクチャ
                                      バージョン              リポジトリー
                                                                           容量
================================================================================
インストールしています:
 MariaDB-Galera-server     x86_64     10.0.17-1.el6           mariadb      34 M
 MariaDB-client            x86_64     10.0.17-1.el6           mariadb      11 M
 MariaDB-compat            x86_64     10.0.17-1.el6           mariadb     2.7 M
     置き換えています  mysql-libs.x86_64 5.1.73-3.el6_5
 galera                    x86_64     25.3.9-1.rhel6.el6      mariadb     8.9 M
依存性関連でのインストールをします。:
 MariaDB-common            x86_64     10.0.17-1.el6           mariadb      23 k
 nc                        x86_64     1.84-22.el6             base         57 k
 nmap                      x86_64     2:5.51-4.el6            base        2.8 M

トランザクションの要約
================================================================================
インストール         7 パッケージ

総ダウンロード容量: 59 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
(1/7): MariaDB-Galera-10.0.17-centos6-x86_64-server.rpm  |  34 MB     00:05
(2/7): MariaDB-10.0.17-centos6-x86_64-client.rpm         |  11 MB     00:01
(3/7): MariaDB-10.0.17-centos6-x86_64-common.rpm         |  23 kB     00:00
(4/7): MariaDB-10.0.17-centos6-x86_64-compat.rpm         | 2.7 MB     00:00
(5/7): galera-25.3.9-1.rhel6.el6.x86_64.rpm              | 8.9 MB     00:00
(6/7): nc-1.84-22.el6.x86_64.rpm                         |  57 kB     00:00
(7/7): nmap-5.51-4.el6.x86_64.rpm                        | 2.8 MB     00:00
--------------------------------------------------------------------------------
合計                                            6.9 MB/s |  59 MB     00:08
警告: rpmts_HdrFromFdno: ヘッダ V4 DSA/SHA1 Signature, key ID 1bb943db: NOKEY
Retrieving key from https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
Importing GPG key 0x1BB943DB:
 Userid: "MariaDB Package Signing Key <package-signing-key@mariadb.org>"
 From  : https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
これでいいですか? [y/N]y
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : MariaDB-compat-10.0.17-1.el6.x86_64             1/8
  インストールしています  : MariaDB-common-10.0.17-1.el6.x86_64             2/8
  インストールしています  : MariaDB-client-10.0.17-1.el6.x86_64             3/8
  インストールしています  : 2:nmap-5.51-4.el6.x86_64                        4/8
  インストールしています  : nc-1.84-22.el6.x86_64                           5/8
  インストールしています  : galera-25.3.9-1.rhel6.el6.x86_64                6/8
  インストールしています  : MariaDB-Galera-server-10.0.17-1.el6.x86_64      7/8
chown: cannot access `/var/lib/mysql': そのようなファイルやディレクトリはありま せん
150418 19:04:08 [Note] WSREP: Read nil XID from storage engines, skipping position init
150418 19:04:08 [Note] WSREP: wsrep_load(): loading provider library 'none'
150418 19:04:08 [Note] InnoDB: Using mutexes to ref count buffer pool pages
150418 19:04:08 [Note] InnoDB: The InnoDB memory heap is disabled
150418 19:04:08 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
150418 19:04:08 [Note] InnoDB: Memory barrier is not used
150418 19:04:08 [Note] InnoDB: Compressed tables use zlib 1.2.3
150418 19:04:08 [Note] InnoDB: Using Linux native AIO
150418 19:04:08 [Note] InnoDB: Using CPU crc32 instructions
150418 19:04:08 [Note] InnoDB: Initializing buffer pool, size = 128.0M
150418 19:04:08 [Note] InnoDB: Completed initialization of buffer pool
150418 19:04:08 [Note] InnoDB: The first specified data file ./ibdata1 did not exist: a new database to be created!
150418 19:04:08 [Note] InnoDB: Setting file ./ibdata1 size to 12 MB
150418 19:04:08 [Note] InnoDB: Database physically writes the file full: wait...
150418 19:04:08 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
150418 19:04:10 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
150418 19:04:12 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
150418 19:04:12 [Warning] InnoDB: New log files created, LSN=45781
150418 19:04:12 [Note] InnoDB: Doublewrite buffer not found: creating new
150418 19:04:12 [Note] InnoDB: Doublewrite buffer created
150418 19:04:12 [Note] InnoDB: 128 rollback segment(s) are active.
150418 19:04:12 [Warning] InnoDB: Creating foreign key constraint system tables.
150418 19:04:12 [Note] InnoDB: Foreign key constraint system tables created
150418 19:04:12 [Note] InnoDB: Creating tablespace and datafile system tables.
150418 19:04:12 [Note] InnoDB: Tablespace and datafile system tables created.
150418 19:04:12 [Note] InnoDB: Waiting for purge to start
150418 19:04:12 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.22-72.0 started; log sequence number 0
150418 19:04:12 [Note] WSREP: Service disconnected.
150418 19:04:13 [Note] WSREP: Some threads may fail to exit.
150418 19:04:13 [Note] InnoDB: FTS optimize thread exiting.
150418 19:04:13 [Note] InnoDB: Starting shutdown...
150418 19:04:15 [Note] InnoDB: Shutdown completed; log sequence number 1616697
150418 19:04:15 [Note] WSREP: Read nil XID from storage engines, skipping position init
150418 19:04:15 [Note] WSREP: wsrep_load(): loading provider library 'none'
150418 19:04:15 [Note] InnoDB: Using mutexes to ref count buffer pool pages
150418 19:04:15 [Note] InnoDB: The InnoDB memory heap is disabled
150418 19:04:15 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
150418 19:04:15 [Note] InnoDB: Memory barrier is not used
150418 19:04:15 [Note] InnoDB: Compressed tables use zlib 1.2.3
150418 19:04:15 [Note] InnoDB: Using Linux native AIO
150418 19:04:15 [Note] InnoDB: Using CPU crc32 instructions
150418 19:04:15 [Note] InnoDB: Initializing buffer pool, size = 128.0M
150418 19:04:15 [Note] InnoDB: Completed initialization of buffer pool
150418 19:04:15 [Note] InnoDB: Highest supported file format is Barracuda.
150418 19:04:15 [Note] InnoDB: 128 rollback segment(s) are active.
150418 19:04:15 [Note] InnoDB: Waiting for purge to start
150418 19:04:15 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.22-72.0 started; log sequence number 1616697
150418 19:04:15 [Note] WSREP: Service disconnected.
150418 19:04:16 [Note] WSREP: Some threads may fail to exit.
150418 19:04:16 [Note] InnoDB: FTS optimize thread exiting.
150418 19:04:16 [Note] InnoDB: Starting shutdown...
150418 19:04:18 [Note] InnoDB: Shutdown completed; log sequence number 1616707

PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:

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

Alternatively you can run:
'/usr/bin/mysql_secure_installation'

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.

Please report any problems at http://mariadb.org/jira

The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Support MariaDB development by buying support/new features from MariaDB
Corporation Ab. You can contact us about this at sales@mariadb.com.
Alternatively consider joining our community based development effort:
http://mariadb.com/kb/en/contributing-to-the-mariadb-project/

  削除中                  : mysql-libs-5.1.73-3.el6_5.x86_64                8/8
  Verifying               : MariaDB-common-10.0.17-1.el6.x86_64             1/8
  Verifying               : MariaDB-client-10.0.17-1.el6.x86_64             2/8
  Verifying               : galera-25.3.9-1.rhel6.el6.x86_64                3/8
  Verifying               : MariaDB-Galera-server-10.0.17-1.el6.x86_64      4/8
  Verifying               : MariaDB-compat-10.0.17-1.el6.x86_64             5/8
  Verifying               : nc-1.84-22.el6.x86_64                           6/8
  Verifying               : 2:nmap-5.51-4.el6.x86_64                        7/8
  Verifying               : mysql-libs-5.1.73-3.el6_5.x86_64                8/8

インストール:
  MariaDB-Galera-server.x86_64 0:10.0.17-1.el6
  MariaDB-client.x86_64 0:10.0.17-1.el6
  MariaDB-compat.x86_64 0:10.0.17-1.el6
  galera.x86_64 0:25.3.9-1.rhel6.el6

依存性関連をインストールしました:
  MariaDB-common.x86_64 0:10.0.17-1.el6         nc.x86_64 0:1.84-22.el6
  nmap.x86_64 2:5.51-4.el6

置換:
  mysql-libs.x86_64 0:5.1.73-3.el6_5

完了しました!

MySQLが入ったままだったので、削除されて入れ直されました。

# chkconfig --list|grep mysql
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

 /etc/my.cnf.d/server.cnf 初期の設定は以下でした。

#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]

#
# * Galera-related settings
#
[galera]
# Mandatory settings
#wsrep_provider=
#wsrep_cluster_address=
#binlog_format=row
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#bind-address=0.0.0.0
#
# Optional setting
#wsrep_slave_threads=1
#innodb_flush_log_at_trx_commit=0

# this is only for embedded server
[embedded]

# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]

# This group is only read by MariaDB-10.0 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.0]

 完全同期型ということで、すべてがアクティブでマスターになります。
設定ファイルでは、mysqldのセクション以下に設定を加えます。

 とりあえず、いくつかのページを参考に、こんなにしてみました。

[mysqld]
character-set-server = utf8
skip-name-resolve

query_cache_size=0
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1

innodb_buffer_pool_size=128M
innodb_log_file_size=8M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2
wsrep_slave_threads=4

wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.1.15,192.168.1.17
wsrep_cluster_name='GALERA_CLUSTER'
wsrep_node_name='node1'
wsrep_node_address='192.168.1.15'
wsrep_sst_method=rsync

 初期に動作させるノード用の起動を行います。

# service mysql bootstrap
Bootstrapping the cluster.. Starting MySQL..               [  OK  ]

 上がってきました。ここで1件データを加えておきました。

 ここで、同様を2台目で作ります。
設定の箇所は自分のIPアドレスである "wsrep_node_address" 箇所以外は同じにしています。
そして、起動してみました。

# service mysql start
Starting MySQL...SST in progress, setting sleep higher.    [  OK  ]

 #1側でデータを追加してあったものが、ちゃんと同期できているかを確認します。

# mysql -u root test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.0.17-MariaDB-wsrep MariaDB Server, wsrep_25.10.r4144

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [test]> show status like 'wsrep_%';
+------------------------------+-------------------------------------------+
| Variable_name                | Value                                     |
+------------------------------+-------------------------------------------+
| wsrep_local_state_uuid       | dbfdf558-e5b9-11e4-ba2a-6208f5b633ea      |
| wsrep_protocol_version       | 7                                         |
| wsrep_last_committed         | 2                                         |
| wsrep_replicated             | 0                                         |
| wsrep_replicated_bytes       | 0                                         |
| wsrep_repl_keys              | 0                                         |
| wsrep_repl_keys_bytes        | 0                                         |
| wsrep_repl_data_bytes        | 0                                         |
| wsrep_repl_other_bytes       | 0                                         |
| wsrep_received               | 3                                         |
| wsrep_received_bytes         | 224                                       |
| wsrep_local_commits          | 0                                         |
| wsrep_local_cert_failures    | 0                                         |
| wsrep_local_replays          | 0                                         |
| wsrep_local_send_queue       | 0                                         |
| wsrep_local_send_queue_max   | 1                                         |
| wsrep_local_send_queue_min   | 0                                         |
| wsrep_local_send_queue_avg   | 0.000000                                  |
| wsrep_local_recv_queue       | 0                                         |
| wsrep_local_recv_queue_max   | 1                                         |
| wsrep_local_recv_queue_min   | 0                                         |
| wsrep_local_recv_queue_avg   | 0.000000                                  |
| wsrep_local_cached_downto    | 18446744073709551615                      |
| wsrep_flow_control_paused_ns | 0                                         |
| wsrep_flow_control_paused    | 0.000000                                  |
| wsrep_flow_control_sent      | 0                                         |
| wsrep_flow_control_recv      | 0                                         |
| wsrep_cert_deps_distance     | 0.000000                                  |
| wsrep_apply_oooe             | 0.000000                                  |
| wsrep_apply_oool             | 0.000000                                  |
| wsrep_apply_window           | 0.000000                                  |
| wsrep_commit_oooe            | 0.000000                                  |
| wsrep_commit_oool            | 0.000000                                  |
| wsrep_commit_window          | 0.000000                                  |
| wsrep_local_state            | 4                                         |
| wsrep_local_state_comment    | Synced                                    |
| wsrep_cert_index_size        | 0                                         |
| wsrep_causal_reads           | 0                                         |
| wsrep_cert_interval          | 0.000000                                  |
| wsrep_incoming_addresses     | 192.168.1.18:3306,192.168.1.15:3306 |
| wsrep_evs_delayed            |                                           |
| wsrep_evs_evict_list         |                                           |
| wsrep_evs_repl_latency       | 0/0/0/0/0                                 |
| wsrep_evs_state              | OPERATIONAL                               |
| wsrep_gcomm_uuid             | 81dcbbab-e5bd-11e4-8084-9261ae439982      |
| wsrep_cluster_conf_id        | 6                                         |
| wsrep_cluster_size           | 2                                         |
| wsrep_cluster_state_uuid     | dbfdf558-e5b9-11e4-ba2a-6208f5b633ea      |
| wsrep_cluster_status         | Primary                                   |
| wsrep_connected              | ON                                        |
| wsrep_local_bf_aborts        | 0                                         |
| wsrep_local_index            | 0                                         |
| wsrep_provider_name          | Galera                                    |
| wsrep_provider_vendor        | Codership Oy <info@codership.com>         |
| wsrep_provider_version       | 25.3.9(r3385)                             |
| wsrep_ready                  | ON                                        |
| wsrep_thread_count           | 5                                         |
+------------------------------+-------------------------------------------+
57 rows in set (0.00 sec)

MariaDB [test]>

 wsrep_local_state_comment の箇所が、”Synced”になっていますので、同期がうまくいっています。

参照のみのDB

 レプリケーションしている1台は、読込のみのスレーブとして動作させたいと考えました。

 これは、単純にmysqldの設定部分に

read_only = 1

を加えました。

こんな感じで便利に利用できそうです。バランシングして利用させることが容易にできそうで、楽しみになってきました。

 (準備中)

(準備中)

 これ以降はまだページを書き始めていません。

(準備中)

(準備中)


【改訂履歴】作成:2015/04/18


【参照ページ】


 
Copyright © 1996,1997-2006,2007- by F.Kimura,