首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MySQL复制环境安全地放入维护模式的正确方法?

将MySQL复制环境安全地放入维护模式的正确方法?
EN

Server Fault用户
提问于 2022-06-08 13:00:45
回答 1查看 98关注 0票数 1

我需要对我们的主/从/从MySQL集群执行一些维护。维护涉及优化三个表,其中至少一个被锁定了大约2个小时。每个表的优化操作在主表上运行到完成,然后在完成后通过二进制日志依次传播到从表。

在我看来,我现在有三个选择:

  1. skip-networking重新启动主程序,运行优化程序,然后将其恢复在线,并允许奴隶追赶。
  2. 同时使所有3个节点脱机,并行运行优化操作,然后重置复制。
  3. 干净地停止节点上的MySQL,关闭外部世界的网络,恢复它们,在主机上运行优化并允许它在恢复网络访问之前传播到奴隶。

我很难找到任何关于这方面的最佳实践的文档,或者关闭的确切行为,是否有人能够确认最好的方法来安全地使盒子离线来执行必要的工作?

清洁地执行操作比所花费的时间更重要,因为维护将在一夜之间进行。

MySQL版本是5.6,不幸的是它是一个较旧的版本,计划在不久的将来升级,但我暂时坚持它。复制方法是GTID。

非常感谢。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2022-06-20 19:54:29

首先,您真的需要运行OPTIMIZE TABLE吗?在大多数情况下,InnoDB保持其表的整洁程度,以至于不需要优化。如果您正在使用MyISAM,则应该出于各种原因将其转换为InnoDB。

如果优化是因为您做了一个很大的DELETE,那么下次就以一种不那么麻烦的方式执行删除,这可能消除了优化的需要。见http://mysql.rjweb.org/doc.php/deletebig

好的,回到你的问题上。有一个复制设置,它阻止命令传播到副本。因此,在https://dev.mysql.com/doc/refman/8.0/en/set-sql-log-bin.html上执行以下操作:

代码语言:javascript
复制
# when logged in with sufficient privileges:
SET sql_log_bin = OFF;
OPTIMIZE TABLE ...;
SET sql_log_bin = ;

然后遍历副本,每次一个:离线复制并手动运行OPTIMIZE。重新上网。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1102803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档