Keepalived 监控 mysql 主从切换
2016-01-11 14:20
531 查看
1)、在两台机子上面分别安装 mysql , keepalived
2)、
keepalived 主从:
主:vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP # 备用用 BACKUP
interface eth2 #用的是哪个网卡
virtual_router_id 59 #虚拟路由地址必须一样,才能配置成一个组
priority 100 # 备用用 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 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 地址。
2)、
keepalived 主从:
主:vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP # 备用用 BACKUP
interface eth2 #用的是哪个网卡
virtual_router_id 59 #虚拟路由地址必须一样,才能配置成一个组
priority 100 # 备用用 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 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 地址。
相关文章推荐
- sqlserver巧用row_number和partition by分组取top数据
- HBase概述
- 【转】plsql developer远程连接oracle数据库
- Zabbix错误提示MySQL server has gone away解决
- Oracle维护常用SQL语句(查询系统表和视图)
- 第四次实验:安装配置sqoop-1.4.6并与mySQL连接
- 【mysql】使用tpcc-mysql进行压力测试
- PLSQL Developer的配置方法
- PL/SQL Developer固定左侧窗口列表的方法
- golang连接mysql
- MSSQL SQLServer2008再次安装发生异常:.Configuration.LandingPage.Properties.Settings...
- PLSQL Developer 没有64位版本 + 找不到 msvcr71.dll
- (笔记)Mysql命令drop database:删除数据库
- 使用OUTPUT从句从SQL Server表删除和归档大量记录
- 使用OUTPUT从句从SQL Server表删除和归档大量记录
- CentOS7安装Sqoop2连接MySQL(Hadoop2.6,MySQL6.5,Sqoop1.99.6)
- django执行原始查询sql,并返回Dict字典
- PL/SQL Developer+Oracle 连接远端数据库
- Windows7 64位 plsql developer连接oracle最终解决方法
- 数据库SQLiteOpenHelper自创