信息:我的表都是 innodb。
我知道我可以通过将数据从主服务器复制到从服务器并记录 binlog 中的位置并在从服务器上设置该位置来创建一个 mysql 从服务器。因此,从服务器应该能够重放自备份和同步以来的所有主 binlog 条目。
但是,如果 binlog 从一开始就存在,我是否可以简单地将从属服务器上的 binlog 位置设置为 0,从而不必复制任何数据,而只是让从属服务器赶上最新的 binlog 条目?
答案1
如果可以的话
- 您在一个空的 MySQL 实例中加载了数据
- 你从一开始就启用了二进制日志记录
- 你从未删除过任何二进制日志
有一个问题:没有文字位置 0。
不同版本的 MySQL 有不同的位置 0
- 位置 107 (MySQL 5.5)
- 位置 106 (MySQL 5.1)
- 位置 98(MySQL 5.0 及之前版本)
我很久以前在 DBA StackExchange 中写过这篇文章:
Feb 04, 2011
:MySQL 主 binlog 损坏Jun 09, 2011
:Yum 将 mysql 从 5.1 更新至 5.5
如果自 MySQL 数据加载开始以来您没有每个二进制日志,则可以使用以下命令进行复制rsync
并重新启动mysql
:
Apr 08, 2011
:从另一个从服务器创建一个 MySQL 从服务器,但将其指向主服务器Jul 08, 2011
:MySQL 从属复制重置且无主服务器停机时间(使用 MyISAM)Nov 06, 2012
:如何高效地转储巨大的 MySQL innodb 数据库?
答案2
如果你真的有所有的 binlog,并且数据库设置正确,我想不出有什么技术原因不可以。binlog 背后的全部原因就是允许这种事情。