查询全局表信息

更新时间:
复制 MD 格式

Java SDK 可查询全局表状态以及成员物理表的位置、可写状态和数据同步状态等信息。

前提条件

安装初始化客户端并初始化客户端。查询全局表信息需使用 5.17.7 及以上版本。

功能说明

调用 describeGlobalTable 方法查询指定全局表的状态和成员物理表信息。

public DescribeGlobalTableResponse describeGlobalTable(DescribeGlobalTableRequest request) throws TableStoreException, ClientException

以下示例通过全局表 ID 查询全局表信息。

String globalTableId = "gt-01234567-89ab-cdef-0123-456789abcdef";
String globalTableName = "example_table";
DescribeGlobalTableRequest request = new DescribeGlobalTableRequest(
        globalTableId, globalTableName);

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

for (GlobalTableTypes.PhyTable table : response.getPhyTables()) {
    System.out.println(
            table.getRegionId() + "/" + table.getInstanceName()
                    + " status=" + table.getStatus()
                    + " writable=" + table.isWritable());
}

参数说明

DescribeGlobalTableRequest 包含以下参数。

名称

类型

说明

globalTableName(必选)

String

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

globalTableId(可选)

String

全局表 ID。globalTableIdphyTable 必须至少设置一个。如果未记录全局表 ID,可以调用 DescribeTable 查询成员物理表信息,返回结果中包含对应的全局表 ID。

phyTable(可选)

GlobalTableTypes.PhyTable

用于通过成员物理表定位全局表。globalTableIdphyTable 必须至少设置一个。使用 DescribeGlobalTableRequest(String globalTableName, String regionId, String instanceName) 构造请求时,SDK 自动设置此参数。

returnRpo(可选)

boolean

是否请求返回恢复点目标(RPO)信息。默认值为 false。获取 RPO 信息耗时较长,非必要时不建议设置为 true

物理表定位条件

使用成员物理表定位全局表时,phyTable 包含以下参数。

名称

类型

说明

regionId(必选)

String

成员物理表所在地域 ID。

instanceName(必选)

String

成员物理表所在实例名称。必须与当前客户端访问的实例一致。

返回值

DescribeGlobalTableResponse 包含以下字段。

字段

类型

说明

globalTableId

String

通过 getGlobalTableId() 获取全局表 ID。

status

GlobalTableTypes.GlobalTableStatus

通过 getStatus() 获取全局表状态。

phyTables

List<GlobalTableTypes.PhyTable>

通过 getPhyTables() 获取成员物理表信息。按全局表 ID 查询时返回完整列表。

全局表状态

status 的取值如下。

取值

说明

INIT

初始化中。首次创建全局表后进入此状态。

RE_CONF

重新配置中。一个或多个物理表正在配置,可能由创建表、同步存量数据或添加、移除全局表成员引起。

ACTIVE

已激活。

物理表信息

phyTables[] 中每个元素的类型为 GlobalTableTypes.PhyTable,包含以下字段。

字段

类型

说明

regionId

String

通过 getRegionId() 获取物理表所在地域 ID。

instanceName

String

通过 getInstanceName() 获取物理表所在实例名称。

tableName

String

通过 getTableName() 获取物理表名称。

status

GlobalTableTypes.PhyTableStatus

通过 getStatus() 获取物理表状态。

statusTimestamp

long

通过 getStatusTimestamp() 获取状态更新时间戳,单位为毫秒。

writable

boolean

通过 isWritable() 获取物理表是否可写。

role

String

通过 getRole() 获取物理表在服务模式中的角色。

tableId

String

通过 getTableId() 获取物理表 ID。

stage

GlobalTableTypes.SyncStage

通过 getStage() 获取数据同步阶段。

rpo

Instant

通过 getRpo() 获取物理表当前数据的 RPO。请求中将 returnRpo 设置为 true 时,服务才会请求返回此信息。

isFailed

boolean

通过 isFailed() 获取物理表是否处于失败状态。

message

String

通过 getMessage() 获取物理表状态的附加信息。创建全局表或添加、移除成员失败时,isFailedtrue,此字段包含失败原因。

物理表状态

phyTables[].status 的取值如下。

取值

说明

PENDING

排队中。等待其他物理表配置完成后继续处理。

INIT

初始化中。正在创建或配置物理表。

SYNCDATA

同步中。正在同步存量数据,并已开启增量数据同步。

READY

准备完成。存量数据同步完成且增量同步通道已开启,物理表暂不可写。

ACTIVE

已激活并持续同步。物理表是否可写以 writable 为准。

UNBINDING

移除中。正在从全局表中移除该物理表,物理表及其数据不会被删除。

UNBOUND

已移除。该物理表已从全局表中移除,物理表及其数据未被删除。

场景示例

通过物理表定位全局表

如果未记录全局表 ID,可以通过已知成员物理表的名称、地域和实例定位所属全局表。

说明

通过物理表定位时,返回结果中的 phyTables 为空。如需获取完整成员物理表列表,请先通过 getGlobalTableId() 获取全局表 ID,再按全局表 ID 发起查询。

String globalTableName = "example_table";
String regionId = "cn-hangzhou";
String instanceName = "example-instance";
DescribeGlobalTableRequest request = new DescribeGlobalTableRequest(
        globalTableName, regionId, instanceName);

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