1、准备工作:
阿里云的centos
两台服务器:(mysql版本尽量保持一致,主服务器的版本不能高于从服务器)
主服务器:ip1;
从服务器:ip2;
待同步的数据库:slaveDB;
同步主从数据库数据,保持主从数据一致!
需要注意的是!!!
线上的项目导出数据的时候,保证主库上锁,等slave导入、slave start之后在解锁;
slave重启的时候也一样,重启之前,主库上锁,重启完毕,解锁;
主库表锁!
flush tables with read lock
主库解锁!
unlock tables
2、配置主服务器:
2.1、修改mysql配置文件
vim /etc/my.conf
Server-id = 1 #这是数据库ID,此ID是唯一的,主库默认为1,其他从库以此ID进行递增,ID值不能重复,否则会同步出错;
log-bin = mysql-bin #二进制日志文件,此项为必填项,否则不能同步数据;
binlog-do-db = slaveDB #需要同步的数据库,如果需要同步多个数据库;
则继续添加此项。
# binlog-do-db = slaveDB1
# binlog-do-db = slaveDB2
binlog-ignore-db = mysql 不需要同步的数据库;
2.2、保存退出!重启mysql服务,使更改生效!
service mysql restart
校验结果,如下图:
2.3、重要!!!
2.3.1、记录:
mysql-bin.000013(二进制文件) 和 940(pos)
2.3.2、添加一个同步用户slaveUser并赋值权限(用于从服务器slave使用)!
create user slaveUser
grant replication slave on *.* to 'slaveUser'@'ip2' identified by 'slaveUserPwd'
3、配置从服务器:
3.1、修改mysql配置文件
vim /etc/my.conf
server-id=2 #默认是1改成2
log-bin=mysql-bin #这行本身有
replicate-do-db=slaveDB #需要同步的数据库
replicate-ignore-db=mysql #不同步系统数据库
read_only #设只读权限
3.2、保存退出!重启MySql使更改生效!
service mysql restart
校验结果
3.3、修改slave参数:
slave stop;
change master to master_host='ip1',master_user='slaveUser',master_password='slavePwd',master_log_file='mysql-bin.000013' ,master_log_pos=940
# 注:master_log_file=上面提到的二进制文件;master_log_pos=上面提到的pos
slave start;
校验结果:
如下图,若出现两个 yes ,则配置成功!
可以测试在主库建立一张表,登录从库看看是否有更新。
至此主从配置完毕!
配置主主双向服务器就简单了!
4、主主双向服务器
4.1、在从服务器,重复上面2.3的 操作;
4.2,在主服务器,重复上面3.3的操作即可。
5、常见问题:
5.1、若是slave status 里面有报错,手动解决之后,执行如下命令即可!
mysql> slave stop;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER =1;
mysql> slave start;