Keepalived+Mysql互爲主從高可用安裝配置
環境介紹:
keepalived_vip=192.168.1.210 (寫虛擬ip)
mysql_master01 eth0:192.168.1.211 eth1:172.20.27.211 (1核1G)
mysql_master02 eth0:192.168.1.212 eth1:172.20.27.212 (1核1G)
1.安裝mysql數據庫(所有節點安裝)
//此處省略安裝mysql服務
2.編輯my.cnf配置文件
2.1修改mysql_master01配置文件
vim /usr/local/lnmp/mysql/etc/my.cnf
server_id = 211 log-bin=mysql-bin log-slave-updates
2.2修改mysql_master02配置文件
vim /usr/local/lnmp/mysql/etc/my.cnf
server_id = 212 log-bin=mysql-bin log-slave-updates
3.搭建互爲主從
3.1在mysql_master01上面操作
3.1.1爲mysql_master02建立主從同步權限
mysql -u root -p123456 //進入數據庫 grant replication slave on *.* to 'backup'@'192.168.1.212' identified by 'backup'; //建立權限 flush privileges; //刷新權限表
3.1.2拷貝數據到mysql_master02節點
mysql -u root -p123456 //進入數據庫 flush tables with read lock; //鎖表,準備備份數據 mysql> show master status\G //查看主節點信息 *************************** 1. row *************************** File: mysql-bin.000005 Position: 1231 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec) mysqldump -u root -p123456 liu >liu.sql //備份liu這個數據庫 mysql -u root -p123456 //進入數據庫 unlock tables; //解鎖 scp liu.sql [email protected]:/root/ //拷貝數據
3.2在mysql_master02上面操作
3.2.1恢復liu.sql到數據庫
mysql -u root -p123456 //進入數據庫 create database test; //創建恢復的數據庫名 use test; //進入數據庫 source /root/test.sql //恢復數
3.2.2建立主從同步關係
mysql -u root -p123456 //進入數據庫 change master to master_host='192.168.1.211',master_user='backup',master_password='backup',master_log_file='mysql-bin.000005',master_log_pos=1231; //建立主從同步關係 start slave; //啓動從庫同步 show slave status\G //檢查主從同步,如果您看到Slave_IO_Running和Slave_SQL_Running均爲Yes,則主從複製連接正常。
3.2.3爲mysql_master01建立主從同步權限
mysql -u root -p123456 //進入數據庫 grant replication slave on *.* to 'backup'@'192.168.1.211' identified by 'backup'; //建立權限 flush privileges; //刷新權限表 mysql> show master status\G //查看主節點信息 *************************** 1. row *************************** File: mysql-bin.000004 Position: 1242 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)
4.安裝keepalived(所有節點都安裝)
4.1安裝配置keepalived
wget http://www.keepalived.org/software/keepalived-1.2.15.tar.gz tar zxvf keepalived-1.2.15.tar.gz cd keepalived-1.2.15 ./configure --prefix=/usr/local/keepalived make && make install
4.2將keepalived配置成系統服務
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ mkdir /etc/keepalived/ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
4.3修改keepalived配置文件
4.3.1修改mysql_master01的keepalived配置文件
echo '' >/etc/keepalived/keepalived.conf //清空配置文件,自己寫 vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { [email protected] } notification_email_from [email protected] 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 #優先級,另一臺改爲90 advert_int 1 nopreempt #不搶佔,只在優先級高的機器上設置即可,優先級低的機器不設置 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.210 } } virtual_server 192.168.1.210 3306 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 50 #會話保持時間 protocol TCP real_server 192.168.1.211 3306 { weight 3 notify_down /usr/local/lnmp/mysql/bin/killkeepalived.sh #檢測到mysql服務掛了就執行這個腳本 TCP_CHECK { connect_timeout 10 #連接超時時間 nb_get_retry 3 #重連次數 delay_before_retry 3 #重連間隔時間 connect_port 3306 #健康檢查端口 } } }
4.3.2修改mysql_master02的keepalived配置文件
echo '' >/etc/keepalived/keepalived.conf //清空配置文件,自己寫 vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id MySQL-ha } vrrp_instance VI_1 { state backup interface eth0 virtual_router_id 51 priority 90 advert_int 1 nopreempt authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.210 } } virtual_server 192.168.1.210 3306 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.1.212 3306 { weight 3 notify_down /usr/local/lnmp/mysql/bin/killkeepalived.sh TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } }
4.4編寫killkeepalived.sh(所有節點安裝)
vim /usr/local/lnmp/mysql/bin/killkeepalived.sh #!/bin/sh pkill keepalived chmod +x /usr/local/lnmp/mysql/bin/killkeepalived.sh
4.5 啓動keepalived(所有節點安裝)
service keepalived restart echo 'service keepalived start' >>/etc/rc.local
5.測試數據庫高可用
5.1爲測試用戶建立權限
grant all privileges on *.* to 'liuzhuang'@'%' identified by '123'; flush privileges; //刷新權限表
5.2模擬故障,看是否關閉一臺mysql服務,vip會自動切換,如果會,說明環境正常