MySQL之——基于Keepalived實現雙機HA

1、環境描述:

??? os:centos6.5_x64
??? master:192.168.0.202
??? backup:192.168.0.203
??? vip:192.168.0.204

2、配置兩臺Mysql主主同步

關于MySQL的安裝大家也可以參考《?MySQL之——CentOS6.5 編譯安裝mysql5.6.16?》,主主同步在主從同步的基礎上將從服務器配置為之前主服務器的Master,相當于在原來主從同步的基礎上,將原來的Slave設置為了原來Master的Master,大家也可以參考《MySQL之——MS主從復制(讀寫分離)實現》 ,設置A為B的Master,B為A的Slave后,然后再將B設置為A的Master,A設置為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??#開啟二進制日志,設置id??  [mysqld]??  server-id?=?1????????????????????#backup這臺設置2??  log-bin?=?mysql-bin??  binlog-ignore-db?=?mysql,information_schema???????#忽略寫入binlog日志的庫??  auto-increment-increment?=?2?????????????#字段變化增量值??  auto-increment-offset?=?1??????????????#初始字段ID為1??  slave-skip-errors?=?all???????????????????????#忽略所有復制產生的錯誤???????  [root@masterr?~]#?service?mysqld?restart

#先查看下log bin日志和pos值位置

MySQL之——基于Keepalived實現雙機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;??#對端狀態顯示的值??  mysql>?start??slave;?????????#啟動同步

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;

#主主同步配置完畢,查看同步狀態Slave_IO和Slave_SQL是YES說明主主同步成功。

MySQL之——基于Keepalived實現雙機HA

在master插入數據測試下:

MySQL之——基于Keepalived實現雙機HA

在backup查看是否同步成功:

MySQL之——基于Keepalived實現雙機HA

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

3、配置keepalived實現熱備

[root@backup?~]#?yum?install?-y?pcre-devel?openssl-devel?popt-devel?#安裝依賴包
[root@masterr?~]#?wget?http://www.keepalived.org/software/keepalived-1.2.7.tar.gz??  [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配置成系統服務

[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??????#標識,雙主相同??  ?}??  vrrp_instance?VI_1?{??  ?state?BACKUP???????????#兩臺都設置BACKUP??  ?interface?eth0??  ?virtual_router_id?51???????#主備相同??  ?priority?100???????????#優先級,backup設置90??  ?advert_int?1??  ?nopreempt?????????????#不主動搶占資源,只在master這臺優先級高的設置,backup不設置??  ?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算法,用不到,我們就關閉了??  ?#lb_kind?DR??????????????#LVS模式,如果不關閉,備用服務器不能通過VIP連接主MySQL??  ?persistence_timeout?50??#同一IP的連接60秒內被分配到同一臺真實服務器??  ?protocol?TCP??  ?real_server?192.168.0.202?3306?{???#檢測本地mysql,backup也要寫檢測本地mysql??  ?weight?3??  ?notify_down?/usr/local/keepalived/mysql.sh????#當mysq服down時,執行此腳本,殺死keepalived實現切換??  ?TCP_CHECK?{??  ?connect_timeout?3????#連接超時??  ?nb_get_retry?3???????#重試次數??  ?delay_before_retry?3?#重試間隔時間??  ??}??  }
[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服務器只修改priority為90、nopreempt不設置、real_server設置本地IP。

#授權兩臺Mysql服務器允許root遠程登錄,用于在其他服務器登陸測試!

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

4、測試高可用性

1)通過Mysql客戶端通過VIP連接,看是否連接成功。
2)停止master這臺mysql服務,是否能正常切換過去,可通過ip addr命令來查看VIP在哪臺服務器上。

MySQL之——基于Keepalived實現雙機HA

3)可通過查看/var/log/messges日志,看出主備切換過程
4)master服務器故障恢復后,是否主動搶占資源,成為活動服務器。
注意:服務啟動的順序:先啟動MySQL,后啟動Keepalived。

以上就是MySQL之——基于Keepalived實現雙機HA的內容,更多相關內容請關注PHP中文網(www.php.cn)!

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享