我有MyISAM表的Mysql主从式复制。所有更新都在主站上完成,选择在主站或从站上完成。
我们可能需要在进行某些更新时手动锁定几个表。虽然此写锁定在表上,但锁定表上不会发生任何选择。但奴隶呢?锁是否会传播出来?
说我有table_A和table_B。我在主服务器上的table_A和table_B上启动锁定并开始执行更新。此时没有其他连接可以读取主机上的table_A和table_B吗?但是,如果此时另一个连接试图从一个从器件读取表,那么它们可以这样做吗?
答案 0 :(得分:3)
MySQL复制的所有内容都可以在二进制日志中找到。
您可以运行以下命令查看详细信息。
SDL_mixer
log_bin_basename将告诉您具有基本文件名的二进制日志的路径。
并运行
show global variables like 'log_bin%';
找到服务器上当前存在的二进制文件。
您可以使用show binary logs
命令以及文件名或从MySQL CLI运行mysqlbinlog
来检查写入文件的实际命令。
另外,检查您使用的binlog_format。
基本上 - 表的锁定不会直接传播到从属服务器,但是当时,乳清将执行执行的更新,如果需要,它们将执行更新表的锁定。
答案 1 :(得分:1)
据我所知,写锁不会传播到binlog中,您可以通过快速测试并查看binlog来验证。如果你想避免主服务器上的问题,并且由于某种原因无法迁移到InnoDB,可以考虑将GET_LOCK()等内容集成到应用程序中,而不是完全锁定表。在并发方面,MyISAM非常不确定。