Mariadb集羣搭建

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/

相關文章
相關標籤/搜索