MySQL之-基于Keepalived實(shí)現(xiàn)雙機(jī)HA詳解(圖文)

1、環(huán)境描述:

??? OS:CentOS6.5_X64
??? MASTER:192.168.0.202
??? BACKUP:192.168.0.203
??? VIP:192.168.0.204

2、配置兩臺(tái)Mysql主主同步

關(guān)于MySQL的安裝大家也可以參考《?MySQL之——CentOS6.5 編譯安裝mysql5.6.16 》,主主同步在主從同步的基礎(chǔ)上將從服務(wù)器配置為之前主服務(wù)器的Master,相當(dāng)于在原來(lái)主從同步的基礎(chǔ)上,將原來(lái)的Slave設(shè)置為了原來(lái)Master的Master,大家也可以參考《MySQL之——MS主從復(fù)制(讀寫分離)實(shí)現(xiàn)》 ,設(shè)置A為B的Master,B為A的Slave后,然后再將B設(shè)置為A的Master,A設(shè)置為B的Slave。

[root@masterr?~]#?yum?install?mysql-server?mysql?-y  [root@masterr?~]#?service?mysqld?start  [root@masterr?~]#?mysqladmin?-u?root?proot  [root@masterr?~]#?vi?/etc/my.cnf??#開啟二進(jìn)制日志,設(shè)置id  [mysqld]  server-id?=?1????????????????????#backup這臺(tái)設(shè)置2  log-bin?=?mysql-bin  binlog-ignore-db?=?mysql,information_schema???????#忽略寫入binlog日志的庫(kù)  auto-increment-increment?=?2?????????????#字段變化增量值  auto-increment-offset?=?1??????????????#初始字段ID為1  slave-skip-errors?=?all???????????????????????#忽略所有復(fù)制產(chǎn)生的錯(cuò)誤?????  [root@masterr?~]#?service?mysqld?restart

#先查看下log bin日志和pos值位置
MySQL之-基于Keepalived實(shí)現(xiàn)雙機(jī)HA詳解(圖文)

master配置如下:

[root@?master?~]#?mysql?-u?root?-proot  mysql>?GRANT??REPLICATION?SLAVE?ON?*.*?TO?'replication'@'192.168.0.%'?IDENTIFIED??BY?'replication';  mysql>?flush??privileges;  mysql>?change??master?to  ????->??master_host='192.168.0.203',  ????->??master_user='replication',  ????->??master_password='replication',  ????->??master_log_file='mysql-bin.000002',  ????->??master_log_pos=106;??#對(duì)端狀態(tài)顯示的值  mysql>?start??slave;?????????#啟動(dòng)同步

backup配置如下:

[root@backup?~]#??mysql?-u?root?-proot  mysql>?GRANT??REPLICATION?SLAVE?ON?*.*?TO?'replication'@'192.168.0.%'?IDENTIFIED??BY?'replication';  mysql>?flush??privileges;  mysql>?change??master?to  ????->??master_host='192.168.0.202',  ????->??master_user='replication',  ????->??master_password='replication',  ????->??master_log_file='mysql-bin.000002',  ????->??master_log_pos=106;  mysql>?start??slave;

#主主同步配置完畢,查看同步狀態(tài)Slave_IO和Slave_SQL是YES說(shuō)明主主同步成功。
MySQL之-基于Keepalived實(shí)現(xiàn)雙機(jī)HA詳解(圖文)

在masterMysql測(cè)試下:

MySQL之-基于Keepalived實(shí)現(xiàn)雙機(jī)HA詳解(圖文)

在backup查看是否同步成功:

MySQL之-基于Keepalived實(shí)現(xiàn)雙機(jī)HA詳解(圖文)

可以看到已經(jīng)成功同步過去,同樣在backup插入到user表數(shù)據(jù),一樣同步過去,雙主就做成功了。

3、配置keepalived實(shí)現(xiàn)熱備

[root@backup?~]#?yum?install?-y?pcre-devel?openssl-devel?popt-devel?#安裝依賴包
[root@masterr?~]#?wget?http://www.php.cn/  [root@masterr?~]#?tar?zxvf?keepalived-1.2.7.tar.gz  [root@masterr?~]#?cd?keepalived-1.2.7  [root@masterr?~]#./configure?--prefix=/usr/local/keepalived  make

