mysql-binlog格式详解

MySQL 5.1 中,在�椭�(Replication)方面的改�M就是引�M了新的�}制技�g:基於行的�}制。 �言之,�@�N新技�g就是�P注表中�l生�化的��,而非以前的照抄 binlog 模式。 �� MySQL 5.1.12 �_始,可以用以下三�N模式����F:基於SQL�Z句的�}制(statement-based replication, SBR),基於行的�}制(row-based replication, RBR),混合模式�}制(mixed-based replication, MBR)。 相��地,binlog的格式也有三�N:STATEMENT,ROW,MIXED。MBR 模式中,SBR 模式是默�J的。
在�\行�r可以��B低改�binlog的格式,除了以下�追N情�r:
1. 存���^程或者�|�l器中�g
2. �⒂昧�NDB
3. ��前����用 RBR 模式,�K且已打�_了�R�r表
如果binlog�裼昧� MIXED 模式,那�N在以下�追N情�r下��自���binlog的模式由 SBR 模式改成 RBR 模式。
1. ��DML�Z句更新一��NDB表�r
2. ��函�抵邪�含 UUID() �r
3. 2��及以上包含 AUTO_INCREMENT 字段的表被更新�r
4. 行任何 INSERT DELAYED �Z句�r
5. 用 UDF �r
6. ��D中必�要求使用 RBR �r,例如��建��D是使用了 UUID() 函��
�O定主��椭�(Replication)模式的方法非常��危�只要在以前�O定�}�u配置的基�A上,再加一����担�
binlog_format=’STATEMENT’
#binlog_format=’ROW’
#binlog_format=’MIXED’
��然了,也可以在�\行�r��B修改binlog的格式。 例如
mysql> SET SESSION binlog_format = ‘STATEMENT’;
mysql> SET SESSION binlog_format = ‘ROW’;
mysql> SET SESSION binlog_format = ‘MIXED’;
mysql> SET GLOBAL binlog_format = ‘STATEMENT’;
mysql> SET GLOBAL binlog_format = ‘ROW’;
mysql> SET GLOBAL binlog_format = ‘MIXED’;
�F在�肀容^以下 SBR 和 RBR 2中模式各自的��缺�c
SBR 的���c:
1. �v史悠久,技�g成熟
2. binlog文件�^小
3. binlog中包含了所有�Y料�旄�改信息,可以��此���核�Y料�斓陌踩�等情�r
4. binlog可以用於���r的�原,而不�H�H用於�椭�(Replication)
5. 主�陌姹究梢圆灰�樱��姆��掌靼姹究梢员戎鞣��掌靼姹靖�
SBR 的缺�c:
1. 不是所有的UPDATE�Z句都能被�}�u,尤其是包含不�_定操作的�r候。
2. �{用具有不�_定因素的 UDF �r�椭�(Replication)也可能出���}
3. 使用以下函�档恼Z句也�o法被�}�u:
* LOAD_FILE()
* UUID()
* USER()
* FOUND_ROWS()
* SYSDATE() (除非���r�⒂昧� �Csysdate-is-now �x�)
4. INSERT … SELECT ���a生比 RBR 更多的行��i
5. �}�u需要�M行全表�呙�(WHERE �Z句中�]有使用到索引)的 UPDATE �r,需要比 RBR �求更多的行��i
6. ��於有 AUTO_INCREMENT 字段的 InnoDB表而言,INSERT �Z句��阻塞其他 INSERT �Z句
7. ��於一些�}�s的�Z句,在�姆��掌魃系暮馁Y源情�r��更�乐兀�而 RBR 模式下,只���δ���l生�化的���a生影�
8. 存��函��(不是存���^程)在被�{用的同�r也���绦幸淮� NOW() 函�担��@��可以�f是�氖乱部赡苁呛檬�
9. �_定了的 UDF 也需要在�姆��掌魃�绦�
10. ���表必��缀鹾椭鞣��掌鞅3忠恢虏判校�否�t可能���е卵}�u出�e
11. �绦醒}�s�Z句如果出�e的�,��消耗更多�Y源
RBR 的���c:
1. 任何情�r都可以被�}�u,�@�ρ}制�碚f是最安全可靠的
2. 和其他大多�蒂Y料�煜到y的�}制技�g一��
3. 多�登�r下,�姆��掌魃系谋砣绻�有主�I的�,�}�u就��快了很多
4. �}�u以下�追N�Z句�r的行�i更少:
* INSERT … SELECT
* 包含 AUTO_INCREMENT 字段的 INSERT
* �]有附��l件或者�K�]有修改很多��的 UPDATE 或 DELETE �Z句
5. �绦� INSERT,UPDATE,DELETE �Z句�r�i更少
6. �姆��掌魃�裼枚嗑�程��绦醒}�u成�榭赡�
RBR 的缺�c:
1. binlog 大了很多
2. �}�s的回�L�r binlog 中��包含大量的���
3. 主服�掌魃�绦� UPDATE �Z句�r,所有�l生�化的��都����到 binlog 中,而 SBR 只����一次,�@���е骂l繁�l生
binlog 的�K�l�����}
4. UDF �a生的大 BLOB 值���е卵}�u�慢
5. �o法�� binlog 中看到都�}�u了��什�N�Z句
6. ��在非事�毡砩�绦幸欢味逊e的SQL�Z句�r,最好�裼� SBR 模式,否�t很容易�е轮�姆��掌鞯���不一致情�r�l生
另外,��ο到y�� mysql �e面的表�l生�化�r的�理��t如下:
1. 如果是�裼� INSERT,UPDATE,DELETE 直接操作表的情�r,�t日�I格式根�� binlog_format 的�O定而��
2. 如果是�裼� GRANT,REVOKE,SET PASSWORD 等管理�Z句�碜龅脑�,那�N�o�如何都�裼� SBR 模式��
注:�裼� RBR 模式後,能解�Q很多原先出�F的主�I重�}���}
 
转自: http://homeserver.com.tw/mysql/

你可能感兴趣的:(mysql,数据库,职场,休闲,Binlog格式)