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

校验结果,如下图:

mysql主码和外码表示 mysql设置主码_数据库

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

校验结果

mysql主码和外码表示 mysql设置主码_主主双向服务器_02

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 ,则配置成功!

mysql主码和外码表示 mysql设置主码_mysql_03

可以测试在主库建立一张表,登录从库看看是否有更新。

至此主从配置完毕!
配置主主双向服务器就简单了!

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;