使用一主一从master/slave;
来源:http://ju.outofmemory.cn/entry/26073,http://blog.csdn.net/xuejiazhi/article/details/8941156
1.KeepAlived+Mysql
Mysql VIP :192.168.1.11
Master1:192.168.1.82
Master:192.168.1.83
OS 环境:Cent OS 6.5
Mysql版本:Mysql-community 5.7
2.安装mysql,略,如有需要参考:http://wp.tanguu.com/2016/01/06/remiepel-%E7%9A%84yum-%E6%BA%90%E5%AE%89%E8%A3%85/
3.修改my.cnf配置
在两台要进行备份的mysql服务器上的my.cnf文件进行配置如下(将下面的配置分别加入相关服务器的my.cnf):注意按原作者是这样设置log-bin=/var/log/mysql/mysql-bin.log(创建该文件并chown mysql.mysql),结果本人这样做的时候mysql启动不了的情况,最后修改成如下配置:
Master1(192.168.1.82) |
Master(192.168.1.83) |
#主标服务标识号,必需唯一
server-id = 1 #因为MYSQL是基于二进制的日志来做同步的,每个日志文件大小为 1G log-bin=mysql-bin #要同步的库名 binlog-do-db = test #不记录日志的库,即不需要同步的库 binlog-ignore-db=mysql #用从属服务器上的日志功能 log-slave-updates #经过1日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。默认设置是n=0。 sync_binlog=1 # auto_increment,控制自增列AUTO_INCREMENT的行为,用于MASTER-MASTER之间的复制,防止出现重复值,auto_increment_increment=n有多少台服务器,n 就设置为多少,auto_increment_offset=1设置步长,这里设置为1,这样Master的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID auto_increment_offset=1 auto_increment_increment=2 #进行镜像处理的数据库 replicate-do-db = test #不进行镜像处理的数据库 replicate-ignore-db= mysql |
#主标服务标识号,必需唯一
server-id = 2 #因为MYSQL是基于二进制的日志来做同步的,每个日志文件大小为 1G log-bin=mysql-bin #要同步的库名 binlog-do-db = test #不记录日志的库,即不需要同步的库 binlog-ignore-db=mysql #用从属服务器上的日志功能 log-slave-updates #经过1日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同#步)。n=1是最安全的做法,但效率最低。默认设置是n=0。 sync_binlog=1 # auto_increment,控制自增列AUTO_INCREMENT的行为用于MASTER-MASTER之间的复制,防止出现重复值,auto_increment_increment=n有多少台服务器,n 就设置为多少,auto_increment_offset=2设置步长,这里设置为2,这样Master的auto_increment字段产生的数值是:2, 4, 6, 8, …等奇数ID auto_increment_offset=2 auto_increment_increment=2 #进行镜像处理的数据库 replicate-do-db = test #不进行镜像处理的数据库 replicate-ignore-db= mysql |
4.查看配置情况:
mysql> show master status;#主
mysql> show master status;#从
5.创建同步帐户
GRANT REPLICATION SLAVE ON *.* TO ‘slave’@’%’ IDENTIFIED BY ‘Tangzhq_88’;#主
mysql> FLUSH PRIVILEGES; //刷新相关权限表
GRANT REPLICATION SLAVE ON *.* TO ‘slave’@’%’ IDENTIFIED BY ‘Tangzhq_88’;#从
mysql> FLUSH PRIVILEGES; //刷新相关权限表
注:会遇到密码强度的问题,修改密码为高强度:大小写,数字特殊字符;还会遇到让修改root密码的,修改即是1
6.同步设置
Master1(192.168.1.82)上操作如下:
mysql> stop slave; //停止slave
mysql> change master to master_host=’192.168.1.83′, master_user=’slave’, master_password=’Tangzhq$0810′, master_log_file=’mysql-bin.000001′, master_log_pos=849; //修改当前的Master的值,因为是互为备份,所以Master1(192.168.1.82)的master为Master2(192.168.1.83),Master2设置复制的用户名为slave,密码是Tangzhq$0810,上面通过 show master status我们得知,log_file是mysql-bin.000001,postion是849。 mysql>start slave; //开始salve,开始同步 mysql>show slave status; //检测slave状态,如果Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0就OK了 |
Master2(192.168.1.83)上面操作如下:
mysql> stop slave; //停止slave mysql>change master to master_host=’192.168.1.82′, master_user=’slave’, master_password=’Tangzhq$0810′, master_log_file=’mysql-bin.000004′, master_log_pos=1098; //修改当前的Master的值,因为是互为备份,所以Master2(192.168.1.83)的master为Master2(192.168.1.82),Master1设置复制的用户名为slave,密码是Tangzhq_88,上面通过 show master status我们得知,log_file是mysql-bin.000004,postion是1098。 mysql>start slave; //开始salve,开始同步 mysql>show slave status; //检测slave状态,如果Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0就OK了 |
7.测试
在192.168.1.82上创建test库:create database test;#发现192.168.1.83自动创建了此库;
在192.168.1.82上test库上创建表:create table test(id int);#发现192.168.1.83自动创建了此表;
from: mysql使用keepalive实现HA(二)—keepalive部分 | 重头再来
from: mysql使用keepalive实现HA(三)—总结 | 重头再来