全局表

更新时间:
复制为 MD 格式

当跨地域业务需要低延迟访问和高可用性保障时,可使用全局表(Global Table)功能的多地域自动数据同步实现跨地域容灾,支持就近读写和容灾切换。

工作原理

全局表基于表格存储的多地域复制技术,在多个地域实例间建立数据同步通道。当某个地域的表发生数据变更时,变更会自动同步到其他地域的副本表,实现数据的跨地域一致性。表副本支持在不同实例和地域上动态扩展和解除。

整个复制过程在后台全自动运行,无需人工干预。该机制能够在确保数据一致性的前提下达成可接受的恢复点目标(RPO),有效满足多数业务系统的容灾与连续性要求。

在日常使用中,用户或应用程序可就近访问副本进行读写操作,显著降低访问延迟。当发生区域性故障或重大灾难(例如数据中心中断、自然灾害等)时,用户可基于多副本快速发起容灾切换操作,重建关键应用与数据,有效保障业务连续性。

image.png

功能特性

image

多地域容灾

Region的表副本,当发生地域级别的故障时,其他地域的副本仍可提供服务

image

低延迟访问

用户或应用程序可以在就近副本上读取和写入数据,大大降低操作延迟

image

数据最终一致

采用最终一致性模型,多个副本间异步同步,数据最终一致

image

自动冲突解决

系统基于LLW(Last Write Win)算法自动处理多地并发写入冲突

适用范围

适用于对高可用性、跨地域低延迟读写和跨地域容灾有强需求的业务场景。典型场景如下:

  • 跨地域备份:在主地域发生故障时,可切换到备地域继续提供读服务,保障业务连续性。例如某电商系统用户表的主表和备表分别存储在华东1(杭州)地域和华北2(北京)地域的表格存储中,当华东1(杭州)地域出现故障时,由华北2(北京)继续提供查询服务。

  • 一地写入、多地读取:在就近地域写入数据,其他地域也就近读取,适合异地访问加速的场景。例如业务主写到华东1(杭州)地域,华北2(北京)和华东2(上海)地域部署只读副本,满足跨地域低延迟读取的需求。

  • 多地写入、全局读取:多地域写入数据时,生成全局数据集,并提供最终一致读取,适合需要访问全局数据集的场景。例如游戏用户资料、社交消息系统等跨地域分布场景。

全局表地域支持:目前支持华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华北6(乌兰察布)、华南1(深圳)、华南3(广州)和西南1(成都)地域。

新建全局表

开通服务和创建实例,请分别在主地域和目标副本地域创建实例。

步骤一:准备基础表

在主地域创建作为全局表基础的数据表。

说明
  • 如需使用已有数据表作为全局表的基础表,请确保数据表满足数据生命周期为-1、最大版本数为1、数据有效版本偏差为MaxInt32(2147483647)且开启行模式表的配置要求。

  • 由于非行模式的存量表不支持创建全局表。如需使用,请联系技术支持开通。

  1. 进入实例管理页面。

    1. 登录表格存储控制台

    2. 在页面上方,选择资源组和地域。

    3. 概览页面,单击实例别名或在实例操作列单击实例管理

  2. 实例详情页签,单击创建数据表

  3. 创建数据表对话框,设置数据表名称表主键

  4. 打开高级设置开关后,打开快捷设置全局表依赖开关,系统会自动配置全局表相关依赖项。

    参数

    全局表的值要求

    说明

    数据生命周期

    -1

    数据永不过期。

    最大版本数

    1

    最大版本数为1。

    是否支持行版本

    开启

    设置为行模式表。

    说明

    开启是否支持行版本后不支持关闭。开启行版本后存在如下限制:

    • 单行数据最多支持 256 列。

    • 写入数据时不支持手动指定版本号,只能由系统自动生成。

    • 执行 Update 操作时,系统需先读取当前行版本,因此会带来少量额外的读取负载。

    数据有效版本偏差

    MaxInt32 (2147483647)

    版本偏差设置为Int32最大值,表示不限制。

    image

  5. 单击创建

步骤二:创建全局表

将基础表转换为全局表,并添加副本地域。创建完成后,系统会自动在选定的副本地域创建对应的数据表,并建立数据同步链路。

  1. 在主地域的数据表列表页签,单击基础表操作列的新建全局表

    说明

    单击数据表名称后,在全局表页签,单击创建全局表同步关系,也可进行后续操作。

  2. 创建全局表对话框,设置全局表参数。

    说明

    如果目标实例中存在与全局表同名的数据表,则会导致全局表创建失败。

    配置主备模式

    1. 当前资源区域,选择全局同步模式主备模式(跨地域复制)

    2. 目标表区域,选择目标实例所在地域和实例名称。

      系统支持一次添加多个目标实例。创建全局表后,系统会自动在所选地域的实例中创建目标表,目标表名与当前基础表名相同。

    image

    配置多活模式

    1. 当前资源区域,选择全局同步模式多读多写(跨地域复制)

    2. 目标表区域,选择目标实例所在地域、实例名称和读写模式。

      系统支持一次添加多个目标实例。创建全局表后,系统会自动在所选地域的实例中创建目标表,目标表名与当前基础表名相同。

    image

  3. 单击确定

    创建全局表对话框,单击去列表查看,在全局表页签,可查看全局表。

