Mysql 复制从属锁定
我有一个主mysql服务器和两个从服务器作为备份 其中一个从机配备了固态存储器,因此大量用于报告 生成的一些数据需要一些时间(在某些情况下大约需要半个小时到一个小时),并使用和生成分配的数据(以两个GIG的顺序,这使我对使用事务犹豫不决)。报告表只是整个数据库的一小部分,因此完全关闭复制是不可能的 目前的问题是,在生成数据的同时生成的报告显然是不完整和错误的Mysql 复制从属锁定,mysql,locking,replication,Mysql,Locking,Replication,我有一个主mysql服务器和两个从服务器作为备份 其中一个从机配备了固态存储器,因此大量用于报告 生成的一些数据需要一些时间(在某些情况下大约需要半个小时到一个小时),并使用和生成分配的数据(以两个GIG的顺序,这使我对使用事务犹豫不决)。报告表只是整个数据库的一小部分,因此完全关闭复制是不可能的 目前的问题是,在生成数据的同时生成的报告显然是不完整和错误的 锁定主服务器和报表服务器上的表的最佳方法是什么 “LOCK TABLES”语句会被复制到从属表中吗?或者我最好的做法是在临时表中生成数据,
FLUSH TABLES WITH READ LOCK; SELECT CONNECTION_ID(); SELECT SLEEP(300);
步骤02)在两个从机(或仅报告从机)上显示从机状态\G
步骤03)重复步骤02,直到
- 继电器\u日志\u空间停止变化
- 继电器\u日志\u位置停止更改
- 主控台后面的秒数为0
STOP Slave代码>
步骤05)在主机上,(如果连接_ID()返回789)运行mysql>KILL 789代码>在另一个mysql会话中
步骤06)运行您的报告
步骤07)运行启动从机从机(或仅报告从机)上的代码>
更新日期:美国东部时间2012-06-05 15:15
因为在一个特定的模式中,为了几个表的缘故,这似乎有点过于繁重,所以最简单的方法就是运行STOP SLAVE
在从服务器上执行报告。这似乎有点过于苛刻,我可能应该提到我只对锁定一个特定架构中的几个表感兴趣。使用“SHOW OPEN tables”命令进行一些简单检查似乎表明当前的LOCK tables命令没有从主服务器复制到从服务器。连接到两台服务器并分别锁定表将锁定复制线程,因此这是不可能的,因此答案似乎必须是在单独的表中创建数据集,并截断原始表/在事务中复制新数据。