当前位置: 首页 > news >正文

免费印章在线制作免费seo网站优化工具

免费印章在线制作,免费seo网站优化工具,网站有哪些漏洞,河北沧为信息技术有限公司在谈这个特性之前,我们先来看看mysql的复制架构衍生史。 MySQL的复制分为三种:第一种,即普通的replication。 搭建简单,使用非常广泛,从mysql诞生之初,就产生了这种架构,性能非常好,…

在谈这个特性之前,我们先来看看mysql的复制架构衍生史。 MySQL的复制分为三种:

第一种,即普通的replication。 搭建简单,使用非常广泛,从mysql诞生之初,就产生了这种架构,性能非常好,可谓非常成熟。 但是这种架构数据是异步的,所以有丢失数据库的风险。

第二种,即mysql cluster。 搭建也简单,本身也比较稳定,是mysql里面对数据保护最最靠谱的架构,也是唯一一个数据完全同步的架构,绝对的零丢失。不过性能就差远些了。

第三种,即semi-sync replication,半同步,性能,功能都介于以上两者之间。从mysql5.5开始诞生,目的是为了折中上述两种架构的性能以及优缺点。

我们今天谈论第三种架构

我们知道,普通的replication,也即mysql的异步复制,依靠mysql二进制日志也即binary log进行数据复制。比如两台机器,一台主机也即master,另外一台是从机,也即slave。

1. 正常的复制为:事务一(t1)写入binlog buffer;dumper 线程通知slave有新的事务t1;binlog buffer 进行checkpoint;slave的io线程接收到t1并写入到自己的的relay log;slave的sql线程写入到本地数据库。 这时,master和slave都能看到这条新的事务,即使master挂了,slave可以提升为新的master。

2. 异常的复制为:事务一(t1)写入binlog buffer;dumper 线程通知slave有新的事务t1;binlog buffer 进行checkpoint;slave因为网络不稳定,一直没有收到t1;master 挂掉,slave提升为新的master,t1丢失。

3. 很大的问题是:主机和从机事务更新的不同步,就算是没有网络或者其他系统的异常,当业务并发上来时,slave因为要顺序执行master批量事务,导致很大的延迟。

为了弥补以上几种场景的不足,mysql从5.5开始推出了半同步。即在master的dumper线程通知slave后,增加了一个ack,即是否成功收到t1的标志码。也就是dumper线程除了发送t1到slave,还承担了接收slave的ack工作。如果出现异常,没有收到ack,那么将自动降级为普通的复制,直到异常修复。

我们可以看到半同步带来的新问题:

1. 如果异常发生,会降级为普通的复制。 那么从机出现数据不一致的几率会减少,并不是完全消失。

2. 主机dumper线程承担的工作变多了,这样显然会降低整个数据库的性能。

3. 在MySQL 5.5和5.6使用after_commit的模式下, 即如果slave 没有收到事务,也就是还没有写入到relay log 之前,网络出现异常或者不稳定,此时刚好master挂了,系统切换到从机,两边的数据就会出现不一致。 在此情况下,slave会少一个事务的数据。

随着MySQL 5.7版本的发布,半同步复制技术升级为全新的Loss-less Semi-Synchronous Replication架构,其成熟度、数据一致性与执行效率得到显著的提升。

MySQL 5.7对数据复制效率进行了改进

1 主从一致性加强

支持在事务commit前等待ACK

新版本的semi sync 增加了rpl_semi_sync_master_wait_point参数 来控制半同步模式下 主库在返回给会话事务成功之前提交事务的方式。

该参数有两个值:AFTER_COMMIT(5.6默认值)

master将每个事务写入binlog ,传递到slave 刷新到磁盘(relay log),同时主库提交事务。master等待slave 反馈收到relay log,只有收到ACK后master才将commit OK结果反馈给客户端。

e013cdc10900061c94dbf1a7cf877247.pngAFTER_SYNC(5.7默认值,但5.6中无此模式)

master 将每个事务写入binlog , 传递到slave 刷新到磁盘(relay log)。master等待slave 反馈接收到relay log的ack之后,再提交事务并且返回commit OK结果给客户端。 即使主库crash,所有在主库上已经提交的事务都能保证已经同步到slave的relay log中。

623810298de129264e077d48abbeba08.png

因此5.7引入了after_sync模式,带来的主要收益是解决after_commit导致的master crash主从间数据不一致问题,因此在引入after_sync模式后,所有提交的数据已经都被复制,故障切换时数据一致性将得到提升。

2 性能提升 支持发送binlog和接受ack的异步化

旧版本的semi sync 受限于dump thread ,原因是dump thread 承担了两份不同且又十分频繁的任务:传送binlog 给slave ,还需要等待slave反馈信息,而且这两个任务是串行的,dump thread 必须等待 slave 返回之后才会传送下一个 events 事务。dump thread 已然成为整个半同步提高性能的瓶颈。在高并发业务场景下,这样的机制会影响数据库整体的TPS .

7106e79a1a6ce9af5ba094011492b0c1.png

Without ACK receiving thread

为了解决上述问题,在5.7版本的semi sync 框架中,独立出一个 ack collector thread ,专门用于接收slave 的反馈信息。这样master 上有两个线程独立工作,可以同时发送binlog 到slave ,和接收slave的反馈。

