资讯专栏INFORMATION COLUMN

MySQL 双向备份

mumumu / 2752人阅读

摘要:双向备份也被称为主主备份,即两个服务都是,其中任意一个服务又是另一个服务的。准备服务器服务器版本地址注备份的服务器版本尽量保持一致,不同的版本可能二进制日志格式不兼容。

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 statusG;
# 此处需要关注 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 statusG;
# 查看最重要的两项,两个都必须为 Yes ,有一个为 No 都要去查看错误日志文件,看看什么地方存在问题
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes

masterB

反向重复 masterA 的操作

测试

分别在 masterA 和 masterB 中插入数据,并查看另一台服务器是否及时出现预期的数据

问题 Relay Log
MySQL Slave Failed to Open the Relay Log

这应该是中继日志出现问题,可尝试如下操作

stop slave;
flush logs;
start slave;
mysql_bin.index
Got fatal error 1236 from master when reading data from binary log

从主库中拉取日志时,发现主库的 mysql_bin.index 文件中的第一个文件不存在。

# 进行如下操作重置
# 如果二进制日志或中继日志有其他作用,请勿进行如下操作
reset master;
reset slave;
flush logs;
.

使用 .

进行插入、更新和删除操作,将不会进行备份( 这是巨坑 )!!!


参考文献

MySQL互为主从及Keepalived配置vip——主从配置篇

MySQL 双机备份

【MySQL】Got fatal error 1236原因和解决方法

RESET MASTER和RESET SLAVE使用场景和说明,以及清除主从同步关系

MySql 5.6关于replicate secure加强

MySQL 错误 “could not be resolved: ..” 和引发的思考

如有错误或问题,欢迎提出来一起交流讨论

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/48955.html

相关文章

  • 数据同步——otter

    摘要:阿里开源项目,数据同步的解决方案。基于数据库增量日志解析,支持数据库进行同步在最新的已经支持以及阿里云提供的数据库使用童鞋的福音。 参考文献:Otter-入门篇1(阿里开源项目Otter介绍) 一、背景 本人是一名应届毕业生,,还在努力挖坑。最近两个月被外派到其他公司做一个升级系统,做到现在一个多月。学到的东西很多,想总结的东西也很多,可是。。。时间是让人猝不及防的东西。好吧,现在先来...

    baiy 评论0 收藏0
  • 数据同步——otter

    摘要:阿里开源项目,数据同步的解决方案。基于数据库增量日志解析,支持数据库进行同步在最新的已经支持以及阿里云提供的数据库使用童鞋的福音。 参考文献:Otter-入门篇1(阿里开源项目Otter介绍) 一、背景 本人是一名应届毕业生,,还在努力挖坑。最近两个月被外派到其他公司做一个升级系统,做到现在一个多月。学到的东西很多,想总结的东西也很多,可是。。。时间是让人猝不及防的东西。好吧,现在先来...

    Acceml 评论0 收藏0
  • UCloud 数据传输服务 UDTS,一键解决数据迁移难题

    摘要:在安全可靠性方面,在公有云平台上进行数据迁移不仅支持外网的迁移,还提供内网的数据迁移。于是提供了迁移时重命名的功能,可以针对数据库也可以针对表,这样就帮助这类用户解决了数据整合的难题。背景 数据库作为核心数据的重要存储,很多时候都会面临数据迁移的需求,例如:业务从本地迁移上云、数据中心故障需要切换至灾备中心、混合云或多云部署下的数据同步、流量突增导致数据库性能瓶颈需要拆分…… 而...

    张率功 评论0 收藏0
  • MySQL - 高可用性:少宕机即高可用?

    摘要:归根到底,高可用性就意味着更少的宕机时间。首先,可以尽量避免应用宕机来减少宕机时间。降低平均失效时间我们对系统变更缺少管理是所有导致宕机事件中最普遍的原因。 我们之前了解了复制、扩展性,接下来就让我们来了解可用性。归根到底,高可用性就意味着 更少的宕机时间。 老规矩,讨论一个名词,首先要给它下个定义,那么什么是可用性? 1 什么是可用性 我们常见的可用性通常以百分比表示,这本身就有其隐...

    JessYanCoding 评论0 收藏0
  • MySQL - 高可用性:少宕机即高可用?

    摘要:归根到底,高可用性就意味着更少的宕机时间。首先,可以尽量避免应用宕机来减少宕机时间。降低平均失效时间我们对系统变更缺少管理是所有导致宕机事件中最普遍的原因。 我们之前了解了复制、扩展性,接下来就让我们来了解可用性。归根到底,高可用性就意味着 更少的宕机时间。 老规矩,讨论一个名词,首先要给它下个定义,那么什么是可用性? 1 什么是可用性 我们常见的可用性通常以百分比表示,这本身就有其隐...

    spademan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<