Mysql-MMM高可用羣集

MMM簡介:
MMM即Master-Master Replication Manager for MySQL(mysql主主複製管理器)關於mysql主主複製配置的監控、故障轉移和管理的一套可伸縮的腳本套件(在任何時候只有一個節點可以被寫入),這個套件也能對居於標準的主從配置的任意數量的從服務器進行讀負載均衡,所以你可以用它來在一組居於複製的服務器啓動虛擬ip,除此之外,它還有實現數據備份、節點之間重新同步功能的腳本。
MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實現服務器的故障轉移,從而實現mysql的高可用。

Mmm高可用架構說明 :

mmm_mon   負責所有的監控工作的監控守護進程,決定節點的移除等等
mmm_agent    運行在mysql服務器上的代理守護進程,通過簡單遠程服務集提供給監 控節點
mmm_control  通過命令行管理mmm_mond進程
mysql-mmm 監管端會提供多個虛擬IP,包括一個可寫,多個可讀,這些IP會綁定在可用mysql上,當一臺發生宕機時,監管會將VIP遷移至其他mysql上
實驗拓撲:
Mysql-MMM高可用羣集
實驗環境

主機 操作系統 IP地址 虛擬IP
mysql- master1(db1) CentOS-7-x86_64 192.168.37.128 192.168.37.150
mysql- master2(db2) CentOS-7-x86_64 192.168.37.130 192.168.37.150
mysql- slave1(db3) CentOS-7-x86_64 192.168.37.131 192.168.37.160
mysql- slave2(db4) CentOS-7-x86_64 192.168.37.132 192.168.37.160
monitor CentOS-7-x86_64 192.168.37.1326 ---

實驗過程:
一、主從服務器安裝mariadb
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

yum install mariadb-sever mariadb -y

5、關閉防火牆、安全功能

systemctl stop firewalld.service
setenforce 0

二、修改配置文件
6、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 #mysql,information_schema 不生成二進制日誌文件
character_set_server=utf8 #字符集
log_bin=mysql_bin #開啓二進制文件
server_id=1 #進行修改
log_slave_updates=true #同步開啓
sync_binlog=1 #同步二進制日誌,1設爲安全值
auto_increment_increment=2 #自增列,起點爲1,增量爲2
auto_increment_offset=1

7、配置文件複製到其他三臺服務器

scp /etc/my.cnf [email protected]:/etc/
scp /etc/my.cnf [email protected]:/etc/
scp /etc/my.cnf [email protected]:/etc/
#複製時需要輸入對方的root密碼,並修改其他三臺服務器的server-id

8、開啓mariadb服務

systemctl start mariadb.service

三、主服務器授權同步
9、在master1上授權

grant replication slave on . to 'replication'@'192.168.37.%' identified by '123456';
show master status; #查看master2 的日誌及位置參數

Mysql-MMM高可用羣集

change master to master_host='192.168.37.130',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
start slave; #開啓同步
show slave status\G ; #查看master1同步情況

Mysql-MMM高可用羣集

10、在master2上授權

grant replication slave on . to 'replication'@'192.168.37.%' identified by '123456';
show master status; #查看master1的日誌及位置參數

Mysql-MMM高可用羣集

change master to master_host='192.168.37.128',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=410;
start slave; #開啓同步
show slave status\G ; #查看master2同步情況

Mysql-MMM高可用羣集
四、從服務器同步主服務器
11、兩臺從服務器執行同樣操作:

change master to master_host='192.168.37.128',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=410;
#注意要同步的主服務器的日誌及位置參數變化,使用最新的。

Mysql-MMM高可用羣集
Mysql-MMM高可用羣集
12、測試四臺服務器同步:在master1中新建數據庫school,查看其它服務器是否也存在數據庫school
Mysql-MMM高可用羣集
Mysql-MMM高可用羣集
測試成功!
五、安裝MMM高羣集(四臺服務器)
13、yum安裝mmm

yum install mysql-mmm* -y

14、編輯配置文件

vim /etc/mysql-mmm/mmm_common.conf

<host default>

cluster_interface ens33 #網卡
pid_path /run/mysql-mmm-agent.pid
bin_path /usr/libexec/mysql-mmm/
replication_user replication #授權的mysql用戶
replication_password 123456 #授權用戶密碼
agent_user mmm_agent #代理用戶
agent_password 123456
</host>
<host db1>
ip 192.168.37.128
mode master
peer db2
</host>

<host db2>
ip 192.168.37.130
mode master
peer db1
</host>

<host db3>
ip 192.168.37.131
mode slave
</host>

<host db4>
ip 192.168.37.132
mode slave
</host>

<role writer>
hosts db1, db2
ips 192.168.37.150
mode exclusive
</role>

<role reader>
hosts db3, db4
ips 192.168.37.160, 192.168.100.37.170
mode balanced

15、然後將配置複製給其它服務器,複製完回車後,輸入對方root密碼

scp mmm_common.conf [email protected]:/etc/mysql-mmm/
scp mmm_common.conf [email protected]:/etc/mysql-mmm/
scp mmm_common.conf [email protected]:/etc/mysql-mmm/

六、安裝monitor
16、配置ALL源(yum源):

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

17、配置epel源

yum -y install epel-release

18、加載元數據緩存

yum clean all && yum makecache

19、yum安裝mmm

yum install mysql-mmm* -y

20、在master1上覆制給monitor

scp mmm_common.conf [email protected]:/etc/mysql-mmm/

21、編輯配置文件

vim /etc/mysql-mmm/ mmm_mon.conf

Mysql-MMM高可用羣集

22、在所有數據庫上爲mmm_agent授權

grant super,replication client,process on . to 'mmm_agent'@'192.168.37.%' identified by '123456';

23、在所有數據庫上爲mmm_monitor授權

grant replication client on . to 'mmm_monitor'@'192.168.37.%' identified by '123456';
flush privileges; #授權後刷新權限

Mysql-MMM高可用羣集
24、在所有服務器上修改mmm_agent.conf

vim /etc/mysql-mmm/mmm_agent.conf
this is db1/2/3/4

25、在所有服務器上啓動mysql-mmm-agent

systemctl start mysql-mmm-agent.service #開啓服務
systemctl enable mysql-mmm-agent.service #開機自啓動

26、在monitor上啓動監控服務

systemctl start mysql-mmm-monitor.service
systemctl stop firewalld.service
setenforce 0

27、查看各節點情況

mmm_control show
#如果不能連接 在master1上執行 mysql>flush privileges;

Mysql-MMM高可用羣集

28、虛擬IP手動切換

mmm_control move_role writer db2 #虛擬IP轉給db2

Mysql-MMM高可用羣集

29、故障測試:
1)斷掉主服務器sdb1,則虛擬IP會漂移到主服務器sdb2,但是如果sdb1恢復,不會搶佔,只可以手動切換。
Mysql-MMM高可用羣集

2)斷掉從服務器sdb3,則虛擬IP會漂移到從服務器sdb4,如果sdb3恢復,則重新搶佔。
Mysql-MMM高可用羣集

這樣,如果其中一臺主服務器或者從服務器宕機,虛擬IP會漂移到另一臺可用的服務器上,從而實現高可用羣集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章