本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
針對 Aurora PostgreSQL 資料庫叢集設定邏輯複寫
下列程序說明如何在兩個 Aurora PostgreSQL 資料庫叢集之間啟動邏輯複寫。這些步驟假設來源 (發佈者) 和目標 (訂閱者) 都已設定 pglogical 延伸模組,如 設定 pglogical 延伸模組 中所述。
注意
訂閱者節點node_name的 不能以 開頭rds。
建立發佈者節點並定義要複製的資料表
這些步驟假設您的 Aurora PostgreSQL 資料庫叢集具有一個內含資料庫的寫入器執行個體,其中包含一或多個您要複寫到另一個節點的資料表。您必須在訂閱者上重新建立來自發佈者的資料表結構,因此必要時先取得資料表結構。您可以使用 psql 中繼命令 \d ,然後在訂閱者執行個體上建立相同的資料表,以執行該操作。下列程序會在發佈者 (來源) 上建立範例資料表,以供示範之用。tablename
- 
        使用 psql連線至具有資料表的執行個體,您想要將該資料表用作訂閱者的來源。psql --host=source-instance.aws-region.rds.amazonaws.com --port=5432 --username=postgres--password --dbname=labdb如果您沒有要複寫的現有資料表,則可以建立如下的範例資料表。 - 
            使用下列 SQL 陳述式建立範例資料表。 CREATE TABLE docs_lab_table (a int PRIMARY KEY);
- 
            使用下列 SQL 陳述式,將產生的資料填入資料表中。 INSERT INTO docs_lab_table VALUES (generate_series(1,5000));INSERT 0 5000
- 
            使用下列 SQL 陳述式,驗證資料是否存在於資料表中。 SELECT count(*) FROM docs_lab_table;
 
- 
            
- 
        將此 Aurora PostgreSQL 資料庫叢集識別為發佈者節點,如下所示。 SELECT pglogical.create_node( node_name := 'docs_lab_provider', dsn := 'host=source-instance.aws-region.rds.amazonaws.com port=5432 dbname=labdb');create_node ------------- 3410995529 (1 row)
- 
        將您要複寫的資料表新增至預設複寫集。如需複寫集的詳細資訊,請參閱 pglogical 文件中的 Replication sets (複寫集)。 SELECT pglogical.replication_set_add_table('default', 'docs_lab_table', 'true', NULL, NULL);replication_set_add_table --------------------------- t (1 row)
發佈者節點設定完成。您現在可以設定訂閱者節點,從發佈者接收更新。
設定訂閱者節點並建立訂閱來接收更新
這些步驟假設 Aurora PostgreSQL 資料庫叢集已使用 pglogical 延伸模組進行設定。如需詳細資訊,請參閱設定 pglogical 延伸模組。
- 
        使用 psql來連線至您想要從發佈者接收更新的執行個體。psql --host=target-instance.aws-region.rds.amazonaws.com --port=5432 --username=postgres--password --dbname=labdb
- 
        在訂閱者 Aurora PostgreSQL 資料庫叢集上,建立存在於發佈者上的相同資料表。在此範例中,資料表是 docs_lab_table。您可以建立資料表,如下所示。CREATE TABLE docs_lab_table (a int PRIMARY KEY);
- 
        驗證此資料表是否為空的。 SELECT count(*) FROM docs_lab_table;count ------- 0 (1 row)
- 
        將此 Aurora PostgreSQL 資料庫叢集識別為訂閱者節點,如下所示。 SELECT pglogical.create_node( node_name := 'docs_lab_target', dsn := 'host=target-instance.aws-region.rds.amazonaws.com port=5432 sslmode=require dbname=labdbuser=postgrespassword=********');create_node ------------- 2182738256 (1 row)
- 
        建立訂閱。 SELECT pglogical.create_subscription( subscription_name := 'docs_lab_subscription', provider_dsn := 'host=source-instance.aws-region.rds.amazonaws.com port=5432 sslmode=require dbname=labdbuser=postgrespassword=*******', replication_sets := ARRAY['default'], synchronize_data := true, forward_origins := '{}' );create_subscription --------------------- 1038357190 (1 row)完成此步驟時,會在訂閱者上的資料表中建立來自發佈者上資料表的資料。您可以使用下列 SQL 查詢來驗證是否已發生此情況。 SELECT count(*) FROM docs_lab_table;count ------- 5000 (1 row)
從此開始,對發佈者上資料表所做的變更會複寫到訂閱者上的資料表。