步骤三:验证并使用全局表功能

创建完成后,验证数据同步功能并进行基本的读写测试。

  1. 写入测试数据:在主地域的数据表中写入测试数据。

    1. 在主地域的数据表列表页签,单击基础表操作列的查询/搜索

    2. 数据管理页签,单击插入数据

    3. 插入数据对话框,设置主键,单击增加属性列添加属性,然后单击确定

  2. 验证数据同步:等待1-3秒后,在副本地域查询数据验证同步效果。

    1. 在主地域的数据表列表页签,单击基础表操作列的查询/搜索

    2. 在基础表的全局表页签,单击副本地域的副本表名称。

    3. 在副本表的数据管理页签,即可看到从主地域基础表中同步到副本地域表的数据。

全局表读写

全局表中的各副本表与数据表的数据读取数据写入操作一致。

  • 实际读取时请获取相应副本表所在实例的Endpoint进行读取。

  • 在主备模式中,只有主副本允许通过所在实例的Endpoint写入,其他副本禁止写入(除了主备切换时);在多活模式中,可写副本均允许通过所在实例的Endpoint写入。

    重要

    在多活模式的日常写入场景中可能存在同步写操作与用户写操作同时进行的情况。如果两者同时修改同一数据行,则较大版本的行将覆盖较小版本的行,导致小版本数据被覆盖或者被丢弃。

管理主备模式的全局表

修改主备关系

重要
  • 只有主备模式的全局表支持此功能。

  • 在主备切换场景中可能存在同步写操作与用户写操作同时进行的情况。如果两者同时修改同一数据行,则较大版本的行将覆盖较小版本的行,导致小版本数据被覆盖或者被丢弃。

主备模式下,当主副本表出现故障或者应用层需切换写入Region时,可将其他副本表设为新主副本表继续提供服务。

  1. 全局表页签,单击备表操作列的切换为主表

  2. 修改主备关系对话框,提交主表切换任务并启动数据同步。

    重要

    数据同步将会持续进行,同步时长与数据规模、系统资源等相关,请耐心等待。数据同步过程中,主副本表和选作新主的副本表均为可读写,可能存在数据不一致风险。

    1. 数据同步 步骤中,单击开始数据同步

    2. 主备表切换对话框,单击查看详情,查看数据同步的RPO情况。

  3. 切换应用层写链路。

    确认主备表数据一致性后再进行应用层写链路切换操作。

    1. 单击任一表同步模式列的确认写链路切换

    2. 应用层写链路切换步骤中,确认数据同步完成,并且已在您的应用中将所有写入端修改为新主的Endpoint后,单击已完成写链路切换

  4. 确认切换为主表。

    在写链路切换完成后请尽快进行主表切换确认操作。

    重要

    操作后,原主表的写入能力将被关闭。

    1. 单击任一表同步模式列的查看

    2. 确认切换主表步骤中,单击同步完成,立即切换主表

      说明

      如需取消主备表切换,请单击取消主表切换后完成取消确认。

    3. 在确认对话框中,单击确定

      修改成功后,原主副本将只提供只读能力,新的主副本开始提供读写能力。

增加全局地域

为全局表添加一个或多个全局地域。

  1. 全局表页签,单击副本表操作列的增加全局地域

  2. 增加全局地域对话框,选择目标实例的地域和实例名称。

    如需添加多个全局地域,请单击添加实例后继续操作。

    说明

    如果目标实例中存在与全局表同名的数据表,则会导致全局地域添加失败。

  3. 单击确定

解除同步关系

为全局表解除同步关系。

说明

如需停止全局表的所有地域的同步,请分别对各副本表进行绑定关系解除操作,且必须先操作备表,然后操作主表。如需移除某个地域的同步关系,仅对待解除的副本表进行操作即可。

  1. 全局表页签,任选一种方式开始解除同步关系。

    • 单个解除:单击副本表操作列的解除同步关系

    • 批量解除:选择待解除的副本表,单击列表下方解除同步关系

  2. 在确认对话框中,单击确定

    系统开始解绑同步关系,请耐心等待解绑完成。

管理多活模式的全局表

编辑全局表的目标实例

  1. 全局表页签,单击副本表操作列的编辑

  2. 编辑全局表对话框,按需执行相应操作。

    • 新增目标实例:选择目标实例的地域、实例名称和读写模式。

      如需添加多个全局地域,请单击添加实例后继续操作。

      说明

      如果目标实例中存在与全局表同名的数据表,则会导致全局地域添加失败。

    • 修改实例的读写模式:选择已有实例的读写模式。

  3. 单击确定

