mysql云数据库如何进行异地灾备_利用主从复制搭建热备

夜杰吖_7143

夜杰吖_7143

2026-03-27

897人浏览

原创

能,但需手动补全监控、切换逻辑和断网重连策略;必须开启gtid、row格式、relay_log_recovery;调优heartbeat、retry_count和net_timeout;从库需关闭read_only、校验server_id及时区;云灾备实例封装深、可控性差。

mysql云数据库如何进行异地灾备_利用主从复制搭建热备

主从复制能实现异地灾备吗?

能,但不是开箱即用的“灾备”——它只是基础能力。MySQL 主从复制本身不保证数据零丢失、不自动切换、不校验跨地域网络抖动下的 GTID 一致性。你得自己补上监控、切换逻辑和断网重连策略。

常见错误现象:Seconds_Behind_Master 持续为 NULL 或飙升;从库报错 Could not parse relay log event entry;主库宕机后从库无法升主(read_only=1 没关、GTID mode 不一致)。

  • 必须开启 gtid_mode=ON + enforce_gtid_consistency=ON,否则跨地域延迟突增时容易丢事务
  • 主库 binlog_format 必须是 ROW,语句级日志在异地网络分区下极易产生主从不一致
  • 从库务必设置 relay_log_recovery=ON,否则断电或强制重启后可能跳过部分中继日志

异地网络不稳定,怎么避免复制中断?

云环境跨地域链路(比如华东到华北)RTT 高、偶发丢包,CHANGE MASTER TO 默认参数扛不住。关键不是调大超时,而是让复制进程更“耐摔”。

使用场景:主库在阿里云杭州,从库部署在腾讯云北京,两地专线未打通,走公网。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • 在从库执行:CHANGE MASTER TO master_heartbeat_period = 30.0(单位秒),比默认 0 更早触发心跳探测
  • 加参数:MASTER_RETRY_COUNT = 86400(一天),避免一次失败就停掉 SQL 线程
  • 禁用 slave_net_timeout 的默认值(3600),设为 60:让 IO 线程更快感知连接断开并重连,而不是傻等一小时
  • 别依赖 auto-reconnect —— MySQL 官方已弃用该选项,且不作用于复制线程

从库能直接当热备顶上去吗?

不能直接顶,必须提前验证和预置操作。热备不是“挂了就能切”,是“随时可切、切完可用”。最常踩的坑是权限、配置、时间戳三不一致。

性能 / 兼容性影响:开启 log_slave_updates 是必须的(否则从库无法再做下级从库),但它会增加磁盘 I/O 和 relay log 写入延迟,在高写入场景需预留 15%~20% CPU 余量。

  • 从库必须关闭 read_only=OFF(注意不是 0),且确认 super_read_only=OFF,否则 STOP SLAVE 后仍无法写入
  • 检查 SHOW VARIABLES LIKE 'server_id' 是否唯一——主从 server_id 相同会导致 GTID 冲突,切完立刻复制失败
  • 用 SELECT UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(UTC_TIMESTAMP()) 核对主从系统时区偏差,>1 秒就可能引发基于时间的分库逻辑错乱
  • 备份 mysql.user 表结构和账号(尤其 host 字段含 IP 的),云数据库常限制本地登录,切完要立刻恢复访问路径

云厂商控制台里的“灾备实例”是不是更省事?

它封装了主从,但把底层细节藏得更深——你没法改 relay_log_space_limit,看不到 Retrieved_Gtid_Set 实时进度,出问题只能提工单等反馈。适合低 SLA 要求场景,不适合金融、订单类业务。

容易被忽略的地方:云厂商的“一键灾备”通常不包含应用层 DNS 切换、连接池刷新、缓存双删逻辑。数据库切过去了,APP 还连着旧地址,或者缓存没清,结果查到脏数据——这锅不归 MySQL 背。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

mysql

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

2273

6

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.21

1379

5

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

815

5

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.19

3152

5

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.25

5348

4

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.08

1179

3

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.11

5611

4

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

2023.08.14

4902

7

mysql事务隔离级别
mysql事务隔离级别

mysql规范中定义了四种事务隔离级别,不同的隔离级别对事务的处理有所不同。本专题为大家提供mysql事务隔离级别相关的文章内容,大家可以免费体验。

2023.08.16

6514

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 188人学习