部署galera 多主架構 (galera集群多用於關鍵性業務,因為galera集群為了數據的一致性,采用的是同步的機制,這就使galera犧牲了一部分性能來換取數據一致性。)
環境准備:三台服務器
master:192.168.206.3
master1:192.168.206.5
master2:192.168.206.6
yum配置
操作系統:CentOS7.3
數據庫版本:MariaDB-10.3.7
1>yum配置,(三端數據庫信息保持一致)
[mariadb]
name=MariaDB
baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
2>關閉防火牆
3>三個主機都要互相解析
vim /etc/hosts
4>主節點編輯配置文件
vim /etc/my.cnf.d/server.cnf
在 [ galera ] 下面
wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so #galera的庫文件的地址
wsrep_cluster_address="gcomm://192.168.206.3,192.168.206.5,192.168.206.6" #各節點的ip
wsrep_node_name=node1 #節點主機名
wsrep_node_address=192.168.206.3 #節點ip
binlog_format=row #二進制日志設置為行模式 row (安全性最高,性能最低)
default_storage_engine=InnoDB #使用的默認引擎 innoDB 支持事務
innodb_autoinc_lock_mode=2 #2為性能最好
wsrep_slave_threads=1 #並發線程數
innodb_flush_log_at_trx_commit=0 #0.log buffer將每秒一次地寫入log file中,並且log file的flush(刷到磁盤)操作同時進行。該模式下在
事務提交的時候,不會主動觸發寫入磁盤的操作,#1:每次事務提交時MySQL都會把log buffer的數據寫入log file,並且flush(刷到磁盤)中去,該 模式為系統默 認。
#2:每次事務提交時MySQL都會把log buffer的數據寫入log file,但是flush(刷到磁盤)操作並不會同
時進行。該模式下,MySQL會每秒執行一次 flush(刷到磁盤)操作
innodb_buffer_pool_size=120M #設置緩存池大小
wsrep_sst_method=rsync #遠程同步
wsrep_causal_reads=ON #避免各個節點的數據不一致,這種情況需要等待全同步復制 將此文件復制到master1、master2,注意要把 wsrep_node_name 和 wsrep_node_address 改成相應 節點的 hostname 和 ip。
注:graler 集群最好至少三個,兩個的話。如果出現網絡波動可能會出現腦裂;
三端都需要配置
5>第一次啟動需要初始化
&1
mysqld_safe--wsrep_cluster_address=gcomm://192.168.206.3,192.168.206.5,192.168.206.6
這里會hang住 ,等他執行一段時間就好,
&2 執行 /bin/galera_new_cluster
6>另外兩端啟動數據庫
service mariadb restart
7>查看集群狀態(進程和端口)(查看wsrep 狀態也可以)
確保 wsrep 端口 :4567 與 mariadb端口: 3306 打開
&show status like ‘wsrep%'
8>測試
&master端
&master1端
&master2端
同步成功!
注: 若三台主機 關機了,再起就起不來了。
執行以下操作
vim /var/lib/mysql/grastate.dat
把safe_to_bootstrap更改為1
# GALERA saved state
version: 2.1 uuid: a393feef-f639-11e8-9b89-4e75f9b8fb0f
seqno: -1
safe_to_bootstrap: 1