Techyou labs
文章RSS
评论RSS
登录
真正的爱应该超越生命的长度,心灵的宽度,灵魂的深度
搜索
关于作者
文章分类
Default
Linux/Unix
Database
Cloud
Networking
Security
Programming
最新文章
openvpn自签名证书
带你重走 TiDB TPS 提升 1000 倍的性能优化之旅
Unicode 中的 BIDI 双向性算法[转]
在linux中设置优先使用ipv4,而不是ipv6
linux下WPS高分辨率下因字体缩放导致字体发虚的问题
ssh-rsa not in pubkeyacceptedalgorithms问题解答及处理办法 Permission denied (publickey)
在 Ubuntu 22.04 中使用 PipeWire 替换 PulseAudio
MYSQL简单监控指标
deepin-wine6-stable下TIM悄悄崩溃问题
openwrt 设置ipv6地址分配
最新评论
renothing: 备注:路由器端优先设置ipv4并不影响客户端的ip...
renothing: 二次反向代理跟你应用程序得处理时间有关系吧?尤其是...
二次反向代理性能很差,怎么优化的?: 我也用nginx 做了个二次反向代理,但是并发连3...
hostyep: 交换链接么?目前每天保持30个左右对口IP,每月都...
yzhkpli: error while loading share...
美肤宝: 感谢分享。。。
lq: 嗯 喜欢弄得点单点
按月归档
August 2023
March 2023
December 2022
November 2022
September 2022
August 2022
March 2022
January 2022
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
February 2021
September 2020
May 2020
September 2019
August 2019
July 2019
June 2019
May 2019
January 2019
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
April 2018
March 2018
December 2017
October 2017
September 2017
August 2017
April 2017
March 2017
February 2017
August 2016
July 2015
November 2014
September 2014
August 2014
July 2014
June 2014
July 2013
April 2013
September 2012
July 2012
May 2012
April 2012
February 2012
January 2012
December 2011
November 2011
October 2011
September 2011
August 2011
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
December 2009
November 2009
October 2009
September 2009
August 2009
June 2009
May 2009
April 2009
March 2009
February 2009
December 2008
November 2008
September 2008
August 2008
July 2008
June 2008
常用标签
Mysql
nginx
mysql优化
linux
debian
Powered by
Typecho)))
Optimized by
EAimTY
mysql-binlog-format三种复制模式
December 22, 2011
复制参数binlogformat MySQL 5.1 中,在复制方面的改进即便引进了新的复制技巧:基于行的复制。简言之,这种新技巧即便关怀表中发生改变的登记,而非过去的照抄 binlog 形式。从 MySQL 5.1.12 开始,能够用以下三种形式来告终: 基于SQL语句的复制(statement-based replication, SBR), 基于行的复制(row-based replication, RBR), 混杂形式复制(mixed-based replication, MBR)。 相应地,binlog的款式也有三种:STATEMENT,ROW,MIXED。MBR 形式中,SBR 形式是默认的。 在运行时能够动态低改换binlog的款式,除非以下几种情形: 1. 存储过程可能引发器其中 2. 启用了NDB 3. 目前会话试用 RBR 形式,并且已敞开了临时表 万一binlog批准了 MIXED 形式,那么在以下几种情形下会积极将binlog的形式由 SBR 形式改成 RBR 形式。 1. 当DML语句更新一个NDB表时 2. 当函数中包括 UUID() 时 3. 2个及以上包括 AUTO_INCREMENT 字段的表被更新时 4. 行任何 INSERT DELAYED 语句时 5. 用 UDF 时 6. 视图中定然要求利用 RBR 时,例如创立视图是利用了 UUID() 函数 设定主从复制形式的措施极其容易,凡是在过去设定复制搭配的基础上,再加一个参数: binlog_format="STATEMENT" #binlog_format="ROW" #binlog_format="MIXED" 当然了,也能够在运行时动态修正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'; 目前来比拟以下 SBR 和 RBR 2中形式各自的优缺点 SBR 的优点: 1. 历史悠久,技巧成熟 2. binlog文件较小 3. binlog中包括了所有数据库改动消息,能够据此来核实数据库的平安等情形 4. binlog能够用于实时的还原,而不但仅用于复制 5. 主从版本能够不一样,从服务器版本能够比主服务器版本高 SBR 的缺点: 1. 不是所有的UPDATE语句都能被复制,尤其是包括不确定垄断的时候。 2. 调用具有不确定因素的 UDF 时复制也可能出问题 3. 利用以下函数的语句也无法被复制: * LOAD_FILE() * UUID() * USER() * FOUND_ROWS() * SYSDATE() (除非启用时启用了 --sysdate-is-now 选项) 4. INSERT ... SELECT 会发生比 RBR 更多的行级锁 5. 复制必需举行全表扫描(WHERE 语句中没利于用到索引)的 UPDATE 时,必需比 RBR 哀求更多的行级锁 6. 对于有 AUTO_INCREMENT 字段的 InnoDB表而言,INSERT 语句会阻塞其他 INSERT 语句 7. 对于一些混杂的语句,在从服务器上的耗资源情形会更严重,而 RBR 形式下,只会对那个发生改变的登记发生波及 8. 存储函数(不是存储过程)在被调用的同时也会厉行顺次 NOW() 函数,这个能够说是坏事也可能是好事 9. 确定了的 UDF 也必需在从服务器上厉行 10. 数据表定然几乎和主服务器坚持统一才行,否则可能会导致复制出错 11. 厉行混杂语句万一出错的话,会花费更多资源 RBR 的优点: 1. 任何情形都能够被复制,这对复制来说是最平安可靠的 2. 和其他大多数数据库系统的复制技巧一样 3. 多数情形下,从服务器上的表万一有主键的话,复制就会快了许多 4. 复制以下几种语句时的行锁更少: * INSERT ... SELECT * 包括 AUTO_INCREMENT 字段的 INSERT * 未曾附带条件可能并未曾修正许多登记的 UPDATE 或 DELETE 语句 5. 厉行 INSERT,UPDATE,DELETE 语句时锁更少 6. 从服务器上批准多线程来厉行复制成为可能 RBR 的缺点: 1. binlog 大了许多 2. 混杂的回滚时 binlog 中会包括许多的数据 3. 主服务器上厉行 UPDATE 语句时,所有发生改变的登记都会写到 binlog 中,而 SBR 只会写顺次,这会导致频繁发生 binlog 的并发写问题 4. UDF 发生的大 BLOB 值会导致复制变慢 5. 无法从 binlog 中看到都复制了写什么语句 6. 当在非事务表上厉行一段堆积的SQL语句时,良好批准 SBR 形式,否则很轻率导致主从服务器的数据不统一情形发生 另外,针对系统库 mysql 里面的表发生改变时的处理法定如下: 1. 万一是批准 INSERT,UPDATE,DELETE 直接垄断表的情形,则日志款式依据 binlog_format 的设定而登记 2. 万一是批准 GRANT,REVOKE,SET PASSWORD 等管教语句来做的话,那么无论如何都批准 SBR 形式登记 注:批准 RBR 形式后,能处理许多本来揭示的主键重复问题例如Pro Publica,SunlightFoundation和维基解密,开始添补鞭策媒体滑坡留下的空白
暂无评论
添加新评论
称呼
Email
网站
取消回复
内容
发表评论