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值位置
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ō)明主主同步成功。
在masterMysql測(cè)試下:
在backup查看是否同步成功:
可以看到已經(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ù)器上。
3)可通過查看/var/log/messges日志,看出主備切換過程
4)master服務(wù)器故障恢復(fù)后,是否主動(dòng)搶占資源,成為活動(dòng)服務(wù)器。
注意:服務(wù)啟動(dòng)的順序:先啟動(dòng)MySQL,后啟動(dòng)Keepalived。