gpt4 book ai didi

mysql - 复制从属锁定

转载 作者:可可西里 更新时间:2023-11-01 08:36:20 27 4
gpt4 key购买 nike

我有一个主要的 mysql 服务器和 2 个从服务器作为备份。

其中一个奴隶配备了固态存储,因此被大量用于报告。

一些生成的数据需要一些时间(在某些情况下大约半小时到一个小时)并使用和生成数据分配(按几个演出的顺序,这让我对使用交易犹豫不决)。报告表只是整个数据库的一小部分,因此完全关闭复制有点不可能。

当前的问题是在生成数据时生成的报告显然不完整且错误。

  1. 锁定主服务器和报告服务器上的表的最佳方法是什么?
  2. “LOCK TABLES”语句是否会被复制到从服务器,或者我最好的行动方案是在临时表中生成数据,然后在一个 INSERT ... SELECT 语句中将它们复制到最终表。

最佳答案

尝试以下操作

您可以尝试以下方法:

步骤 01) 在 Master 上运行这个

FLUSH TABLES WITH READ LOCK; SELECT CONNECTION_ID(); SELECT SLEEP(300);

步骤 02) SHOW SLAVE STATUS\G 在两个从站(或只是报告从站)上

步骤 03) 重复步骤 02 直到

  • Relay_Log_Space 停止变化
  • Relay_Log_Pos 停止变化
  • Seconds_Behind_Master 为 0

此时,由于两个 Slaves 都没有收到任何新的 SQL 来处理,你已经有效地在与 Master 相同的时间点卡住​​了 Slaves 上的 MySQL

步骤 04)在从站(或报告从站)上,运行 STOP SLAVE;

步骤 05) 在主服务器上,(如果 CONNECTION_ID() 返回 789)在另一个 mysql session 中运行 mysql> KILL 789;

第 6 步)运行您的报告

步骤 07)在从站(或报告从站)上运行 START SLAVE;

更新 2012-06-05 15:15 EDT

由于在一个特定模式中有几个表,这似乎有点繁重,最简单的事情就是在您从中进行报告的从站上运行 STOP SLAVE;

关于mysql - 复制从属锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10900759/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com