您好,登錄后才能下訂單哦!
如何部署MySQL-MMM高可用群集,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
MMM(Master-Master replication manager for MySQL)是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)復制,雖然叫做雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一臺備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個slave的read負載均衡。
MMM提供了自動和手動兩種方式移除一組服務器中復制延遲較高的服務器的虛擬ip,同時它還可以備份數據,實現兩節點之間的數據同步等。由于MMM無法完全的保證數據一致性,所以MMM適用于對數據的一致性要求不是很高,但是又想最大程度的保證業務可用性的場景。對于那些對數據的一致性要求很高的業務,非常不建議采用MMM這種高可用架構。
搭建mysql高可用群集
在5臺服務器上關閉防火墻,安全性
setenforce 0
systemctl stop firewalld.service
一、master01、master02、slave01、slave02、monitor 5臺mysql服務器配置
1.配置all云源(yum源)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo`
2.配置epel源(最新版本)
yum -y install epel-release
3.加載元數據緩存
yum clean all && yum makecache`
4.安裝mariadb數據庫和mysql-mmm軟件包
yum install mariadb-sever mariadb mysql-mmm* -y
5.修改mariadb數據庫主配置文件
vim /etc/my.cnf
[mysqld]
log_error=/var/lib/mysql/mysql.err #錯誤日志
log=/var/lib/mysql/mysql_log.log #訪問日志
log_slow_queries=/var/lib/mysql_slow_queris.log #慢日志
binlog-ignore-db=mysql,information_schema #不生成二進制日志文件
character_set_server=utf8 #字符集
log_bin=mysql_bin #開啟二進制文件
server_id=1 #id號是唯一的
log_slave_updates=true #同步開啟
sync_binlog=1 #同步二進制日志,1設為安全值
auto_increment_increment=2 #自增列,起點為1,增量為2
auto_increment_offset=1備注:分別修改master02、slave01、slave02的配置文件server_id參數
6.啟動mariadb 服務
systemctl enable mariadb #開機自啟動mariadb systemctl start mariadb.service #啟動mariadb 服務
二、主、主復制(主服務器之間相互復制)
1.登錄mariadb,在主服務器master1上授權
mysql grant replication slave on *.* to 'replication'@'192.168.65.%' identified by '123456';
2.在master1上指定master2的日志和位置參數
change master to master_host='192.168.65.142',master_user='replication',master_password ='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
3.開啟同步start slave;
4.在主服務器master2上授權
mysql grant replication slave on *.* to 'replication'@'192.168.65.%' identified by '123456';
5.在master2上指定master1的日志和位置參數
change master to master_host='192.168.65.159',master_user='replication',master_password='123456', master_log_file='mysql_bin.000003',master_log_pos=245;
6.開啟同步
start slave; show slave status\G
7.從服務器同步主(兩臺從服務器都指向同一臺主服務器)
兩臺從服務器同樣操作:
mysql change master to master_host='192.168.65.159',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;(# 注意主服務器位置參數變化) start slave; #開啟同步
8.測試:四臺全部同步
三、配置mysql-MMM服務器(5臺服務器都配置)
1.編輯mysql-mmm的配置文件
vim mmm_common.conf #所有主機都要配置,復制 <host default> cluster_interface ens33 #修改網卡為ens33 pid_path /run/mysql-mmm-agent.pid bin_path /usr/libexec/mysql-mmm/ replication_user replicantion replication_password 123456 #修改Mariadb給予權限的用戶密碼 agent_user mmm_agent agent_password 123456 #修改agent客戶端代理用戶密碼 </host> <host db1> #指定第一個數據庫 ip 192.168.65.159 #指定IP地址 mode master #模式為主服務器 peer db2 #與db2互為切換 </host> <host db2> #指定第二個數據庫 ip 192.168.65.142 #指定IP地址 mode master #模式為主服務器 peer db1 #與db1互為切換 </host> <host db3> #指定第二個數據庫 ip 192.168.65.165 #指定IP地址 mode slave #模式為從服務器 </host> <host db4> #指定第二個數據庫 ip 192.168.65.152 #指定IP地址 mode slave #模式為從服務器 </host> <role writer> #指定寫入服務器 hosts db1, db2 #指定db1,db2為寫入服務器 ips 192.168.65.100 #指定寫入虛擬ip地址 mode exclusive #模式為單獨的(只能有一個) </role> <role reader> #指定讀取服務器 hosts db3, db4 #指定db1,db2為寫入服務器 ips 192.168.65.101, 192.168.100.65.102 #指定讀取虛擬ip地址 mode balanced #模式為負載均衡,讀取操作會從db3、db4主機進行
2.將配置文件傳輸到其它4臺數據庫服務器上
scp mmm_common.conf root@192.168.65.142:/etc/mysql-mmm/ scp mmm_common.conf root@192.168.65.152:/etc/mysql-mmm/ scp mmm_common.conf root@192.168.65.165:/etc/mysql-mmm/ scp mmm_common.conf root@192.168.65.164:/etc/mysql-mmm/
備注:一定要去其它4臺服務器上確認已修改!
3.monitor配置
cd /etc/mysql-mmm/ vim mmm_mon.conf #改密碼 ping_ips 192.168.65.159,192.168.65.142,192.168.65.152,192.168.65.165 auto_set_online 10 #修改為10,表示10秒鐘上線 ...... 省略部分內容 <host default> monitor_user mmm_monitor #監控機用戶名 monitor_password 123456 #修改密碼 </host>
4.在所有數據庫上為mmm_agent授權grant super,replication client,process on *.* to 'mmm_agent'@'192.168.65.%' identified by '123456';
6在所有數據庫上為mmm_monitor授權
grant replication client on *.* to 'mmm_monitor'@'192.168.65.%' identified by '123456'; flush privileges; #刷新生效
7.在4臺數據庫上分別修改mmm_agent.conf
vim mmm_agent.conf this is db1/2/3/4 #在4臺數據庫分別修改
8啟動mysql-mmm-agent
systemctl restart mysql-mmm-agent.service systemctl enable mysql-mmm-agent.service
9.啟動mysql-mmm-monitorsystemctl start mysql-mmm-monitor.service #啟動服務
10.檢查所有選項
mmm_control show #查看各節點情況 mmm_control checks all
11.可以手動切換主服務器
mmm_control move_role writer db2
四、模擬故障
1.先停止db1,db3systemctl stop mariadb
2.再查看mysql-mmm服務器狀態mmm_control show
3.恢復db1,db3上線
4.再查看mysql-mmm服務器狀態mmm_control show
5.當db1服務器恢復后,并不會搶占vip地址,而是作為備用機在等待著,
當db2下線后,再次查看
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。