TDSQL·专家篇·系统架构

weixin_44020914 2022-03-17 10:43:19

架构简介

高可用架构

在生产系统中,通常都需要用高可用方案来保证系统不间断运行,数据库作为系统数据存储和服务的核心能力,其可用要求高于计算服务资源。目前,数据库的高可用方案通常是让多个数据库服务协同工作,当一台数据库故障,余下的立即顶替上去工作,这样就可做到不中断服务或只中断很短时间;或者是让多台数据库同时提供服务,用户可以访问任意一台数据库,当其中一台数据库故障,立即更换访问另外数据库即可。
由于数据库中记录了数据,想要在多台数据库中切换,数据必须是同步的,所以数据同步技术是数据库高可用方案的基础。当前,数据复制有以下三种方式:

  • 异步复制:应用发起更新(含增加、删除、修改操作)请求,Master 完成相应操作后立即响应应用,Master 向 Slave 异步复制数据。因此异步复制方式下,Slave 不可用不影响主库上的操作,而 Master 不可用有概率会引起数据不一致。
  • 强同步复制:应用发起更新请求,Master 完成操作后向 Slave 复制数据,Slave 接收到数据后向 Master 返回成功信息,Master 接到 Slave 的反馈后再应答给应用。Master 向 Slave 复制数据是同步进行的,因此 Slave 不可用会影响 Master 上的操作,而 Master 不可用不会引起数据不一致。

    注意:

    使用“强同步”复制时,如果主库与备库之间网络中断或备库出现问题,主库也会被锁住(hang),而此时如果只有一个主库或一个备库,那么是无法做高可用方案的。因为单一服务器服务,如果故障会直接导致部分数据完全丢失,不符合金融级数据安全要求。

  • 半同步复制:半同步复制是 google 提出的一种同步方案,其原理是正常情况下数据复制方式采用强同步复制方式,当 Master 向 Slave 复制数据出现异常的时候(Slave 不可用或者双节点间的网络异常)退化成异步复制。当异常恢复后,异步复制会恢复成强同步复制。半同步复制意味着 Master 不可用会有较小概率引起数据不一致。

常见高可用架构

  • 共享存储方案:使用共享存储,如 SAN 存储。SAN 的原理是多台数据库服务器共享同一个存储区域,这样多台数据库都可以“读写”同一份数据。当主库发生故障时,第三方高可用软件把文件系统在备库上挂起,然后在备库上启动数据库即完成切换。
  • 日志同步或流复制同步:数据库最常见复制模式,如 MySQL 数据库。每当写入数据,MySQL Master Server 将自己的 Binary Log 通过复制线程传输给 Slave,Slave 接收到 Binary Log 以后,依照 Binary Log 内容,写入相同数据到文件系统。目前 MySQL 已经提供:
    • 异步复制:异步复制可以确保得到快速的响应结构,但是不能确保二进制日志确实到达了 Slave 上,即无法保障数据一致性。
    • 半同步复制:(由 google 提供的同步插件)半同步复制对于客户的请求响应稍微慢点,在超时等情况下,会退化为异步,即基本保障数据一致性,但无法保证数据完全一致性。
  • 基于触发器的同步:使用触发器记录数据变化,然后同步到另一台数据库上。
  • 基于中间件的同步:系统不直接连接到底层数据库,而是连接到一个中间件,中间件把数据库变更发送到底层多台数据库上,从而完成数据同步。早几年,由于业务需求,数据库性能、同步机制等问题,某些软件开发商通常采用类似架构。

更多内容,请见:https://cloud.tencent.com/document/product/237/1057

...全文
243 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

87

社区成员

发帖
与我相关
我的任务
社区描述
TDSQL开发者
其他 企业社区
社区管理员
  • csdnsqst0015
  • kikokingzz
  • karina17
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

社区初立,为了鼓励小友们在社区中积极互动,现在有一个活动如下:

试试用AI创作助手写篇文章吧