#將keepalived配置成系統(tǒng)服務(wù)

[root@masterr?~]#?cp?/usr/local/keepalived/etc/rc.d/init.d/keepalived?/etc/init.d/  [root@masterr?~]#?cp?/usr/local/keepalived/etc/sysconfig/keepalived?/etc/sysconfig/  [root@masterr?~]#?mkdir?/etc/keepalived/  [root@masterr?~]#?cp?/usr/local/keepalived/etc/keepalived/keepalived.conf?/etc/keepalived/  [root@masterr?~]#?cp?/usr/local/keepalived/sbin/keepalived?/usr/sbin/
[root@masterr?~]#?vi?/etc/keepalived/keepalived.conf  !?Configuration?File?forkeepalived  global_defs?{  notification_email?{  test@sina.com  ?}  notification_email_from??admin@test.com  smtp_server?127.0.0.1  smtp_connect_timeout?30  router_id?MYSQL_HA??????#標(biāo)識(shí),雙主相同  ?}  vrrp_instance?VI_1?{  ?state?BACKUP???????????#兩臺(tái)都設(shè)置BACKUP  ?interface?eth0  ?virtual_router_id?51???????#主備相同  ?priority?100???????????#優(yōu)先級(jí),backup設(shè)置90  ?advert_int?1  ?nopreempt?????????????#不主動(dòng)搶占資源,只在master這臺(tái)優(yōu)先級(jí)高的設(shè)置,backup不設(shè)置  ?authentication?{  ?auth_type?PASS  ?auth_pass?1111  ?}  ?virtual_ipaddress?{  ?192.168.0.204  ?}  }  virtual_server?192.168.0.204?3306?{  ?delay_loop?2  ?#lb_algo?rr??????????????#LVS算法,用不到,我們就關(guān)閉了  ?#lb_kind?DR??????????????#LVS模式,如果不關(guān)閉,備用服務(wù)器不能通過VIP連接主MySQL  ?persistence_timeout?50??#同一IP的連接60秒內(nèi)被分配到同一臺(tái)真實(shí)服務(wù)器  ?protocol?TCP  ?real_server?192.168.0.202?3306?{???#檢測(cè)本地mysql,backup也要寫檢測(cè)本地mysql  ?weight?3  ?notify_down?/usr/local/keepalived/mysql.sh????#當(dāng)mysq服down時(shí),執(zhí)行此腳本,殺死keepalived實(shí)現(xiàn)切換  ?TCP_CHECK?{  ?connect_timeout?3????#連接超時(shí)  ?nb_get_retry?3???????#重試次數(shù)  ?delay_before_retry?3?#重試間隔時(shí)間  ??}  }
[root@masterr?~]#?vi?/usr/local/keepalived/mysql.sh  #!/bin/bash  pkill?keepalived  [root@masterr?~]#?chmod?+x?/usr/local/keepalived/mysql.sh  [root@masterr?~]#?/etc/init.d/keepalived?start

#backup服務(wù)器只修改priority為90、nopreempt不設(shè)置、real_server設(shè)置本地IP。

#授權(quán)兩臺(tái)Mysql服務(wù)器允許root遠(yuǎn)程登錄,用于在其他服務(wù)器登陸測(cè)試!

mysql>?grant?all?on?*.*?to'root'@'192.168.0.%'?identified?by?'root';  mysql>?flush?privileges;

4、測(cè)試高可用性

1)通過Mysql客戶端通過VIP連接,看是否連接成功。
2)停止master這臺(tái)mysql服務(wù),是否能正常切換過去,可通過ip addr命令來(lái)查看VIP在哪臺(tái)服務(wù)器上。MySQL之-基于Keepalived實(shí)現(xiàn)雙機(jī)HA詳解(圖文)
3)可通過查看/var/log/messges日志,看出主備切換過程
4)master服務(wù)器故障恢復(fù)后,是否主動(dòng)搶占資源,成為活動(dòng)服務(wù)器。
注意:服務(wù)啟動(dòng)的順序:先啟動(dòng)MySQL,后啟動(dòng)Keepalived。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員