MySQL 8.0.2复制新特性(翻译)
译者:知数堂星耀队
MySQL 8.0.2复制新特性
MySQL 8 正在变得原来越好,而且这也在我们MySQL复制研发团队引起了一阵热潮。我们一直致力于全面提升MySQL复制,通过引入新的和一些有趣的功能。此外,我们还听取了社区的建议和反馈。因此,我们很荣幸能够与你一同见证最新版本(MySQL 8.0.2)的里程碑式的发布,为此我们总结了其中的一些值得注意的变化。跟随我们下面的博客,我们将会分享这些新功能的一些见解。
我们对MySQL 组复制进行了加强,主要有以下几个方面:
- 不允许对离开组的成员进行更改:每当组成员离开群组,离开的成员将会自动设置super_read_only,这可以防止DBA,用户或路由器/代理/负载平衡等带来的的意外更改。除了默认离开组复制的成员不能够进行修改以外,也可以从刚加入开始就开始禁止写入,我们也可以在服务器启动时设置super_read_only参数并启动组复制插件。一旦组复制动成功,他会自动调整super_read_only的值。在多主模式下,所有的节点都将不会设置super_read_only参数 ;在单主的模式下,除了主节点以外,其他的节点都会设置super_read_only为ON 。如果很不幸,你的组复制启动失败了的话,super_read_only参数将不会被设置,将不能进行任何写入操作。这些最新的变化同样适用于MySQL 5.7.19和MySQL 8.0.2。所有的这些,有很大部分是因为我们听取了社区的反馈然后进行开发和加强。--在此 感谢Kenny Gryp
- 可以在Performance Schema 中查看更多信息:在Performance Schema现存的表中,对相关的统计信息的可读性进行了加强。“replication_group_members” 和 “replication_group_member_stats” 表也做了相关拓展,现在可以清楚的看到组成员的角色信息,组成员版本和事物计数器(本地/远程)
- 通过分配权重来指定主库的选举:用户可以通过指定组成员的权重来控制主库的选举,当现有的主节点退出组复制,权重最高的节点就会被提升为主节点。
- 流量控制机制加了一些微调项:用户现在可以更精细的调节流量控制组件。可以定义每个成员的最小配额,整个组的最小提交配额,流程控制窗口等等。
MySQL 8.0.1 已经在MySQL复制核心框架添加了很多引人注目的功能。而MySQL 8.0.2在此基础上又有很大的提升,主要如下:
- 增强对接收器(IO)线程的管理,即使磁盘已满:此功能提高了接收器和其他线程之间的内部协调效率,减少彼此的争用。对于终端用户来说,这意味着在磁盘变满并且接收器线程阻塞的情况下,它不再阻塞监视操作,例如SHOW SLAVE STATUS。它还引入了一个新的线程状态(接收器线程正在等待磁盘空间资源),此外,当磁盘已满的时候,而且你并不能通过释放磁盘空间使接收器线程继续没有完成的工作,这个时候你可以手动停掉它,一般情况下不会有什么问题。但是如果当时有一个写入的事物被清除掉了,而且relay log 也不是在一致的状态下,当接收器线程轮询relay log并且在等待磁盘空间可用时,你就要特别的留心。
- binary log中记录更多的元数据信息:将事物长度添加到全局事务日志事件。这可以对我们未来的优化工作有很大的帮助,而且也提高了binary log的可读性。
如果你在研究MySQL复制的内部机制与原理,我们将很高兴与你一起分享我们做了一些清理工作,并为我们的基础组件添加了一个有趣的服务:
- 组成员事件可以传播到内部其他组件。通过利用新的基础服务架构,组复制插件现在可以通知服务器中的其他组件关于成员关联的事件。例如,通知组成员的角色改变仲裁丢失等。其他的组件可以对这个信息作出反馈,并且用户也可以自己开发组件用来记录和检测这些事件。
- 从XCom(标准的Paxos实现,能严格保证正确性)的内部结构中删除节点上的冗余信息:我们在XCom的结构中删除了一些冗余信息,这使它变得更加简单,更少的出现错误,更容易监控那些节点加入或者离开集群,同时它会在系统中保留以前的信息。
- 对XCom核心和新编码风格进行了几项改进:我们已经修复了XCom的几个BUG,重新格式化了代码,使它符合Google的编码准则,如果你恰巧是一个开发人员,并且再看我们Paxos实现的源代码,你会发现改版后的代码将会更加容易阅读和理解。
- 移除了一些老旧版本binary log转换的源代码:这个清理工作我们清除了一些老版本My数据库产的的binary logs转化为新版本能够识别的一些代码(现在仅支持MySQL5.0以及以上版本)。
还有一件有意思的事情,我们已经在MySQL 8.0.2中更改了以下复制默认值:
- 复制的元数据信息默认以INNODB系统表来存储:这将使MySQL复制功能变得更加强大,在复制崩溃并且自动恢复时候能够使用INNODB事物的特性来保证恢复到指定位置的正确性。此外,新功能还要求将元数据以表的形式存储(比如组复制和多源复制),它与MySQL 8的新的数据字典保持一致。
- 基于行数据的哈希扫描被默认开启:这也许并不是一个被广泛认同的做法,但是当从库有一些没有主键约束的表的时候性能会有提高。在这种情况下,使用基于行的复制时,此更改会最大程度降低性能损失,因为它会减少更新所有行所需的表扫描数(slave_rows_search_algorithms参数默认TABLE_SCAN,INDEX_SCAN,HASH_SCAN)。
- transaction-write-set-extraction参数会默认开启:使用写集提取,为用户启动组复制或在主服务器上使用基于WRITESET的依赖关系对master进行跟踪。
- 默认开启Binary log 过期时间:expire-logs-days默认设置为30(30天)
如你所知,我们一直很忙。事实上,MySQL 8.0.2 Milestone Release已经发布了。在复制方面,我们非常高兴看到许多有趣的功能被加入进来。
接下来将会有专门的博客来介绍说明这些功能。你也可以自己下载进行测试(下载地址),我们需要留意的是MySQL 8.0.2还是DMR版本,并没有GA,使用它需要自己承担风险。另外不要忘记,我们欢迎而且很期望得到你们的反馈。您可以通过错误报告,功能报告,复制邮件列表或仅对这个(或后续的)博文发表评论来给予我们反馈。MySQL 8将会越来越好,越来越精彩。
MySQL 8.0.2复制新特性(翻译)的更多相关文章
- MySQL 8.0的关系数据库新特性详解
前言 MySQL 8.0 当前的最新版本是 8.0.4 rc,估计正式版本出来也快了.本文介绍几个 8.0 在关系数据库方面的主要新特性. 你可能已经知道 MySQL 从版本 5.7 开始提供了 No ...
- MySQL 8.0有什么新功能
https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/ 我们自豪地宣布MySQL 8.0的一般可用性. 现在下载 ...
- Spring Boot 2.0正式发布,新特性解读
作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...
- Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结
Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...
- c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】
引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. ---------- ...
- 有史来最大改变 Android 5.0十大新特性
有史来最大改变 Android 5.0十大新特性 2014.10.16 14:51:31 来源:腾讯数码作者:腾讯数码 ( 0 条评论 ) 距离Android系统上一次重大更新不到一年的时间,谷歌 ...
- C# 6.0可能的新特性及C#发展历程
据扯,C# 6.0在不远的将来就发布了,对应的IDE可能是VS 2014(.Net Framework 5.0),因为VS 2013已于2013年10月份发布了,对应的是.Net Franework ...
- C# 6.0可能的新特性
C# 6.0可能的新特性 1.主构造函数(Primary Constructors) 主构造函数给类中的变量赋值 Before public class Point { private int x, ...
- C# 6.0可能的新特性及C#发展历程[转]
C# 6.0可能的新特性及C#发展历程[转] 年10月份发布了,对应的是.Net Franework 4.5.1. 或者3年,更新增加的东西会比较多,所以对于C# 6.0,还是有一些期待的. 下面 ...
随机推荐
- Tomcat的配置文件Server.xml解析
配置元素说明: 元素名 属性 解释 server port 指定一个端口,这个端口负责监听关闭tomcat 的请求 shutdown 指定向端口发送的命令字符串 service name 指定serv ...
- [中英对照]How PCI Express Works | PCIe工作原理
How PCI Express Works | PCIe工作原理 PCI Express is a high-speed serial connection that operates more li ...
- leetcode:N-Queens 问题
一.N-QueensII class Solution { public: int totalNQueens(int n) { ; vector<); dfs(,n,total,v); retu ...
- 基础爬虫,谁学谁会,用requests、正则表达式爬取豆瓣Top250电影数据!
爬取豆瓣Top250电影的评分.海报.影评等数据! 本项目是爬虫中最基础的,最简单的一例: 后面会有利用爬虫框架来完成更高级.自动化的爬虫程序. 此项目过程是运用requests请求库来获取h ...
- php 数组任意位置插入值
array_splice() $arr = array('A', 'B', 'C'); $arr2 = 'abc';$t = array_splice($arr, 1, 0, $arr2); prin ...
- RabbitMQ---4、消息确认Ack
一:消费者确认 消费者确认或者说消费者应答指的是RabbitMQ需要确认消息到底有没有被收到 - 自动应答 boolean autoAck = true; channel.basicConsume(Q ...
- Java - 将可变性最小化
不可变类,即实例不能被修改的类,实例中包含的所有信息在对象的生命周期内固定不变. 常见的比如String.基本类型的封装类.BigDecimal.BigInteger. 相对与可变类,不可变更易于设计 ...
- 基于.Net下整合IBatis
一. 准备工作 1. 点击此下载支持.Net4.0的 iBatis.Net,工程中引用release文件夹下的dll 最新版(目前已不再更新),有稍作修改使其支持.NET4.0 2. 点击此可查看 i ...
- C#学习笔记-原型模式
题目:编写基本的简历. 实现: 创建基本的Resume类,然后主函数通过实例化Resume来写简历即可. Resume类: class Resume { private string name; pr ...
- js类的笔记
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...