MySQL5.5复制/同步的新特性及改进
半年之前我有幸参加了MySQL2010用户大会,Oracle/Sun在会上公布了MySQL5.5的新特性,这次MySQL5.5改进的地方非常之多,当中引入的Google patch for MySQL中的半同步Semi-synchronous Replication,一个可用于高可用解决方案的新特性。谭俊青@MySQL实验室
MySQL5.5的在复制/同步方面的改进:
保证主从服务器上数据的一致性(同步)能立检测到复制的异常Crashed Salve能自动从错误中恢复同步在环形复制中用户能够指定跳过某实例事件主从复制中能自动适应字段类型的转换MySQL半同步复制(semi-synchronous replication)
默认情况下MySQL的复制是异步的,Master上所有的更新操作写入Binlog之后并不确保所有的更新都被复制到Slave之上。异步操作虽然效率高,但是在Master/Slave出现问题的时候,存在很高数据不同步的风险,甚至可能丢失数据。
MySQL5.5引入半同步复制功能的目的是为了保证在master出问题的时候,至少有一台Slave的数据是完整的。在超时的情况下也可以临时转入异步复制,保障业务的正常使用,直到一台salve追赶上之后,继续切换到半同步模式。
Master:
INSTALL PLUGIN ‘rpl_semi_sync_master’ SONAME ‘semisync_master.so’;
SET GLOBAL rpl_semi_sync_master_enabled=1;
SET GLOBAL rpl_semi_sync_master_timeout=1000; (1s, default 10s)
Slave:
INSTALL PLUGIN ‘rpl_semi_sync_slave’ SONAME ‘semisync_slave.so’;
SET GLOBAL rpl_semi_sync_slave_enabled=1;
复制心跳(用户检测复制是否中断)
MySQL5.5提供的新的配置master_heartbeat_period,能够在复制停止工作和出现网络中断的时候帮助我们迅速发现问题。
启用方法:
STOP SLAVE;
CHANGE MASTER TO master_heartbeat_period= milliseconds;
START SLAVE;
Slave自动恢复同步
在MySQL5.5版本之前,MySQL Slave实例在异常终止服务之后,可能导致复制中断,并且relay binlog可能损坏,在MySQL再次启动之后并不能正常恢复复制。在MySQL5.5中这一问题得到了解决,MySQL可以自行丢弃顺坏的而未处理的数据,重新从master上获取源数据,进而回复复制。
跳过指定复制事件
在多Master或环形复制的情况下,处于复制链条中间的服务器异常,可以通过
CHANGE MASTER TO MASTER_HOST=xxx IGNORE_SERVER_IDS=y
跳过出问题的MySQL实例。
自动转换字段类型
MySQL5.1在基于语句的复制下,支持部分的字段转换,但是行级的会报错。MySQL5.5语句和行级复制都已支持。还可以通过 SLAVE_TYPE_CONVERSIONS 控制转换的方向。
建议继续学习:
- 关于IO的同步,异步,阻塞,非阻塞 (阅读:14291)
- vim的复制粘贴小结 (阅读:6371)
- mysql 主从同步原理 (阅读:5640)
- 消息分发的同步均衡策略 (阅读:4962)
- VIM复制粘贴的那些事 (阅读:3819)
- 五款最好的免费同步软件 (阅读:3778)
- 大量小文件的实时同步方案 (阅读:3655)
- redis源代码分析 - replication (阅读:3246)
- MySQL Cluster 与 MongoDB 复制及分片设计及原理 (阅读:3128)
- MySQL复制的概述、安装、故障、技巧、工具 (阅读:3078)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:谭俊青 来源: MySQL 实验室(BLOG) - MySQL性能、MySQL Cluster集群、MySQL HA高可用等研究 - MySQL实验室
- 标签: 同步 复制
- 发布时间:2010-12-05 22:52:15
- [571] 招聘技巧一二
- [18] 密度聚类算法之OPTICS
- [17] 豆瓣是啥?
- [17] linux内核研究笔记(一)内存管理 – p
- [16] 配合jquery实现异步加载页面元素
- [15] 我的git笔记
- [15] 在ssh服务里使用chroot
- [14] 可用性测试好助手——Morae软件的应用
- [14] 自建DNS以防止GFW干扰
- [13] 使用document.domain和ifra