部署雙節點雙主數據庫服務器mysql
分別在二台服務器上安裝mysql,要求同版本或主服務器比從服務器版本高。
主機mysql配置:
Vi /etc/my.cnf
[mysqld]
Log-bin=mysql-bin
Server-id=1
Service mysqld restart
Mysql –uroot –p
從mysql配置:
Vi /etc/my.cnf
[mysqld]
Log-bin=mysql-bin
Server-id=2
然后從主mysql導出數據,mysql –uroot –p dump –single-transaction *** > ***.sql
導入到從mysql數據庫:mysql –uroot –p *** < ***.sql(***表示數據庫名)
從服務器:
可能遇到的問題:log-bin一定不是log_bin,並且位置在[mysqld]的里面。否則日志不能正常開啟。
主服務器:
測試:
以下為部署keepalived雙主高可用:
二個服務器IP10.16.37.101,10.16.37.94,一個VIP10.16.37.200。
安裝keepalived:
下載keepalived-1.2.23.tar.gz
tar –xvf keepalived-1.2.23.tar.gz –C /opt
cd /opt/keepalived-1.2.23/
./configure prefix=/usr/local/keepalived
make & make install
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/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/
vi /etc/keepalived/keepalived.conf
主配置:(10.16.37.101)
! Configuration File for keepalived
global_defs {
notification_email {
627885927@qq.com #通知郵箱
}
notification_email_from 627885927@qq.com
smtp_server 127.0.0.1 #表示發送email時使用的smtp服務器地址,這里可以用本地的sendmail來實現
smtp_connect_timeout 30 #連接smtp超時時間
router_id MySQL-ha #一般為主機名
}
vrrp_instance VI_1 {
state BACKUP #都為BACKUP
interface eth0
virtual_router_id 51
priority 100 #權限100
advert_int 1
nopreempt #不搶占
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.16.37.200 #虛擬IP地址,即VIP
}
}
virtual_server 10.16.37.200 3306 { #監控端口及配置
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 10.16.37.101 3306 { #真實IP地址
weight 3
notify_down /usr/local/MySQL/bin/MySQL.sh #宕機腳本
TCP_CHECK {
connect_timeout 3
connect_port 3306
}
}
}
從配置:(10.16.37.94)
! Configuration File for keepalived
global_defs {
notification_email {
627885927@qq.com #通知郵箱
}
notification_email_from 627885927@qq.com
smtp_server 127.0.0.1 #表示發送email時使用的smtp服務器地址,這里可以用本地的sendmail來實現
smtp_connect_timeout 30 #連接smtp超時時間
router_id Nginx-ha #一般為主機名
}
vrrp_instance VI_1 {
state BACKUP #都為BACKUP
interface eth0
virtual_router_id 51
priority 90 #權限90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.16.37.200 #虛擬IP地址,即VIP
}
}
virtual_server 10.16.37.200 3306 { #監控端口及配置
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 10.16.37.94 3306 { #真實IP地址
weight 3
notify_down /usr/local/MySQL/bin/MySQL.sh #宕機腳本
TCP_CHECK {
connect_timeout 3
connect_port 3306
}
}
}
vi /usr/local/MySQL/bin/MySQL.sh
#!/bin/bash
pkill keepalived
# chmod +x /usr/local/MySQL/bin/MySQL.sh
測試:關閉一台服務器mysql,ps aux | grep keepalved查看keepalived是否自動關閉。注意防火牆和selinux的關閉!!