LoginSignup
6
6

More than 5 years have passed since last update.

MariaDB 10.1 Galera Cluster @Ubuntu 14.04 LTS

Posted at

Ubuntu 14.04上にMariaDB 10.1系でGalera Clusterを組みました。10.0系のインストール手順は見られましたが、10.1系のインストール手順が見られなかったのでまとめました。

環境

  • Ubuntu 14.04.4 LTS
  • MariaDB 10.1.12

下記Vagrantfileを使って、Ubuntuサーバ3台用意しました。

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.define "node1" do |node1|
    node1.vm.hostname = "node1"
    node1.vm.network "private_network", ip: "192.168.13.11"
    node1.vm.provision "shell", inline: <<-SHELL
      echo "127.0.0.1     localhost" >  /etc/hosts
      echo "192.168.13.11 node1"     >> /etc/hosts
      echo "192.168.13.12 node2"     >> /etc/hosts
      echo "192.168.13.13 node3"     >> /etc/hosts
      apt-get update
mariadb-server
    SHELL
    node1.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--memory", "1024"]
    end
  end
  config.vm.define "node2" do |node2|
    node2.vm.hostname = "node2"
    node2.vm.network "private_network", ip: "192.168.13.12"
    node2.vm.provision "shell", inline: <<-SHELL
      echo "127.0.0.1     localhost" >  /etc/hosts
      echo "192.168.13.11 node1"     >> /etc/hosts
      echo "192.168.13.12 node2"     >> /etc/hosts
      echo "192.168.13.13 node3"     >> /etc/hosts
      apt-get update
mariadb-server
    SHELL
    node2.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--memory", "1024"]
    end
  end
  config.vm.define "node3" do |node3|
    node3.vm.hostname = "node3"
    node3.vm.network "private_network", ip: "192.168.13.13"
    node3.vm.provision "shell", inline: <<-SHELL
      echo "127.0.0.1     localhost" >  /etc/hosts
      echo "192.168.13.11 node1"     >> /etc/hosts
      echo "192.168.13.12 node2"     >> /etc/hosts
      echo "192.168.13.13 node3"     >> /etc/hosts
      apt-get update
    SHELL
    node3.vm.provider "virtualbox" do |v|
      v.customize ["modifyvm", :id, "--memory", "1024"]
    end
  end
end

MariaDBのインストール - Node1/Node2/Node3共通

10.0系でGalera Clusterを組むにはgaleraパッケージとmariadb-serverパッケージの両方が必要でしたが、10.1系ではmariadb-serverに同梱されるようになりました。

$ vagrant up
$ vagrant ssh nodeX # Xは1〜3です
vagrant@nodeX:~$ sudo -s
root@nodeX:~# apt-get install software-properties-common
root@nodeX:~# apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
root@nodeX:~# add-apt-repository 'deb [arch=amd64,i386] http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/repo/10.1/ubuntu trusty main'
root@nodeX:~# apt-get update
root@nodeX:~# DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-server
root@nodeX:~# service mysql stop

インストール後、MariaDBが起動しますが、Clusterを組むために停止させています。

初期ノードの設定・起動 - Node1のみ

galera.cnfというファイルにクラスターの設定をしていきます。10.1系からwsrep_onのデフォルト値がオフになったため、10.1系でGalera Clusterを利用する場合は明示的にオンにする必要があります。

/etc/mysql/conf.d/galera.cnf
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0

wsrep_on=ON # 明示的にON
binlog_format=ROW
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="my_wsrep_cluster"
wsrep_cluster_address="gcomm://192.168.13.11,192.168.13.12,192.168.13.13"
wsrep_sst_method=rsync

wsrep_node_address="192.168.13.11"
wsrep_node_name="node1"

オプション--wsrep-new-clusterをつけて起動させます。

root@nodeX:~# service mysql start --wsrep-new-cluster

ノードの設定・起動 - Node2とNode3

初期ノードが起動したら、残りの2台をClusterに追加します。

Node2の設定・起動

設定ファイルを変更します。

/etc/mysql/conf.d/galera.cnf
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0

wsrep_on=ON
binlog_format=ROW
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="my_wsrep_cluster"
wsrep_cluster_address="gcomm://192.168.13.11,192.168.13.12,192.168.13.13"
wsrep_sst_method=rsync

wsrep_node_address="192.168.13.12"
wsrep_node_name="node2"

debian.cnfのパスワードをnode1と同様にします。

root@node2:~# sed -i "s/password = \(.*\)/password = [node1のパスワード]/" /etc/mysql/debian.cnf

下記のコマンドで起動させます。

root@node2:~# service mysql start

Node3の設定・起動

設定ファイルを変更します。

/etc/mysql/conf.d/galera.cnf
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0

wsrep_on=ON
binlog_format=ROW
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="my_wsrep_cluster"
wsrep_cluster_address="gcomm://192.168.13.11,192.168.13.12,192.168.13.13"
wsrep_sst_method=rsync

wsrep_node_address="192.168.13.13"
wsrep_node_name="node3"

debian.cnfのパスワードをnode1と同様にします。

root@node3:~# sed -i "s/password = \(.*\)/password = [node1のパスワード]/" /etc/mysql/debian.cnf

下記のコマンドで起動させます。

root@node3:~# service mysql start

動作確認

下記のコマンドでクラスターサイズを表示させ、3になっていることを確認します。

root@node1:~# mysql -u root -e 'SELECT VARIABLE_VALUE as "cluster size"  FROM INFORMATION_SCHEMA.GLOBAL_STATUS  WHERE VARIABLE_NAME="wsrep_cluster_size"'
+--------------+
| cluster size |
+--------------+
| 3            |
+--------------+
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6