绑定全局表

本文介绍如何通过 Java SDK 为全局表增加一个或多个分布位置。

注意事项

绑定操作返回成功后,系统会异步绑定新的副本并同步数据,可通过调用DescribeGlobalTable查看全局表的当前状态。当返回状态为active时,表示全局表新副本绑定成功。

前提条件

初始化客户端

方法说明

public BindGlobalTableResponse bindGlobalTable(BindGlobalTableRequest request) throws TableStoreException, ClientException

BindGlobalTableRequest参数说明

  • globalTableId(必选)String:全局表ID。

    说明

    如果未记录全局表ID,可通过调用DescribeTable操作查询表副本的详细信息。当表副本属于全局表时,DescribeTable操作的返回结果中会包含对应全局表ID。

  • globalTableName(必选)String:全局表名称,必须与基础表名称相同。

  • placements(必选)List<Placement>:新增的分布位置配置列表,包含以下参数:

    名称

    类型

    说明

    regionId(必选)

    String

    地域ID。

    instanceName(必选)

    String

    实例名称。

    writable(必选)

    boolean

    是否可写。默认值为false。当使用主备模式时,请保持默认配置。

示例

private static void bindGlobalTableExample(SyncClient client) {
    // 构造请求
    BindGlobalTableRequest request = new BindGlobalTableRequest(
                // 全局表 ID
                "gt-ee1b54db-f5d9-43f3-ad36-ec44********",
                // 全局表名称
                "my-global-table"
    ); 

    // 构建 Placement 列表(至少有一个副本配置)
    List<GlobalTableTypes.Placement> placements = new ArrayList<>();

    // 示例:添加华东1(杭州)地域的副本
    GlobalTableTypes.Placement hangzhouReplica = new GlobalTableTypes.Placement(
                // 副本所在地域 ID
                "cn-hangzhou", 
                // 副本所属实例名称
                "instance-replica-hz",
                //主备模式下副本表不可写(默认值 false)
                false
    );

    // 示例:添加华东2(上海)地域的副本
    GlobalTableTypes.Placement shanghaiReplica = new GlobalTableTypes.Placement(
                // 副本所在地域 ID
                "cn-shanghai",  
                // 副本所属实例名称
                "instance-replica-sh", 
                // 主备模式下副本表不可写(默认值 false)
                false
    );

    placements.add(hangzhouReplica);
    placements.add(shanghaiReplica);
    request.setPlacements(placements);

    // 发起请求
    BindGlobalTableResponse response = client.bindGlobalTable(request);
    System.out.println("Bind succeeded. Request ID: " + response.getRequestId());
}