Galera Cluster是MariaDB的一個雙活多主集羣,其可使得MariDB的全部節點保持同步,Galera爲MariaDB提供了同步複製(相對於原生的異步複製),所以其能夠保證HA,且其當前僅支持XtraDB/InnoDB存儲引擎(擴展支持MyISAM),而且只可在Linux下使用。
Galera Cluster擁有如下特性:node
真正的多主架構,任何節點均可以進行讀寫mysql
同步複製,各節點間無延遲且節點宕機不會致使數據丟失sql
緊密耦合,全部節點均保持相同狀態,節點間無不一樣數據shell
無需主從切換操做或使用VIP數據庫
熱Standby,在Failover過程當中無停機時間(因爲不須要Failover)centos
自動節點配置,無需手工備份當前數據庫並拷貝至新節點安全
支持InnoDB存儲引擎服務器
對應於透明,無需更改應用或是進行極小的更改架構
無需進行讀寫分離異步
本文主要說明Galera的集羣如何搭建,使用環境是centos6.5,使用三臺服務器
機器信息
節點node1 Ip 1.1.1.1
節點node2 Ip 1.1.1.2
節點node3 Ip 1.1.1.3
第一步:添加Mariadb源
建立 mariadb 源 /etc/yum.repos.d/mariadb.repo
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.0/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
第二步:安裝MariaDB
yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/socat-1.7.2.3-1.el6.x86_64.rpm yum install MariaDB-Galera-server MariaDB-client rsync galera
若是安裝Mariadb失敗,請先把自帶的mysql卸掉 ,使用rpm -q mysql 查找安裝包信息,rpm -e 進行卸載
第三步:設置Mariadb 安全
service mysql start /usr/bin/mysql_secure_installation
密碼當前設置是dbpass,全部問題都是默認 default
第四步:建立MariaDB Galera集羣用戶
如今建立每一個節點通用受權的用戶sst_user,在每一個節點上執行下面的命令
mysql -u root -p mysql> DELETE FROM mysql.user WHERE user=''; mysql> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'dbpass'; mysql> GRANT USAGE ON *.* to sst_user@'%' IDENTIFIED BY 'dbpass'; mysql> GRANT ALL PRIVILEGES on *.* to sst_user@'%'; mysql> FLUSH PRIVILEGES; mysql> quit
第五步: 建立集羣的配置
全部節點中止mysql 服務,
service mysql stop
咱們進行node1,node2,node3上的環境配置,下面是node1的配置
cat >> /etc/my.cnf.d/server.cnf << EOF
binlog_format=ROW default-storage-engine=innodb innodb_autoinc_lock_mode=2 innodb_locks_unsafe_for_binlog=1 query_cache_size=0 query_cache_type=0 bind-address=0.0.0.0 datadir=/var/lib/mysql innodb_log_file_size=100M innodb_file_per_table innodb_flush_log_at_trx_commit=2 wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address="gcomm://1.1.1.1,1.1.1.2,1.1.1.3" wsrep_cluster_name='galera_cluster' wsrep_node_address='1.1.1.1' wsrep_node_name='node1' wsrep_sst_method=rsync wsrep_sst_auth=sst_user:dbpass EOF
node2的配置在wsrep_node_address 和wsrep_node_name 有修改
wsrep_node_address=1.1.1.2 wsrep_node_name='node2'
node3
wsrep_node_address=1.1.1.3 wsrep_node_name='node3'
第六步:初始化node1節點
/etc/init.d/mysql start --wsrep-new-cluster
查看一下node1上的狀態信息
mysql -u root-p -e "show status like 'wsrep%'"
正確信息以下:
wsrep_local_state_comment | Synced wsrep_incoming_addresses | 1.1.1.1:3306 wsrep_cluster_size | 1 wsrep_ready | ON
第七步:啓動其餘節點
其餘節點啓動和日常命令一下
service mysql start
在node2上查看一下狀態
mysql -u root-p -e "show status like 'wsrep%'"
顯示以下:
| wsrep_local_state_comment | Synced | | wsrep_incoming_addre sses | 1.1.1.1:3306,1.1.1.2:3306 | | wsrep_cluster_size | 2 | | wsrep_connected | ON | | wsrep_ready | ON |
啓動node3後顯示信息以下
| wsrep_local_state_comment | Synced | | wsrep_incoming_addre sses | 1.1.1.1:3306,1.1.1.2:3306,1.1.1.3:3306 | | wsrep_cluster_size | 2 | | wsrep_connected | ON | | wsrep_ready | ON |
第八步:驗證同步
mysql -u root -p -e 'CREATE DATABASE clustertest;' mysql -u root -p -e 'CREATE TABLE clustertest.mycluster ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), ipaddress VARCHAR(20), PRIMARY KEY(id));' mysql -u root -p -e 'INSERT INTO clustertest.mycluster (name, ipaddress) VALUES ("node1", "1.1.1.1");'
在node2和node3上檢查相應的表信息,若是可以以下顯示,表示已經成功同步
mysql -u root -p -e 'SELECT * FROM clustertest.mycluster;'
Enter password: +----+------+-----------+ | id | name | ipaddress | +----+------+-----------+ | 2 | node1 | 1.1.1.1 | +----+------+-----------+
成功完成
參考文章:http://www.unixmen.com/setup-mariadb-galera-cluster-10-0-centos/