我正在考虑从基于 STATEMENT 的 MySQL 复制切换到基于 ROW 的 MySQL 复制,但我很难确定我的 5.1.41-3ubuntu12.10-log 服务器/客户端上是否有基于 ROW 的复制。
查看此处的文档: http://dev.mysql.com/doc/refman/5.1/en/replication-options-binary-log.html#sysvar_binlog_format
...看起来直到 5.1.5 版本才有 ROW 选项。但是之前提到 MIXED 是一个选项(我认为 MIXED 暗示 ROW 可用)。也许文档只是在谈论命令行启动选项?
简而言之,我可以使用基于 ROW 的 MySQL 复制吗(5.1.41)?
答案1
根据http://dev.mysql.com/doc/refman/5.1/en/replication-formats.html:
MySQL 中的复制功能最初基于从主服务器到从服务器的 SQL 语句传播。这称为基于语句的复制(通常缩写为 SBR),它对应于标准的基于语句的二进制日志记录格式。在 MySQL 5.1.4 及更早版本中,二进制日志记录和复制专门使用此格式。
基于行的二进制日志记录单个表行中的更改。与 MySQL 复制一起使用时,这称为基于行的复制(通常缩写为 RBR)。在基于行的复制中,主服务器将事件写入二进制日志,指示单个表行的更改方式。
从 MySQL 5.1.8 开始,服务器可以使用混合格式日志记录根据事件类型实时更改二进制日志记录格式。
当混合格式生效时,默认情况下使用基于语句的日志记录,但在特定情况下会自动切换到基于行的日志记录,如后所述。使用混合格式的复制通常称为基于混合的复制或混合格式复制。有关更多信息,请参见第 5.2.4.3 节“混合二进制日志记录格式”。
从 MySQL 5.1.12 到 MySQL 5.1.28,混合格式是默认格式。从 MySQL 5.1.29 开始,基于语句的格式是默认格式。
根据此摘录以及 MySQL 5.1.30 是 MySQL 5.1 的第一个 GA 版本的事实,MySQL 5.1.41 必须具有基于行的二进制日志记录,从而具有基于行的复制。