记录下,mysql主从复制,主主同步

强烈建议

主从数据库必须要同一版本,不同版本可能会出现各种各样的错误
比如我刚开始就用了5.7和5.5的不同版本,结果出现了一大堆错误,而且还是解决不了的那种
最后不得不把5.5升级到了5.7,成功

先说下主从复制

或者叫主从同步。而主主同步就是两个主从同步,没什么多的东西

首先先修改下my.cnf配置文件

1. 主数据库

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 
2. 从数据库

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。

之后是mysql命令行操作

1. 先在master数据库中建立用来同步的用户
grant replication slave on *.* to 'r_user'@'192.x.x.x' identified by 'password'
2. 在master数据库中,查看master状态,记下以下两个值
show master status;

3. 在slave数据库中,运行以下几条命令
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;
4. 查看slave状态
show slave status;

Slave_IO_Running 和 Slave_SQL_Running 两个都为YES说明成功

主主同步

主主同步就是两台服务器互为主从,把上面的 主从配置 和 命令 反过来再做一遍 就可以了。

参考链接

发表评论

邮箱地址不会被公开。 必填项已用*标注