我们有两个 MySQL 服务器,并设置了简单的主从复制。我们目前使用所有 MyISAM 表,但将来可能会迁移到 InnoDB。我们最大的表超过 2GB。
我想使用mk-表校验和工具对表运行校验和,这样我就可以确保复制正常工作。
这本书高性能 MySQL和这个mk-table-checksum 教程两者都建议使用--sleep
和--chunk-size
来帮助避免数据库阻塞。
我的问题是关于‘阻塞’:
- 这里可能发生哪种类型的阻塞?这仅仅是指表上的读锁吗?
- 如果我不指定
--chunk-size
,其中一些校验和需要 4-5 分钟。此时表是否会被锁定而无法写入?
答案1
它只是指表上的读/写锁。如果您使用的是 MySQL 内置的默认校验和实现,则使用读锁;如果您使用的是 --replicate(执行 INSERT..SELECT 语句),则使用共享读锁。