MySQL Replication 新功能介绍 北京万里开源软件有限公司 2011年8月 MySQL Network corporate presentation Hide or unhide slides for customization 1 1
万里开源和MySQL -开源软件解决方案和技术服务提供商,推广使用开放源代码 的LAMP 架构。 - 2006年携手MySQL AB共建MySQL中国研发中心, 先后在 MySQL Cluster和Replication 功能上进行合作开发。
MySQL 5.5 Replication 新功能和改进 - Semi-synchronous Replication - Replication Heartbeat - Automatic Relay Log Recovery - Replication Per Server Filtering - Replication Slave Side Data Type Conversions 参考 - http://blogs.oracle.com/mysql/entry/mysql_55_whats_new_in_replication - http://dev.mysql.com/doc/refman/5.5/en/replication.html - https://www.mysql.com/news-and-events/on-demand-webinars/display-od- 572.html
Semi-Synchronous Replication 目标 -当COMMIT语句成功返回后,该事务的所有日志已经被同步到了 Slave上 -如果这时Master发生故障,用户能从Slave上看到所有在Master看 到的数据 实现方法-等待应答机制 - Master在事务提交后,将等待至少一个slave的应答,此应答意味 着整个事务的 日志已经复制到 了slave上 - Slave 在一个事务的所有binary log都写入relay log并刷新到磁盘 后, 就立刻应答Master - Binary Log Event 前添加了一个Semi-Sync Header. 有是否应答 的标志 位。COMMIT,ROLLBACK, DDL - 应答内容为master_log_file和master_log_pos
Semi-Synchronous Replication Master上COMMIT返回后的两种含义 -得到了Slave的响应,数据已经复制到了Slave上 -等待超时, 数据没有复制到Slave上. 转变为异步方 式。Master上的操作不能回滚
MySQL 5.6 Replication 新功能和改进 - Multi-Threaded Slaves - Crash-Safe - Time-Delayed Replication - Informational Log Events - Optimized Row-Based Replication - Replication Checksums - Server UUIDs - Binlog API - Binlog Group Commit - Remote Binlog Back-up
Crash-Safe On Master binlog.index 的容错 - 备份binlog.index文件 Binary Log和Master 数据的一致性 -事务日志已经完整写入Binary Log, 但是未提交 利用xid Events, 恢复这些事务 -事务日志未完整写入,也未提交 从Binary Log中删除不完整事务的日志
Crash-Safe On Slave slave-relay-bin.index 的容错 master.info, relay-log.info和Slave 数据的一致性 - master.info 和 relay-log.info 存入系统表,并可修改引擎类型 slave_master_info, slave_relay_log_info。 - 对这两个表的操作,包含在正在执行的事务中 Round-Robin Multi-Source Replication in Pure SQL - http://mysqlmusings.blogspot.com/2011/04/round-robin-multi-source-in-pure- sql.html 参考 - http://mysqlmusings.blogspot.com/2011/04/crash-safe-replication.html
Time-Delayed Replication Slave滞后Master一定时间后再执行Binary Log - CHANGE MASTER TO MASTER_DELAY = N; 目的 -阻止用户在Master上的错误扩散到Slave上 -检测一段时间以前的数据库系统的状况 -测试目的 参考 - http://dev.mysql.com/doc/refman/5.6/en/replication-delayed.html
Informational Log Events Informational Log Event是一个新的Binary Log Event族. Master 可以通过这些Events将额外的信息发送到Slave。 -不包含任何数据,不影响Slave上的数据。 -只包含一些信息,这些信息可以被mysqlbinlog, SHOW BINLOG EVENTS 打印出来。 -主要用于调试 - Event Header中设置LOG_EVENT_IGNORABLE_F标志
Informational Log Events Rows Query Log Event -在Row模式下,记录生成Rows Log Events的语句 - --binlog_rows_query_log_events 参考 - http://d2-systems.blogspot.com/2011/04/mysql-562-dm-binlog-informational.html
Remote Binlog Back-up mysqlbinlog - --raw - --read-from-remote-server - --stop-never 参考 - http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-backup.html
Multi-Threaded Slaves 实现了多个SQL Threads 并发的执行不同的事务 Slave的组成 - 1 个 I/O Thread - 1 个SQL Coordinator Thread 分发Binary log Events 到不同的 Worker Threads - N个SQL Worker Threads 执行 Binary log Events
Multi-Threaded Slaves 限制 - Database级别的并发,两个事务修改了同一个database中的表, 则要顺序执行。 参考 - http://d2-systems.blogspot.com/2011/04/mysql-56x-feature-preview-multi.html - http://d2-systems.blogspot.com/2011/07/update-on-multi-threaded-slave.html
Optimized Row-Based Replication 不复制整行数据。减少Binary Log占用的空间和网络 传输时间。 Variable binlog-row-image - full - noblob - minimal
Optimized Row-Based Replication Before Row -只复制主键字段或非空唯一键字段 After Row -对于UPDATE,只复制被修改的字段 -对于INSERT,复制所有字段 参考 - http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary- log.html#sysvar_binlog_row_image - http://d2-systems.blogspot.com/2011/04/mysql-562-dm-optimized-row-based.html
Email: Anders.Song@greatopensource.com Q&A 谢谢!
参考书