全部產品
Search
文件中心

Tablestore:更新全域表配置

更新時間:Jan 09, 2026

本文介紹如何通過 Java SDK 更新全域表中物理表的配置資訊,例如是否可寫等。

注意事項

如果修改後主備模式下多個副本均可寫,則會出現資料衝突。通常不建議修改,只需在主備切換時修改。

前提條件

初始化用戶端

方法說明

public UpdateGlobalTableResponse updateGlobalTable(UpdateGlobalTableRequest request) throws TableStoreException, ClientException

UpdateGlobalTableRequest參數說明

  • globalTableId(必選)String:全域表ID。

    說明

    如果未記錄全域表ID,可通過調用DescribeTable操作查詢表副本的詳細資料。當表副本屬於全域表時,DescribeTable操作的返回結果中會包含對應全域表ID。

  • globalTableName(必選)String:全域表名稱,必須與基礎資料表名稱相同。

  • phyTable(必選)GlobalTableTypes.UpdatePhyTable:待更新的物理表資訊,包含以下參數:

    重要

    更新配置時,必須至少修改 writable 或 primaryEligible 中的一個屬性。

    名稱

    類型

    說明

    regionId(必選)

    String

    要修改的物理表所在地區ID。

    instanceName(必選)

    String

    要修改的物理表所在執行個體名稱。

    tableName(必選)

    String

    要修改的物理表名稱。

    writable(可選)

    Boolean

    修改配置是否可寫。

    primaryEligible(可選)

    Boolean

    修改配置是否設定為具備主資質,用於在主備模式時進行主備切換。

    在主備模式下,預設不允許開啟其他非主表的寫操作。當執行主備切換時,將副表標記為具備主資質。

樣本

private static void updateGlobalTableExample(SyncClient client) {
    // 構造待更新的物理表配置
    GlobalTableTypes.UpdatePhyTable phyTable = new GlobalTableTypes.UpdatePhyTable(
                // 副本所在地區 ID
                "cn-shanghai",  
                // 副本所屬執行個體名稱
                "instance-replica-sh",  
                // 副本表名稱
                "i-dest-test"
    );
    
    // 在主備模式下進行主備切換時,需要同時修改 writable和 primaryEligible
    phyTable.setWritable(true);          // 將該副本設為可寫
    phyTable.setPrimaryEligible(true);   // 允許該副本具備成為主表的資質(用於主備切換)

    // 構造請求
    UpdateGlobalTableRequest request = new UpdateGlobalTableRequest(
                // 全域表 ID
                "gt-ee1b54db-f5d9-43f3-ad36-ec44********",
                // 全域表名稱
                "t-gt-test-1",  
                phyTable
    );
    // 發起請求
    UpdateGlobalTableResponse response = client.updateGlobalTable(request);
    System.out.println("Update succeeded. Request ID: " + response.getRequestId());
}