MySQL双向备份的办法介绍(附代码)
本篇文章给大家带来的内容是对于MySQL双向备份的办法介绍(附代码),有一定的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。
MySQL 双向备份也被称为 主主备份 ,即两个 MySQL 办事都是 Master,其中任意一个办事又是另一个办事的 Slave。
预备
办事器
MySQL办事器 | 版本 | IP地址 |
---|---|---|
masterA | 5.6.41 | 192.168.1.201 |
masterB | 5.6.41 | 192.168.1.202 |
注:
备份的 MySQL 办事器版本尽量维持一致,不一样的版本可能二进制日志格局不兼容。概括操纵
注意
操纵历程中注意两边数据的一致!!!
masterA 配置
my.cnf
[mysqld] # 办事器独一标识 server-id=1 # 二进制日志文件名 log-bin=mysql-bin # 需要备份的数据库,多个数据库用 , 分隔 binlog-do-db=piumnl # 需要复制的数据库,多个数据库用 , 分隔 replicate-do-db=piumnl # 中继日志文件名 relay_log=mysqld-relay-bin # 手动启动同步办事,以免忽然宕机致使的数据日志不一样步 skip-slave-start=ON # 互为主从需要参加这一行 log-slave-updates=ON # 禁用符号链接,防止平安风险,可不加 symbolic-links=0 # 可不加 # resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0 master-info-repository=table relay-log-info-repository=table relay-log-recovery=1 # 可不加 # 禁用 dns 解析,会使授权时运用的域名无效 skip-host-cache skip-name-resolve sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
masterB 配置
my.cnf
# 不再解释各个配置项 [mysqld] server-id=2 log-bin=mysql-bin binlog-do-db=piumnl replicate-do-db=piumnl relay_log=mysql-relay-bin skip-slave-start=ON log-slave-updates=ON symbolic-links=0 # resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0 master-info-repository=table relay-log-info-repository=table relay-log-recovery=1 skip-host-cache skip-name-resolve sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
新建备份会员
masterA & masterB 都要新建备份会员:
create user 'rep'@'%' identified by 'rep'; # 新建一个账户 grant replication slave on *.* to 'rep'@'%'; # 授予该账户对任意数据库任意表的主从备份权限
备注:
- Linux 下 MySQL 对
root@%
会员关闭了grant_priv
权限,所以要是是长途登录会涌现授权失败的状况 - 此处备份会员帐号和密码可纷歧致,此处为了简化操纵运用同样的帐号和密码
重新启动办事器
重新启动办事器
开启备份
masterA
查看 masterB 状态
show master status\G; # 此处需要关注 File 和 Position 值
开启备份
stop slave; # master_log_file 就是首先步操纵的 File 值 # master_log_pos 就是首先步操纵的 Position 值 change master to master_host=, master_user= , master_port= , master_password= , master_log_file='mysql-log.000003', master_log_pos=154; start slave;
查看效果
show slave status\G; # 查看最重要的两项,两个都必需为 Yes ,有一个为 No 都要去查看差错日志文件,看看什么地方存在题目 # Slave_IO_Running: Yes # Slave_SQL_Running: Yes
masterB
反向反复 masterA 的操纵测试
离别在 masterA 和 masterB 中插入数据,并查看另一台办事器可否及时涌现预测的数据
题目
MySQL Slave Failed to Open the Relay Log
这应当是中继日志涌现题目,可尝试如下操纵
stop slave; flush logs; start slave;
Got fatal error 1236 from master when reading data from binary log
从主库中拉取日志时,发明主库的 mysql_bin.index 文件中的首先个文件不存在。
# 进行如下操纵重置 # 要是二进制日志或中继日志有其他作用,请勿进行如下操纵 reset master; reset slave; flush logs;
运用 进行插入、更新和删除操纵,将不会进行备份( 这是巨坑 )!!!【
相关文章