- 浏览: 187759 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
grzrt:
zkf55915 写道哥们怎么用啊
好久不用了,就是看帮助资 ...
淘宝MetaQ开源消息队列安装 -
zkf55915:
哥们怎么用啊
淘宝MetaQ开源消息队列安装 -
grzrt:
jinnianshilongnian 写道整这个了?
没有 看 ...
linux内核中链表的实现 -
jinnianshilongnian:
整这个了?
linux内核中链表的实现
http://apps.hi.baidu.com/share/detail/31674919
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和维基解密,开始添补鞭策媒体滑坡留下的空白。
发表评论
-
MySQL中关于查询条件中的字符串空格问题
2013-02-20 19:17 7681假设当前mysql数据库中有个表:sysuser 有个字段 ... -
动态添加MYSQL从库,导出主库
2013-01-15 17:57 1008http://dev.mysql.com/doc/refman ... -
MySQL主从失败 错误Got fatal error 1236解决方法
2013-01-09 16:45 1061由于主服务器异外重启, ... -
mysql 语句的调度优先级及改变
2012-12-07 16:47 1259MySQL的默认的调度策略可用总结如下: · 写入操作优 ... -
MySQL水平分区表初体验总结
2012-09-21 15:22 1192本文总结个这段时间研究MySQL水平分区表总结,列举分区 ... -
小议同步IO :fsync与fdatasync
2012-09-13 20:23 715对于提供事务支持的 ... -
Linux修改MySql默认存储引擎为InnoDB
2012-09-13 18:25 1576一、关闭相关应用 二、停止mysql bin/m ... -
MySQL数据库的初始化mysql_install_db
2012-09-13 14:13 4681一、mysql_install_db说明 当MySQL的 ... -
[mysql]不要再执着于thread_concurrency
2012-08-20 10:51 3366结论: thread_concurrency 在GNU ... -
【转】对mysql日志进行操作的总结包括 启用,过期自动删除 等
2012-08-19 17:25 8841. 以前我错误的认为mysql的日志可以恢复到任何时 ... -
mysql 主从复制1201错误
2012-08-19 15:59 944工作日志之-MySQL slave Replication E ... -
binlog-format
2012-07-03 20:16 873面的这些是在网上找的 ... -
Mysql启动多个实例
2012-06-25 19:32 869系统环境:CentOS5操作步骤: cd /var/lib c ... -
mysql 5.5.* 下的主从模式
2012-05-29 10:30 753试验环境:服务器安装是按照张宴的环境配置的 http://bl ... -
MySQL创建用户与授权
2012-05-29 10:26 619一, 创建用户: 命令:CREATE USER ' ... -
MySQL配置文件my.cnf 例子最详细翻译
2012-05-29 10:21 943转的 MySQL配置文件my.cnf 例子最详细翻译,可以保存 ... -
MySQL源码分析(1):主要模块及数据流
2012-05-26 11:07 1135经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修 ... -
mysql主从搭建实现
2012-05-25 21:43 810MySQL是应用广泛的关系型数据库,当数据规模逐渐扩大,并且重 ... -
mysql配置文件
2012-05-25 21:30 817[mysqld] port = 3306 serverid ... -
Handlersocket的安装
2012-05-25 21:13 850一、下载mysql,我选择的是mysql-5.5.15源码安装 ...
相关推荐
1.8 性能测试:mysql5.5与mysql5.1 60 第2章 半同步复制 62 2.1 半同步复制简介 62 2.2 半同步复制安装配置 63 2.3 参数说明 63 2.4 功能测试 64 2.4.1 如何验证半同步复制是否正常工作 64 2.4.2 半同步复制...
- **binlog_format**: 设置二进制日志格式。 - **innodb_buffer_pool_size**: InnoDB缓存池大小,对性能有很大影响。 - **max_connections**: 最大连接数。 #### 五、MySQL管理与维护 **5.1 日常管理** - **备份与...
MySQL主从部署方案是...在实际应用中,可以根据业务需求调整复制参数,优化性能和容错能力,同时考虑与其他高级集群方案(如Galera Cluster、Percona XtraDB Cluster等)的结合,以应对更大规模和更复杂场景的需求。
- 当需要重新配置 binlog 或者重启 MySQL 时,记得更新 `server-id`,以避免复制冲突。 - Maxwell 默认可能不输出包含 DDL 的 JSON,如果需要捕获表结构的变更,需要配置相关选项。 通过以上步骤,你就可以成功地...
- **广泛的兼容性**:支持MySQL多个版本,包括5.1.x, 5.5.x, 5.6.x, 5.7.x, 8.0.x等。 - **丰富的应用场景**:除了常见的数据库镜像和实时备份外,还可以用于索引构建与维护、业务缓存刷新以及复杂的数据处理任务等...
binlog_format = ROW ``` ##### 5.5 AppArmor配置 如果MariaDB运行在启用了AppArmor的主机上,可能需要对AppArmor进行额外配置,以允许MariaDB写入二进制日志。 #### 六、确保MariaDB服务自启动 通过以下命令,...