全球数据库网络(GDN)

全球数据库网络(Global Database Network,简称GDN)是由分布于多个地域的多个PolarDB集群构成的网络。在该网络中,所有集群的数据保持同步,且每个集群均可提供读服务(写请求将被转发至主集群进行处理)。

功能简介

全球数据库网络(GDN)采用一个主集群(Primary Cluster)和多个从集群(Secondary Cluster)的架构。主集群负责处理写请求,从集群分布在不同地域,负责处理本地的读请求。所有集群之间的数据通过低延迟链路保持同步,从而构成一个逻辑统一的数据库。

image

数据同步机制

GDN通过异步物理复制机制实现跨地域数据同步。借助物理日志并行回放等技术,主从集群间的数据复制延迟可控制在2秒以内。这种同步方式不会影响主集群的性能和稳定性,从而确保了数据在全局范围内的最终一致性。同时,GDN中的每个集群均提供读写服务,并具备异地灾备能力。

读写分离与请求路由

GDN中的集群(主集群和从集群)读写请求路由,是由每个集群的数据库代理配置所决定。您的应用程序无需修改代码,只需连接到相应集群的地址,读写请求便会按以下逻辑自行路由:

  • 写请求(如INSERTUPDATEDELETE等)、其他广播语法(如SET语句)和事务中的所有请求,会被自动转发到主集群的主节点处理。

  • 读请求默认会路由到本地从集群的只读节点,实现就近访问。如果开启了会话一致性,部分读请求也可能被路由到主集群的主节点以保证数据一致性。

此外,GDN还提供了一个统一的连接地址,这不仅能够实现就近访问,还能在主集群切换后保持域名不变。

单击展开查看详细转发逻辑

目标节点

转发的请求

只发往主集群的主节点

  • 所有DML操作(INSERTUPDATEDELETESELECT FOR UPDATE等)。

  • 所有DDL操作(建表或库、删表或库、变更表结构、权限等)。

  • 所有事务中的请求。

  • 用户自定义函数。

  • 存储过程。

  • EXECUTE语句。

  • Multi Statements

  • 使用到临时表的请求。

  • SELECT last_insert_id()

  • 所有对用户变量的查询和更改。

  • SHOW PROCESSLIST

  • KILL(SQL语句中的KILL,非命令KILL)。

发往只读节点或主节点

说明

仅当数据库代理配置中主库是否接受读时会发往主节点。

  • 非事务中的读请求。

  • COM_STMT_EXECUTE命令。

总是发往所有节点

  • 所有系统变量的更改。

  • USE命令。

  • COM_STMT_PREPARE命令。

  • COM_CHANGE_USERCOM_QUITCOM_SET_OPTION等命令。

说明

从集群中的主节点主要用于异步复制主集群数据,不处理任何读写请求。因此,表中的主节点指的是主集群中的主节点,而只读节点则指的是从集群中的只读节点。

应用场景

异地多活(多地部署)

将业务部署在多个地域,通过GDN的跨地域低延迟同步、跨地域读写分离以及就近读取等特性,可确保各地域的应用程序在访问数据库时延迟小于2秒。

  • 典型行业:游戏、跨境电商、本地生活(外卖)、新零售(门店)等。

  • 业务架构

    • 各地域的应用程序均直接就近读写本地区的数据库(写请求将被转发至主集群进行处理),性能最佳。

    • GDN中,每个子集群(包括主集群和从集群)均提供独立的集群地址。您可以根据应用所处地域,连接就近的集群地址以实现访问。

    • 北京和深圳的从集群规格需大于或等于杭州的主集群规格,建议保持一致。

image

异地灾备

通过GDN实现跨地域高可用性,提高数据安全性和系统可用性。当主集群所在的机房或数据中心发生故障时,您只需手动将业务切换至从集群,即可快速恢复业务。可以支持两地三中心、两地四中心、三地六中心等多种架构。

  • 典型行业:银行、证券、保险等。

  • 业务架构(以两地三中心架构为例):

    • 北京地域为主地域,采用双可用区部署形态,覆盖AZ1AZ2。

    • 上海地域为灾备地域,采用单可用区部署形态。

    • 应用程序默认对北京地域的AZ1中的数据库进行本地读写,当AZ1发生故障时,优先切换至北京AZ2。若AZ1AZ2均发生故障时,切换至上海AZ3。

image
说明

GDN中的主从集群切换可在10分钟内完成(实际测试结果为5分钟以内)。在切换过程中,可能会出现不超过160秒的连接闪断。建议您在业务低谷期进行切换操作,并确保应用具备重连机制。

产品优势

  • 跨地域部署:无需修改业务代码,即可直接从同城部署扩展到多地部署。

  • 跨地域读写分离及就近读取:GDN内的读请求被直接发送至当前地域下的从集群,写请求被转发至主集群。

  • 配置灵活:主从集群拥有相互独立的配置,包括集群规格、白名单及参数值等。

  • 跨地域低延时同步:通过异步物理复制(基于Redo Log)和并行回放等技术,降低主从集群之间的跨地域复制延迟。所有集群间的数据均能保持同步,且网络延迟控制在2秒以内,从而显著减少了非中心区域应用访问时的读取延迟。

适用范围

集群配置

  • 产品版本:企业版,且系列为集群版。

  • 内核版本需为以下版本之一:

    • MySQL 8.0.2

    • MySQL 8.0.1,且内核小版本需为8.0.1.1.17及以上。

    • MySQL 5.7,且内核小版本需为5.7.1.0.21及以上。

    • MySQL 5.6,且内核小版本需为5.6.1.0.32及以上。

  • 节点:需至少包含一个只读节点。

