close

今天要來嘗試安裝MariaDB,

記錄下安裝的過程

 

首先,目前有5.5 10.0 10.1三種類型的版本,

MariaDB 5.5與MySql(印象是5.6版)相容性最佳,

10.0是MariaDB繼續發展的版本,已經和Mysql有較大的差異,

10.1更新部分 請參考What is MariaDb 10.1? 

其中10.1的Galera Cluster已經包含在標準安裝包內,配置後就能使用.

總之要試當然選最新版本囉!

 

主機

node-1 192.168.30.31

node-2 192.168.30.32

 

安裝

第一步需要建立repo檔

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

# MariaDB 10.1 CentOS repository list - created 2016-02-28 13:16 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

安裝(10.1版,Galera Cluster是包含在裡面的,如果是5.5或10.0則需要安裝galera cluster版)

sudo yum install MariaDB-server MariaDB-client -y


執行初始化配置->參考 [資料庫] 安裝MariaDB取代MySQL在CentOS 6.x上
其實自行配置也可,基本上我會略過這個步驟

 

執行MariaDB

service mysql start

設定開機啟用,最基本的安裝完成了

chkconfig mysql on

 

設定Galera Cluster

建立cluster帳號

GRANT ALL PRIVILEGES ON *.* TO cluster@localhost IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'cluster'@'192.168.30.%' IDENTIFIED BY '1234';
flush privileges;

複製設定範例檔(這路徑下有各種範例設定可用)

cp /usr/share/mysql/wsrep.cnf /etc/my.cnf.d/

修改設定檔 vi /etc/my.cnf.d/server.cnf (10.1 Galera Support 與 unable to run a mariadb 10.1 galera cluster)

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='my_wsrep_cluster'
wsrep_cluster_address='gcomm://'
binlog_format=row
wsrep_node_name='db-1'
wsrep_sst_auth=cluster:1234
wsrep_sst_method=rsync
bind-address=192.168.0.31

啟動mariadb (只有第一個node啟動時,必須用這指令,之後的node必須使用service mysql start)

service mysql start --wsrep-new-cluster或 service mysql bootstrap

Starting MySQL ERROR!

 

檢查錯誤訊息less /var/lib/mysql/cluster-1.err

2016-02-29 13:31:25 139885306103840 [ERROR] WSREP: Permission denied
2016-02-29 13:31:25 139885306103840 [ERROR] WSREP: failed to open gcomm backend connection: 13: error while trying to listen 'tcp://0.0.0.0:4567?socket.non_blocking=1', asio error 'Permission denied': 13 (Permission denied)
         at gcomm/src/asio_tcp.cpp:listen():777

2016-02-29 13:31:25 139885306103840 [ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():208: Failed to open backend connection: -13 (Permission denied)
2016-02-29 13:31:25 139885306103840 [ERROR] WSREP: gcs/src/gcs.cpp:gcs_open():1379: Failed to open channel 'my_wsrep_cluster' at 'gcomm://': -13 (Permission denied)
2016-02-29 13:31:25 139885306103840 [ERROR] WSREP: gcs connect failed: Permission denied
2016-02-29 13:31:25 139885306103840 [ERROR] WSREP: wsrep::connect(gcomm://) failed: 7
2016-02-29 13:31:25 139885306103840 [ERROR] Aborting

160229 13:31:26 mysqld_safe mysqld from pid file /var/lib/mysql/cluster-1.pid ended
160229 13:31:42 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
160229 13:31:42 mysqld_safe WSREP: Running position recovery with --log_error='/var/lib/mysql/wsrep_recovery.QCvjYm' --pid-file='/var/lib/mysql/cluster-1-recover.pid'

先將防火牆與SELINUX關閉(參考linux - 防火牆&SeLinux)

啟動mariadb

service mysql start --wsrep-new-cluster或 service mysql bootstrap

檢查galera cluster

mysql -e "SHOW STATUS LIKE 'wsrep_%'; " -p

看wsrep_ready ON和wsrep_cluster_size 1

檢查port

netstat -anlp | grep -e 4567 -e 3306

基本上 單一台的設定已經完成了.

但只有一台node的cluster不叫cluster,

 

加入node

跳過安裝部分,

修改設定檔 vi /etc/my.cnf.d/server.cnf

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='my_wsrep_cluster'
wsrep_cluster_address='gcomm://192.168.30.31:4567'
binlog_format=row
wsrep_node_name='db-2'
wsrep_sst_auth=cluster:1234
wsrep_sst_method=rsync
bind-address=192.168.0.32

重新啟動mariadb

service mysql restart 

按照node-1時的方式,檢查galera cluster與port

修改node-1的設定檔 vi /etc/my.cnf.d/server.cnf

wsrep_cluster_address='gcomm://192.168.30.32:4567'

(或執行mysqld --wsrep_cluster_address=gcomm://IPADDRESSOFCLUSTERPROVIDER)

重新啟動mariadb

service mysql restart 

 

實際測試

在node-1

mysql -uroot -e 'CREATE DATABASE gc_test;'

node-2執行

mysql -uroot -e 'SHOW DATABASES;'

 

最後galera cluster在auto_increment欄位是按照node數調整的,以我的情況為

db-1  1,3,5,7,...

db-2 2,4,6,8,...

 

重啟啓動cluster (參考 當全部的node不正常關閉時,如何重啟cluster)

基本上跟啟動第一node時一樣,

(但有問題需要先處理,基本原則就是找wsrep_last_committed最大的為第一個啟動的node作為Primary)

service mysql start --wsrep-new-cluster或 service mysql bootstrap

 

官網提供另一個檢查流程,

可以在cluster有發生問題(ex : brain split,跳電)停止後,

啟動時能檢查哪一個node作為primary讓其他nodes能同步,

修改每個node的設定檔,

wsrep_cluster_address='gcomm://192.168.30.32:4567?pc.wait_prim=no'

確保服務開啟時儘管沒有決定primary node依然可以啟動, (官網上是這樣說,但我試不出來

等每個node啟用後,

找出wsrep_last_committed最大的node,

設定為primary node即可

SET GLOBAL wsrep_provider_options="pc.bootstrap=true";

但這個方法是不出來,儘管設定了pc.wait_prim=no,

依然無法使用service mysql start啟動第一個node.

在網路上也找到一篇同情況. BOOTSTRAPPING GALERA CLUSTER THE NEW WAY

 

MariaDB大數據的專用Engine TokuDB

安裝參考文章 => MariaDB 使用 TokuEngine

 

配置資料存放位置

(後續再寫

 

管理介面ClusterControl 

參考 

ClusterControl - 部屬 監控 管理 資料庫叢集

 

參考

Getting Started with MariaDB Galera Cluster

Galera Cluster for MySQL Multi-master Replication

如何設定 MariaDB Cluster

galeracluster官網

arrow
arrow
    文章標籤
    cluster mariadb mariadb 10.1
    全站熱搜
    創作者介紹
    創作者 abcg5 的頭像
    abcg5

    Aaron Yang

    abcg5 發表在 痞客邦 留言(2) 人氣()