Java SDK 可为已有全局表添加一个或多个副本,并按全局表的主备或多活模式配置副本写入权限。
前提条件
安装Tablestore Java SDK并初始化客户端。添加全局表副本需使用 5.17.7 及以上版本。
目标地域中已创建用于承载副本的 Tablestore 实例。添加多个副本时,每个目标位置均需有对应实例。
功能说明
调用 bindGlobalTable 方法,为已有全局表在指定实例中添加一个或多个同名副本表。绑定请求不会修改全局表的服务模式;主备模式下新增副本只读,多活模式下可按需配置副本是否接受写入。
public BindGlobalTableResponse bindGlobalTable(BindGlobalTableRequest request) throws TableStoreException, ClientException
bindGlobalTable 是异步接口。请求成功仅表示添加任务已发起,此时返回状态为 RE_CONF。调用 describeGlobalTable 查询状态,当 status 为 ACTIVE 时,副本添加完成。
以下示例为主备模式的全局表添加一个只读副本。服务会在目标实例中自动创建与全局表同名的副本表。
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(必选) |
|
要添加的副本位置列表,至少包含一个元素。每个元素配置一个副本。 |
副本位置
placements[] 中每个元素的类型为 Placement,包含以下参数。
|
名称 |
类型 |
说明 |
|
regionId(必选) |
String |
副本所在地域的 ID,例如 |
|
instanceName(必选) |
String |
副本所属实例的名称。 |
|
writable(必选) |
boolean |
副本是否接受写入。主备模式下设置为 |
返回值
BindGlobalTableResponse 包含以下与添加结果直接相关的字段。
|
字段 |
类型 |
说明 |
|
globalTableId |
String |
通过 |
|
status |
GlobalTableStatus |
通过 |