d4c269a1df18b1ed88c9ff0136ea7a7c.png

With ACK receiving thread

3 性能提升 控制主库接收slave 写事务成功反馈数量

MySQL 5.7新增了rpl_semi_sync_master_wait_slave_count参数,可以用来控制主库接受多少个slave写事务成功反馈,给高可用架构切换提供了灵活性。

如图所示,当count值为2时,master需等待两个slave的ack

4d4a272d21ebd902a974578042c03d95.png

4 性能提升 Binlog 互斥锁改进

旧版本半同步复制在主提交binlog的写会话和dump thread读binlog的操作都会对binlog添加互斥锁,导致binlog文件的读写是串行化的,存在并发度的问题。

167a51c6229780dbee7f4a9bbbfe93a2.png

MySQL 5.7对binlog lock进行了以下两方面优化

1.移除了dump thread对binlog的互斥锁

2.加入了安全边际保证binlog的读安全

c5b3950c3ab245339df2afdbb73c8555.png

5 性能提升 组提交

5.7引入了新的变量slave-parallel-type,其可以配置的值有:

DATABASE (5.7之前默认值),基于库的并行复制方式;

LOGICAL_CLOCK (5.7新增值),基于组提交的并行复制方式;

MySQL 5.6版本也支持所谓的并行复制,但是其并行只是基于DATABASE的,也就是基于库的。如果用户的MySQL数据库实例中存在多个DATABASE ,对于从机复制的速度的确可以有比较大的帮助,如果用户实例仅有一个库,那么就无法实现并行回放,甚至性能会比原来的单线程更差。

MySQL5.7中增加了一种新的并行模式:为同时进入COMMIT阶段的事务分配相同的序列号,这些拥有相同序列号的事务在备库是可以并发执行的。

MySQL 5.7真正实现的并行复制,这其中最为主要的原因就是slave服务器的回放与主机是一致的即master服务器上是怎么并行执行的slave上就怎样进行并行回放。不再有库的并行复制限制,对于二进制日志格式也无特殊的要求(基于库的并行复制也没有要求)。

因此下面的序列中可以并发的序列为(其中前面一个数字为last_committed ,后面一个数字为sequence_number ):

trx1 1…..2

trx2 1………….3

trx3 1…………………….4

trx4 2……………………….5

trx5 3…………………………..6

trx6 3………………………………7

trx7 6………………………………..8

备库并行规则:当分发一个事务时,其last_committed 序列号比当前正在执行的事务的最小sequence_number要小时,则允许执行。

因此,

a)trx1执行,last_commit<2的可并发,trx2, trx3可继续分发执行

b)trx1执行完成后,last_commit < 3的可以执行, trx4可分发

c)trx2执行完成后,last_commit < 4的可以执行, trx5, trx6可分发

d)trx3、trx4、trx5完成后,last_commit < 7的可以执行,trx7可分发

结论

我们认为MySQL 5.7版对Loss-Less半同步复制技术的优化,使得其成熟度和执行效率都得到了质的提高。我们建议在使用MySQL 5.7作为生产环境的部署时,可以使用半同步技术作为高可用与读写分离方案的数据复制方案。

http://www.lbrq.cn/news/2542159.html

相关文章:

  • 品牌官方网站建设快速排名优化系统
  • 网站建设-易速通科技一站式海外推广平台
  • 怎么做企业功能网站友情链接图片
  • 必应收录提交入口邯郸seo优化
  • 房地产新闻最近怎么进行网站关键词优化
  • 网站制作哪家公司好写软文平台
  • 网站开发预算编制常见的搜索引擎
  • 靓号注册网站免费seo推广优化公司哪家好
  • 做网站还是微信小程序百度24小时人工电话
  • 北京网站设计公司哪家公司好互联网
  • wordpress+3.2.1漏洞seo优化技巧有哪些
  • 学校门户网站功能外贸平台排名
  • 咖啡网站建设市场分析一个新产品策划方案
  • 网站地图怎样做绍兴seo公司
  • flash网站设计欣赏seo是什么服
  • 怎样修改网站的主页内容个人如何在百度做广告
  • 网站设计公司合肥网站推广属于哪些
  • 怎么自己做网站制作网站的基本步骤
  • 西安高校网站建设网站友链查询接口
  • 义乌百度推广公司杭州百度快照优化排名
  • 网站怎么样做采集别人网站的文章seowhy教研室
  • 有没有人通过网站建设卖东西的如何制作一个自己的网站
  • 合肥网站建设合肥做网站seo网站快速排名软件
  • 滕州网站建设网站行吗推广文章的步骤
  • 做网站的后台开发需要会些什么求职seo
  • php网站标题修改谷歌浏览器下载安装2022最新版
  • 做任务挣钱网站平台营销策略都有哪些
  • 青岛做网站的公司哪个比较好seo效果分析
  • 商城网站建站系统网络推广图片
  • 工程建设信息都在哪个网站发布服装品牌策划及营销推广方案
  • 疯狂星期四文案网第27天运营日记
  • 基于深度学习的医学图像分析:使用MobileNet实现医学图像分类
  • 涉水救援机器人cad【12张】三维图+设计书明说
  • WinForm之ListBox 控件
  • LLM Prompt与开源模型资源(3)如何写一个好的 Prompt
  • 什么是三防平板电脑?三防平板有什么作用?