1. 程式人生 > >MySQL的主從復制+雙主模式

MySQL的主從復制+雙主模式

數據 io線程 msyql mysql- 關閉 cat ges enter 就是

MySQL的主從復制

部署環境:

MySQL master 192.168.40.21

MySQL slave 192.168.40.22

思路:

當主MySQL上進行數據上的操作或者變化時,主MySQL上的二進制日誌文件(binary log)會隨之產生變化,這時從MySQL上開啟I/O線程和sql線程;

I/O線程是對主MySQL上二進制日誌文件進行讀取,讀取到從MySQL的中繼日誌文件上(relay log)

sql線程是讀取和執行中繼日誌文件上數據,整過程就是實現主從復制的過程,實現後的效果是當主MySQL有變動,從的也會隨之同步變動,也可稱為主備模式

搭建主從:

搭建前提需要註意兩臺服務上的時間問題,時間上需要同步一致。如果不一致,可以一下操作:

主MySQL上安裝NTP

[root@6 ~]# yum -y install ntp

[root@6 ~]# vim /etc/ntp.conf

#手動添加

22 server 127.127.1.0
23 fudge 127.127.1.0 startum 8

重啟NTP

[root@6 ~]#chkconf ntpd on #開機啟動

在從MySQL上搭建時間同步,安裝ntpdate

[root@6 ~]# yum -y install ntpdate

[root@6 ~]# ntpdate 192.168.40.21

配置主MySQL服務器

[root@6 ~]# cat /etc/my.cnf

#手動添加在MySQLD下

log-bin=mysql-bin
log-slave-updates=true
server-id =11

[root@6 ~]#/etc/init.d/msyql restart

#進入MySQL裏,給從服務權限

mysql> grant replication slave on *.*to‘myslave‘@‘192.168.40.%‘identified by ‘123123‘;

mysql> flush privileges; #刷新授權表

mysql> show master status; #查看當前二進制文件

技術分享圖片

配置從MySQL服務器

  

[root@root ~]# vim /etc/my.cnf

relay-log=relay-log-bin

relay-log-index=slave-relay-bin.index
server-id =12 #id不能與主服務一樣

重新啟動MySQL並且進入

mysql> change master to

mysql> master_host=‘192.168.40.21‘,master_user=‘myslave‘,master_password=‘123123‘,master_log_file=‘mysql-bin.000036‘,master_log_pos=267;

mysql> start slave

mysql> show slave status\G;

技術分享圖片

圖片上前兩行yes代表IO線程和SQL線程都沒問題,現在來測試下!

在主MySQL上創建一個www庫

技術分享圖片

現在查看從MySQL的庫是否有變化

技術分享圖片

可以看出從MySQL已經實時更新數據了,出現了www庫!

MySQL雙主模式

搭建環境以及思路:

在上面的實驗環境的基礎上,反向搭建主從,也就是說在上一個實驗環境的基礎上在從上面做一個主,在主上做一個從,即一臺MySQL是另一臺的主也是從 ,然後再安裝keepalived進行高可用和故障切換

搭建過程:

在上一個案例的從上搭建一個主

其實,配置過程和之前案一樣,只不過是方向配置,過程就不寫這麽詳細了

修改配置文件/etc/my.cnf

#手動添加

log-bin=mysql-bin
log-slave-updates=true
server =20

重啟MySQL並進入給從服務權限

mysql> grant replication slave on *.*to‘myslave‘@‘192.168.40.%‘identified by‘123123‘;

mysql> flush privileges;

mysql> show master status;

技術分享圖片

在上個案例主上配置從

修改配置文件/etc/my.cnf

#手動添加

relay-log=relay-log-bin
relay-log-index=slave-bin.index
server-id =22

重啟服務並且登錄

mysql> change master to

mysql> master_host=‘192.168.40.22‘,master_user=‘myslave‘,master_password=‘123123‘,master_log_file=‘mysql-bin.000002‘,master_log_pos=501;

mysql> start slave

mysql> show slave status\G

技術分享圖片

雙主配置成功,現在需要編寫一個健康MySQL的腳本和安裝一個keepalived高可用軟件,因為之前做集群的時候已經安裝了,所以就不在安裝keepalived

腳本:

#!/bin/bash
#by:Dfengshuo
#檢測端口腳本
#檢測mysql 3306端口是否開啟,如果沒有開啟嘗試開啟
jc=`ps -C mysqld -no-header|wc -l`
if [ $jc -eq 0 ];then
/etc/init.d/mysqld restart
sleep 2
#如果mysql嘗試開啟失敗,那麽就關閉keepalived服務,進行vip飄移
jc2=`ps -C haproxy -no-header |wc -l`
if [ $jc -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi

技術分享圖片

[root@root ~]# scp mysql.sh 192.168.40.22:/root #把腳本發給192.168.40.22 root下

修改keepalived的配置文件

技術分享圖片

修改192.168.40.22上的keepalived配置文件,因剛剛把腳本發在root下了,所以不用在寫腳本了

技術分享圖片

配置完之後重啟keepalived服務查看vip是否存在

技術分享圖片

技術分享圖片

現在測試keepalived宕機後,vip是否飄移

技術分享圖片

技術分享圖片

由此可見,vip已經飄移到40.22上了,測試成功!!!

=====文中如有錯誤,歡迎指出!=====

MySQL的主從復制+雙主模式