解除同步关系

为全局表解除同步关系。

说明

如需停止全局表的所有地域的同步,请分别对各副本表进行绑定关系解除操作。如需移除某个地域的同步关系,仅对待解除的副本表进行操作即可。

  1. 全局表页签,单击副本表操作列的解除同步

  2. 在确认对话框中,单击确定

    系统开始解绑同步关系,请耐心等待解绑完成。

开发集成

可通过Java SDK使用全局表。

应用于生产环境

  • 全局表操作建议

    • 为存量表创建全局表:原有读写API不变,数据自动同步到新的副本,新的副本可分担读负载。

    • 0全新创建全局表:确定好表结构,创建基础表后再创建全局表。全局表不支持修改表结构,请确保基础表测试通过后再进行全局表创建。

    • 动态绑定新的副本:使用全局表过程中,可动态添加新的副本,不影响已有副本的读写。新的副本将具备全局表内最新的数据。

    • 解绑一些已有的副本:运行一段时间后,如果某个副本表已不再需要,可先将其解绑。解绑后,该副本将不再同步其他副本的数据,但表及其数据仍存在。如需删除该副本,请在解绑副本后再手动删除。

  • 合理选择地域组合:根据用户分布和业务需求就近选择合适的主地域和备地域。

  • 主地域故障切换:主备模式下,当主地域不可用时,可通过控制台先选到新主副本表再切换上层应用写链路,然后等待数据同步到新主副本表后切换为主副本表。切换过程中可能有短暂的写入中断,建议业务侧实现重试机制。

    重要

    请业务应用自行保障应用与服务的切换顺序和时间点,避免出现数据丢失。

配额与限制

更多信息,请参见全局表使用限制

  • 表类型限制:仅支持数据表,不支持时序表、多元索引和二级索引的跨地域同步。

  • 副本数量:单个全局表最多支持10个地域。

  • 同步延迟:同步RPO一般在数秒内,具体取决于地域、网络情况和数据量。

  • 数据覆盖风险 :在主备切换、多活模式的日常写入场景中可能存在同步写操作与用户写操作同时进行的情况。如果两者同时修改同一数据行,则较大版本的行将覆盖较小版本的行,导致小版本数据被覆盖或者被丢弃。

  • 暂不支持功能说明

    • 数据传输延时的可靠性保障暂不提供,即暂不提供RTC。

    • 全局表不支持修改表属性,例如修改TTL配置、增加预定义列。

    • 已有数据表默认创建为列模式,暂不支持直接升级为全局表。

    • 当二次使用全局表功能时,已有重复表不支持重新关联同步关系,需先删除多元索引和二级索引再删除表,然后创建全局表。

      说明

      二次使用是指曾创建过全局表但已被解除同步关系的数据表,再次将其创建为全局表的场景。

计费说明

使用全局表时,将产生数据存储费用、数据读取费用、数据写入费用以及跨地域复制流量费用。

说明

各副本表在数据存储和读写操作上的计费方式与数据表一致。具体计费规则请参见计费概述

各项费用说明如下:

  • 数据存储费用:各副本表均独立存储数据,按各表所在地域实际存储数据量分别计费。

  • 数据读取费用:所有副本表的本地读操作所产生的费用。

  • 数据写入费用:写入操作仅在可写副本上执行,写入费用仅发生在被直接写入的表上;副本表通过异步复制同步数据,不产生写入费用。

  • 跨地域复制流量费用:向各副本表异步复制数据时产生跨地域数据传输流量。

    重要

    各副本的跨地域复制流量费单独计算,费用均计量到被拉取数据的实例。

常见问题

如何修改全局表的配置,例如设置TTL、添加自定义列?

目前不支持直接修改全局表的表配置。如需修改,请先将全局表完全解绑再修改,然后重新创建全局表即可。重新创建全局表前,请将读写操作全部指向主副本(防止影响上层读写)后,再删除其他副本。

如何删除副本表?

先将副本表从全局表中解绑,待解绑成功后在控制台实例的表列表中删除副本表。

主备模式下,如何读取非主实例的副本表?

在主实例中基础表的全局表页签,查看关联副本表的实例名称,然后使用该实例的Endpoint读取数据。

行模式下,在不同地域通过UpdateRow接口先后更新了同一行不同列的值(假设a先更新、b后更新),该行数据会是什么样的?

该行数据最终是一致的,最终值是b所在副本上的整行数据,具体数据可能会是以下两种情况之一:

  • 如果更新b前,当前副本表还未同步a,则行上有值b,但无值a。

  • 如果更新b前,当前副本表已经同步a,则行上同时有值b和值a。

是否支持在不同国家的地域之间创建全局表?

由于数据合规等原因,目前暂不支持跨国创建全局表,全局表当前支持地域请参见功能和地域支持列表