Postgresql

如何配置從 PostgreSQL (RDS) 到普通 PostgreSQL 的複制?

  • October 9, 2020

我有一個 Amazon RDS Postgres 數據庫,我創建了一個“複製器”使用者並授予它“複製”權限。

db=> create role replicator login password 'something';
CREATE ROLE
db=> alter role replicator replication;
ALTER ROLE
db=>

但是,當我嘗試pg_basebackup從目標主機執行以創建副本時,我收到 pg_hba.conf 錯誤:

# pg_basebackup -D /data/from-master -U replicator -h db-master.example.com -v
pg_basebackup: could not connect to server: FATAL:  no pg_hba.conf entry for replication connection from host "10.1.20.19", user "replicator", SSL on
FATAL:  no pg_hba.conf entry for replication connection from host "10.1.20.19", user "replicator", SSL off

問題是,這是 RDS,我根本無法訪問 pg_hba.conf。有任何想法嗎?

您可以使用 AWS Database Migration Services (DMS) 將完整數據和/或更改數據複製到另一個系統(例如 S3 或在本地或 EC2 上執行的 PostgreSQL 數據庫)

  • 如果您使用 PG 10+,請確保使用 DMS v3.3
  • 創建一個新的 pg 參數組。放:
  • rds.logical_replication=1
  • 保存。修改 RDS 實例以使用該參數組,應用更改
  • 重啟 RDS 實例

如果您的 PG 實例在本地(不在 AWS 網路上),您將需要 VPN 連接

DMS 也支持 DDL 更改

您可以使用 AWS Schema Conversion Tool 將架構從源遷移到目標

在考慮了更多之後,這可能是不可能的,因為 Postgres 在集群級別進行二進制複製,這意味著您複製實例中的所有數據庫。我假設 RDS 是一個多租戶 Postgres 安裝,所以他們不能讓你這樣做(除非他們大量修改 postgres 本身)。

引用自:https://dba.stackexchange.com/questions/57658