Mysql数据库管理员学习过程中,mysql复制有什么优势呢?基于语句复制?基于行复制?
• 基于语句复制的优势:
属于比较成熟的技术,得到广泛使用
当SQL语句会修改很多数据时,使用语句复制会比较节省空间
由于二进制文件中包含了所有的修改语句,所以可以用来做审计功能
• 基于语句复制的劣势:
某些特定的修改语句在基于语句复制的环境中复制会有问题,比如:
语句中包含自定义函数或者不确定性的存储过程
update/delete语句中包含Limit语句但不包含order by语句属于不确定性语句
一些函数比如rand(), sysdate(),version()等由于不确定性也会导致复制异常
每个导致复制异常的语句都会产生一个告警信息
[Warning] Statement is not safe to log in statement format.
• 基于行复制的优势:
所有的数据库修改都可以被复制,是一种安全的方式
由于是行复制,所以某些语句在主库和从库上执行需要较少的lock
• 基于行复制的劣势:
当DML语句涉及到多行的修改时,则由于行复制会把每行的修改信息都记录下来,所以bin log会很大,有可能会导致复制的延迟相比较语句复制要大,不能直接查看在备库中执行的SQL语句。
建议仅使用InnoDB表做行复制,对MyISAM表的行复制有可能会导致复制异常。