支持地域

中国内地所有地域、中国(香港)、日本(东京)、韩国(首尔)、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、菲律宾(马尼拉)、泰国(曼谷)、德国(法兰克福)、美国(硅谷)、美国(弗吉尼亚)、英国(伦敦)。

说明

支持跨境部署从集群,但需提交相关申请,详细请参见添加从集群

功能限制

  • 全球数据库网络(GDN)中的集群支持使用列存索引(IMCI)功能,但需开启loose_polar_enable_imci_with_standby集群参数后,且集群版本需满足以下条件之一,才可添加只读列存节点。

    • MySQL 8.0.1,且修订版本为8.0.1.1.48及以上。

    • MySQL 8.0.2,且修订版本为8.0.2.2.27及以上。

  • GDN中的集群支持Serverless集群或在固定规格集群上开启Serverless功能。然而,当主集群的内核版本满足以下条件时,GDN中的所有集群至少需要有一个只读节点。

    • MySQL 8.0.1,且内核小版本为8.0.1.1.42以下版本。

    • MySQL 8.0.2,且内核小版本为8.0.2.2.23以下版本。

  • GDN中的集群不支持库表恢复功能。

其他限制

  • 一个GDN包含一个主集群和最多四个从集群。

    说明

    若您需要添加更多从集群,请前往配额中心,根据配额ID polardb_mysql_gdn_region找到相应的配额项,在对应的操作列上单击申请,以添加更多从集群。

  • 一个集群只能属于一个GDN。

  • 从集群只能新建,不支持将已有集群添加为从集群。

  • 主集群和从集群的数据库引擎版本需保持一致,即都为MySQL 8.0、MySQL 5.7MySQL 5.6。

  • GDN中的从集群(非Serverless集群)计算节点的规格要求至少为4核及以上。

  • GDN中的每个集群都默认包含2个节点,最多可增加至16个节点。

费用说明

使用全球数据库网络(GDN)时,您需要支付的费用包含集群自身费用和可能产生的跨地域数据传输费用。其中,数据传输费用根据传输是否跨境进行区分:

  • 非跨境数据传输(免费)

    • 场景:您的主集群与从集群均部署在中国内地地域,或均部署在中国(香港)及其他海外地域。

    • 计费规则:免费。

  • 跨境数据传输(收费)

    重要

    跨境数据传输自北京时间20260101起开始收取费用,在此之前不收取任何费用。

    • 场景:您的主集群与从集群中,一个部署在中国内地地域,另一个部署在中国(香港)或其他海外地域。

    • 计费规则:5.6 元/GB,按小时出账。该费用根据一小时内从主集群物理复制到跨境从集群的Redo日志量来计算。您可以通过查询日志序列号(LSN)转换后的物理位置来估算此流量费用。

      单击展开查看计费示例

      示例

      例如:在09:00,您查询到日志的物理写入位置为ib_logfile1/648143676,而到10:00,该位置更新为ib_logfile3/648142342。这表明在此一小时内,数据写入量为两个位置之差。

      1. 在起始文件 (ib_logfile1) 中写入的量:
        用文件总大小减去起始偏移量。每个日志文件大小为1 GB(1073741824 Byte),则写入量为1073741824 - 648143676 = 425598148 Byte

      2. 中间完整写入的文件 (ib_logfile2) 的量:
        ib_logfile1写满后,系统完整地写完了ib_logfile2。这部分写入量为1073741824 Byte(1 GB)

      3. 在结束文件 (ib_logfile3) 中写入的量:
        这部分就是结束时的偏移量,即648142342字节。

      因此,总写入量 = 425598148 + 1073741824 + 648142342 = 2147482314 Byte,即2147482314 / 1024 / 1024 / 1024 = 1.999998 GB(向下舍弃,保留6位小数)。这一小时产生的跨境流量费用约为1.999998 GB * 5.6 元/GB = 11.1999888

      查询日志写入进度与物理文件偏移量

      -- 查询日志系统当前写入进度
      SHOW STATUS LIKE 'Innodb_log_write_lsn'; 
      +----------------------+------------+
      | Variable_name        | Value      |
      +----------------------+------------+
      | Innodb_log_write_lsn | 1721889596 |
      +----------------------+------------+
      
      -- 查询物理文件偏移量,单位Byte
      SELECT lsn_to_pos(1721889596); 
      +------------------------+
      | lsn_to_pos(1721889596) |
      +------------------------+
      | ib_logfile1/648143676  |
      +------------------------+
说明

若您使用全局域名功能,将会额外产生内网DNS解析费用跨地域流量费用,详细说明请参见全局域名费用说明

开始使用

  1. 创建与管理全球数据库网络:选择适用条件一个的集群作为全球数据库网络(GDN)的主集群。

  2. 添加从集群:前往PolarDB购买页,为上述创建的全球数据库网络(GDN)添加相应的从集群。

  3. 连接全球数据库网络:在GDN中,每个子集群(主集群和从集群)均提供独立的集群地址。您可以根据应用所在的地域,连接就近的集群地址以实现访问。此外,GDN还提供了一个统一的连接地址,这不仅能够实现就近访问,还能在主集群切换后保持域名不变。

专家面对面

若您对全球数据库网络(GDN)功能有任何问题,可通过钉钉搜索群号入群咨询。您可以直接@群内专家,并附上您要咨询的问题。同时,群内也有PolarDB智能小助手7*24小时在线回答您的问题。

钉钉群号:30245017864

相关视频