Postgresql
如何配置從 PostgreSQL (RDS) 到普通 PostgreSQL 的複制?
我有一個 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 本身)。