RBR 的优点在于可以避免某些列语句无法被正确复制的情况,比如在触发器、存储过程中使用的动态 SQL 语句。而 SBR 在这种情况下,语句无法被正确记录和复制。
在 MySQL 中启用 Row-based Replication 的方法很简单,在配置文件中设置以下参数:
[mysqld] log-bin = mysql-bin binlog-format = ROW
其中,log-bin 表示启用二进制日志,并指定日志的存储路径和文件名;binlog-format 表示启用 RBR。
启用 RBR 后,可通过 show slave status 命令查看复制的状态,其中包括指针 (position)、锁定状态、错误信息等。
mysql>show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 640 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 253 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes …
其中,Slave_IO_Running 和 Slave_SQL_Running 均为 YES 表示主从之间的连接和复制功能正常运行。
总而言之,MySQL Row-based Replication 使得主从之间的数据同步更加准确可靠,与 Statement-based Replication 相比,它具有更好的兼容性和稳定性。