主从数据库必须要同一版本,不同版本可能会出现各种各样的错误 比如我刚开始就用了5.7和5.5的不同版本,结果出现了一大堆错误,而且还是解决不了的那种 最后不得不把5.5升级到了5.7,成功
或者叫主从同步。而主主同步就是两个主从同步,没什么多的东西
my.cnf
配置文件vi /etc/my.cnf
在 [mysqld] 下面添加3行
# 修改,必须保证每个服务器不一样。 这可能和循环同步有关。 防止进入死循环
server-id = 1
# 开启mysql的binlog日志,一般都有
log-bin = mysql-bin
# 只把哪些数据库的改动记录到binary日志中。 可以写上关注typecho数据库。可以写多行,表示关注多个数据库
binlog-do-db = typecho
# binlog-ignore-db 表示,需要忽略哪些数据库。但是我把它注释掉了,只是展示一下。
# binlog-ignore-db = mysql
# binlog-ignore-db = hello
# 下面两个用于在 双主(多主循环)互相备份。
# 因为每台数据库服务器都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突。
# 解决这个问题的办法就是让每个数据库的自增主键不连续。
# 我假设需要将来可能需要10台服务器做备份, 所以auto-increment-increment 设为10.
# 而 auto-increment-offset=1 表示这台服务器的序号。 从1开始, 不超过auto-increment-increment。
auto-increment-increment = 10
auto-increment-offset = 1
vi /etc/my.cnf
在 [mysqld] 下面修改1行,添加3行
# 修改,必须保证每个服务器不一样。 这可能和循环同步有关。 防止进入死循环
server-id = 2
# 可以指定需要复制的数据库, 我使用了这个。
replicate-do-db = typecho
# 复制时需要排除的数据库,我这里注掉了。 演示一下。
# replicate-ignore-db = user
# 中继日志的名字。 前面说到了, 复制线程需要先把远程的变化拷贝到这个中继日志中, 在执行。
relay_log = mysqld-relay-bin
# 中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。 就是双主互相备份,或者多主循环备份。 我们这里需要, 所以打开。
log-slave-updates = ON
保存, 重启mysql。
grant replication slave on *.* to 'r_user'@'192.x.x.x' identified by 'password'
show master status;
stop slave;
reset slave;
# master_log_file 和 master_log_pos 的值分别为第2步中记录的值
change master to master_host='主数据库ip',master_user='r_user',master_password='密码',master_log_file='mysql-bin.000029',master_log_pos=154;
start slave;
show slave status;
Slave_IO_Running 和 Slave_SQL_Running 两个都为YES说明成功
主主同步就是两台服务器互为主从,把上面的 主从配置 和 命令 反过来再做一遍 就可以了。