開源rds_dbsync的pgsql2pgsql是一個用於遷移PostgreSQL資料庫的工具,常用於Database Backup、遷移、複製和同步等操作,可實現PostgreSQL、PPAS、Greenplum Database、AnalyticDB PostgreSQL版資料庫間相互遷移。
pgsql2pgsql支援的功能
pgsql2pgsql支援如下功能:
PostgreSQL、PPAS、Greenplum Database、AnalyticDB PostgreSQL全量資料移轉到PostgreSQL、PPAS、Greenplum Database、AnalyticDB PostgreSQL。
PostgreSQL或PPAS(版本大於9.4)全量+增量遷移到PostgreSQL或PPAS。
參數配置
修改設定檔postgresql.conf、配置源和目的庫串連資訊。
源庫pgsql串連資訊如下所示:
重要源庫pgsql的串連資訊中,使用者最好是對應DB的owner。
[src.pgsql] connect_string = "host=192.168.1.1 dbname=test port=3432 user=test password=pgsql"
本地臨時Database pgsql串連資訊如下所示:
[local.pgsql] connect_string = "host=192.168.1.2 dbname=test port=3432 user=test2 password=pgsql"
目的庫pgsql串連資訊如下所示:
重要目的庫pgsql的串連資訊,使用者需要對目標表有寫入權限。
[desc.pgsql] connect_string = "host=192.168.1.3 dbname=test port=3432 user=test3 password=pgsql"
重要
如果要做增量資料同步,串連源庫需要有建立replication slot的許可權。
由於PostgreSQL 9.4及以上版本支援邏輯流複製,所以支援作為資料來源的增量遷移。開啟下列核心參數才能讓核心支援邏輯流複製功能。
wal_level = logical max_wal_senders = 6 max_replication_slots = 6
pgsql2pgsql用法
全庫遷移
進行全庫遷移,請執行如下命令:
./pgsql2pgsql
遷移程式會預設把對應pgsql庫中所有使用者的表資料將遷移到pgsql。
狀態資訊查詢
串連本地臨時Database,可以查看到單次遷移過程中的狀態資訊。這些資訊被放在表db_sync_status中,包括全量遷移的開始和結束時間、增量遷移的開始時間和增量同步處理的資料情況。