1)、在兩臺機子上面分別安裝 mysql , keepalived mysql
2)、算法
keepalived 主從:sql
主:vim /etc/keepalived/keepalived.confvim
vrrp_instance VI_1 {bash
state BACKUP # 備用用 BACKUP服務器
interface eth2 #用的是哪一個網卡session
virtual_router_id 59 #虛擬路由地址必須同樣,才能配置成一個組負載均衡
priority 100 # 備用用 90ide
advert_int 1 #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒oop
nopreempt
authentication {
auth_type PASS #(密碼形式)
auth_pass 1111
}
virtual_ipaddress {
192.168.32.100
}
notify_master "/bin/bash -x /usr/local/sbin/modify_master.sh 2>&1 | tee /tmp/modi.txt"
#notify_master "/bin/echo master >> /etc/keepalived/temp.txt"
}
virtual_server 192.168.32.100 3306 {
delay_loop 6 #每隔6s 查詢 realserver 狀態
lb_algo rr #lvs 算法
lb_kind NAT #Direct Route
persistence_timeout 60 #會話保持時間,單位是秒(能夠適當延長時間以保持session)
protocol TCP # 用 TCP協議檢查 realserver 狀態
real_server 192.168.32.79 3306 {
weight 1
notify_down /usr/local/sbin/keepalived.sh
TCP_CHECK {
connect_timeout 10 #10s 無響應超時
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
從:vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP # 備用用 BACKUP
interface eth2 #用的是哪一個網卡
virtual_router_id 59 #虛擬路由地址必須同樣,才能配置成一個組
priority 90 # 備用用 90
advert_int 1 #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
nopreempt
authentication {
auth_type PASS #(密碼形式)
auth_pass 1111
}
virtual_ipaddress {
192.168.32.100
}
notify_master "/bin/bash -x /usr/local/sbin/modify_master.sh 2>&1 | tee /tmp/modi.txt"
#notify_master "/bin/echo master >> /etc/keepalived/temp.txt"
}
virtual_server 192.168.32.100 3306 {
delay_loop 2 #每隔2s 查詢 realserver 狀態
lb_algo rr #lvs 算法
lb_kind NAT #Direct Route
persistence_timeout 60 #會話保持時間,單位是秒(能夠適當延長時間以保持session)
protocol TCP # 用 TCP協議檢查 realserver 狀態
real_server 192.168.32.87 3306 {
weight 1
notify_down /usr/local/sbin/keepalived.sh
TCP_CHECK {
connect_timeout 10 #10s 無響應超時
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
其中主從 keepalived.sh:
#!/bin/bash
service keepalived restart
service mysql start
主從modify_master.sh:
#!/bin/bash
/usr/local/mysql/bin/mysql -uroot -p1234567 -e 'set global read_only=0;'
/usr/local/mysql/bin/mysql -uroot -h 192.168.32.87 -p1234567 -e 'set global read_only=1;' (其中 -h 後面主機要麼空格,要麼加引號,從修改成:192.168.32.79)
mysql 主從 (需搭建互爲主從):
主服務器:
server_id = 1
log-bin=aming
binlog-do-db=db1,db2 (binlog-ignore-db=mysql)
指定權限:
>grant replication slave on *.* to 'repl'@'192.168.32.87' identified by '1234567';
>flush privileges;
>flush tables with read lock; (unlock tables;)
查看主服務器狀態:
>show master status;
從服務器:
server_id = 11
replicate-do-db = db1; (replicate-ignore-db=mysql)
接下去把主服務器的數據拷貝到從服務器中
> stop slave;
> change master to master_host='192.168.32.79', master_port=3306,master_user='repl',master_password='1234567',
> master_log_file='aming.00001',master_log_pos=106; (主服務器中 show master status 看到的數據)
> start slave;
注:配置完以後須要重啓,其中是否成功主從須要查看 從服務器中 show slave status 中的 SLAVE-IO-RUNNING 跟 SLAVE-SQL-RUNNING,而且查看 LAST-IO-ERROR 跟 Last_SQL_Error中是否報錯
mysql 設置只讀:
1) flush tables with read lock; (退出終端失效)
2) set global read_only=1; 這個擁有super權限的仍然能夠寫操做
3) grant select....權限
當用 keepalived 進行主從配置的時候,應用那邊需配置 keepalived 的 VIP 地址。