暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

分布式数据库系列之GoldenDB高可用技术

张芝 2024-03-07
1187

分布式核心数据库的高可用是保证业务连续性的基础,本文主要介绍GoldenDB的同步技术(gSync)以及各个组件节点的高可用技术实现,加深对GoldenDB分布式数据库高可用实现的理解。


GoldenDB高可用

GoldenDB同步技术
 MySQL半同步复制
MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。主从复制的基本过程如下图所示:

图片

  • 主从复制的完成通过以下三个进程实现的
  1. 主库 binary log dump 线程:当从库连接主库时,主库会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主库上的bin-log加锁,当读取完成,甚至在发动给从库之前,锁会被释放。
  2. 从库I/O线程:当从库执行start slave命令之后,从库会创建一个I/O线程用来连接主库,请求主库中更新的bin-log。I/O线程接收到主库binlog dump 进程发来的更新之后,保存在本地relay-log中。

  3. 从库SQL线程:SQL线程负责读取relay log中的内容解析成具体的操作并执行,最终保证主从数据的一致性。

MySQL异步复制的过程并不会验证从库接收binlog是否完成,因此在故障场景下可能会出现从库没有接收到主库发送过来的binlog日志,导致主库从库数据不一致,甚至会出现数据丢失的可能。为了解决以上问题,MySQL引入了半同步复制技术,半同步复制中主库要等待至少一个从库节点将binlog文件flush到relay log中的返回即认为数据同步正常。

图片

半同步复制技术有以下特性:
  • 半同步复制必须在主库和从库两端同时开启,如果在主库上没打开,或者从库上没有开启,主库都会使用异步方式复制

  • 从库在连接到主库时会询问主库是不是配置了半同步

  • 如果半同步复制主库从库节点都开启了,那么此时主库的事务线程在提交时会被阻塞并等待,会出现两种情况:至少一个从库节点ack通知主库已经收到了所有这个事务的Binlog日志;或者一直等待直到超过配置的超时参数rpl_semi_sync_master_timeout,这种情况下半同步复制将自动关闭,转换为异步复制

  • 从库节点只有在接收到某一个事务的所有Binlog,将其写入并Flush到Relay Log文件之后,才会ack通知对应主库上面的等待线程。

  • 如果在等待过程中,等待时间已经超过了设置的超时时间,没有任何一个从节点通知当前事务,那么此时主库会自动转换为异步复制,当至少一个半同步从节点赶上来时,主库便会自动转换为半同步方式的复制。

图片

在MySQL中安装半同步模块并设置参数rpl_semi_sync_master_enabled开启半同步复制:

mysql> set global rpl_semi_sync_master_enabled = 1;
mysql> set global rpl_semi_sync_master_timeout = 2000;
1.1.2 GoldenDB中的同步技术(gSync)
编者注:GoldenDB的同步技术是在mySql半同步的基础上进行了优化,申请多项专利,名称是gSync
MySQL半同步复制过程中binary log dump 线程和从库replay log SQL线程都是单线程工作,这在一定程度生会影响复制的性能。GoldenDB通过业务线程池取消等待,通过super线程专门处理事务最后的commit操作,从而提升SQL引擎的并行运行效率及吞吐量,在高并发、高网络时延下性能可以提升20%。。

图片

1)并行复制

原生MySQL中binlog dump thread和SQL thread是单线程的,在GoldenDB中使用多线程对此进行了优化。

2)线程池

  • 减少线程重复创建和销毁开销,提高性能

线程池预先创建一定数量的线程,在监听到新的连接请求时,线程池直接从现有线程中分配线程提供服务。服务结束后该线程不会直接销毁,而是去处理其它请求,避免了线程和内存对象的频繁创建和销毁,减少了上下文切换,提高了资源利用率。

  • 系统保护,防止DB雪崩

线程池技术同时也限制了并发线程数,即限制了MySQL运行的线程数。当连接或请求超过设置的最大线程数时候,新的请求需要排队,防止DB出现雪崩,保护底层DB。

3)机房间的数据同步方式

  • 本地机房和同城机房数据采用快同步复制

  • 本地机房和同城机房元数据采用快同步复制

  • 本地机房/同城机房和异地机房间数据采用异步复制

  • 本地机房/同城机房和异地机房间元数据采用快同步复制

  • 同城机房GTM采用实时同步复制,异地机房GTM不从主机房同步数据

图片


最后修改时间:2024-03-08 09:15:17
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论