添加全局表副本

更新时间:
复制 MD 格式

Java SDK 可为已有全局表添加一个或多个副本,并按全局表的主备或多活模式配置副本写入权限。

前提条件

  • 安装Tablestore Java SDK并初始化客户端。添加全局表副本需使用 5.17.7 及以上版本。

  • 目标地域中已创建用于承载副本的 Tablestore 实例。添加多个副本时,每个目标位置均需有对应实例。

功能说明

调用 bindGlobalTable 方法,为已有全局表在指定实例中添加一个或多个同名副本表。绑定请求不会修改全局表的服务模式;主备模式下新增副本只读,多活模式下可按需配置副本是否接受写入。

public BindGlobalTableResponse bindGlobalTable(BindGlobalTableRequest request) throws TableStoreException, ClientException
说明

bindGlobalTable 是异步接口。请求成功仅表示添加任务已发起,此时返回状态为 RE_CONF。调用 describeGlobalTable 查询状态,当 statusACTIVE 时,副本添加完成。

以下示例为主备模式的全局表添加一个只读副本。服务会在目标实例中自动创建与全局表同名的副本表。

String globalTableId = "gt-01234567-89ab-cdef-0123-456789abcdef";
String globalTableName = "example_table";
BindGlobalTableRequest request = new BindGlobalTableRequest(
        globalTableId, globalTableName);
request.addPlacement(new GlobalTableTypes.Placement(
        "cn-beijing", "example-replica-instance", false));

BindGlobalTableResponse response = client.bindGlobalTable(request);
System.out.println("GlobalTableId: " + response.getGlobalTableId());
System.out.println("Status: " + response.getStatus());

参数说明

BindGlobalTableRequest 包含以下参数。

名称

类型

说明

globalTableId(必选)

String

全局表 ID。未记录 ID 时,可以按物理表定位全局表,具体用法请参见查询全局表信息

globalTableName(必选)

String

全局表名称,必须与基础表名称相同。

placements(必选)

List<Placement>

要添加的副本位置列表,至少包含一个元素。每个元素配置一个副本。

副本位置

placements[] 中每个元素的类型为 Placement,包含以下参数。

名称

类型

说明

regionId(必选)

String

副本所在地域的 ID,例如 cn-beijing

instanceName(必选)

String

副本所属实例的名称。

writable(必选)

boolean

副本是否接受写入。主备模式下设置为 false;多活模式下根据该副本是否需要接受写入设置。

返回值

BindGlobalTableResponse 包含以下与添加结果直接相关的字段。

字段

类型

说明

globalTableId

String

通过 getGlobalTableId() 获取全局表 ID。该值与请求中的 globalTableId 相同。

status

GlobalTableStatus

通过 getStatus() 获取当前状态。添加任务发起后,可调用 describeGlobalTable 查询状态,直到状态变为 ACTIVE