mysql - 锁是否通过复制传播?

时间:2012-06-01 23:12:13

标签: mysql replication myisam locks

我有MyISAM表的Mysql主从式复制。所有更新都在主站上完成,选择在主站或从站上完成。

我们可能需要在进行某些更新时手动锁定几个表。虽然此写锁定在表上,但锁定表上不会发生任何选择。但奴隶呢?锁是否会传播出来?

说我有table_A和table_B。我在主服务器上的table_A和table_B上启动锁定并开始执行更新。此时没有其他连接可以读取主机上的table_A和table_B吗?但是,如果此时另一个连接试图从一个从器件读取表,那么它们可以这样做吗?

2 个答案:

答案 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非常不确定。