我有一个主服务器和一个数据库 MySQL,其设置如下:
- AWS RDS MySQL
- 版本 5.7.26
- GTID 已启用并严格执行
我有一个过程,它对LOCK TABLE
只读副本中的一个表进行操作并将其锁定长达 8 小时。我想到两个问题:
- 在此期间,只读副本是否会继续使用主服务器的 binlog?它会停止全部复制还是会选择性地仅复制未锁定的表?
- 如果它将继续复制,那么通过 binlog 进行的更改对于从表中读取的其他进程是否可见?
答案1
除非你耍了一些狡猾的伎俩,否则 和LOCK
对UNLOCK
奴隶的作用会和对主人的作用一样,但会晚一些。
binlog 的“使用”分为两个阶段:首先是将 binlog 从主服务器复制到从服务器的中继日志。这个过程并不知道流中有哪些命令。
第二步是执行从服务器的中继日志中的命令。执行速度由查询(以及从服务器中发生的其他事情)决定。