我有一个主要的mysql服务器和2个从属服务器作为备份。
其中一个奴隶已配备固态存储,因此被大量用于报告。
生成的一些数据需要一些时间(在某些情况下大约半小时到一小时)并且使用并生成分配数据(按照几个演出的顺序,这使我对使用事务犹豫不决)。报告表只是整个数据库的一小部分,因此完全关闭复制有点不可能。
手头的问题是生成数据时生成的报告显然是不完整和错误的。
答案 0 :(得分:2)
尝试以下
您可以尝试以下方法:
步骤01)在主人身上,运行此
FLUSH TABLES WITH READ LOCK; SELECT CONNECTION_ID(); SELECT SLEEP(300);
步骤02)SHOW SLAVE STATUS\G
在两个从属(或仅报告从属)上
步骤03)重复步骤02直到
此时,由于两个Slaves都没有收到任何要处理的新SQL,因此您可以在与主服务器相同的时间点上有效地冻结Slaves上的MySQL
步骤04)在Slaves(或仅报告Slave)上,运行STOP SLAVE;
步骤05)在Master上,(如果CONNECTION_ID()返回789)在另一个mysql会话中运行mysql> KILL 789;
。
步骤06)运行报告
步骤07)在奴隶(或仅报告奴隶)上运行START SLAVE;
由于一个特定模式中的几个表似乎有点沉重,所以最简单的方法就是在Slave上运行STOP SLAVE;
来进行报告。