本文介紹通過pg_dump和pg_restore命令將RDS PostgreSQL資料庫遷移至PolarDB PostgreSQL版中。
遷移的源庫為自建PostgreSQL資料庫時,請參考從自建PostgreSQL遷移至PolarDB PostgreSQL版。
適用範圍
RDS PostgreSQL執行個體:不支援Serverless執行個體進行遷移。
儲存空間大小:PolarDB PostgreSQL版叢集的儲存空間應大於RDS PostgreSQL資料庫的儲存空間。
注意事項
該操作為全量資料移轉。為避免遷移前後資料不一致,遷移操作開始前請停止RDS PostgreSQL資料庫的相關業務,並停止資料寫入。
準備工作
建立一個Linux作業系統的ECS執行個體,本案例使用的ECS為Ubuntu 16.04 64位作業系統。詳情請參考建立ECS執行個體。
說明要求ECS執行個體和源RDS PostgreSQL資料庫、目標PolarDB PostgreSQL版叢集網路互連。
可建立一個隨用隨付的ECS執行個體,遷移完成後釋放執行個體。
在ECS執行個體中安裝PostgreSQL用戶端,以便執行資料恢複的命令。詳情請參考PostgreSQL官方文檔。
說明請確保安裝的PostgreSQL用戶端版本與串連的RDS PostgreSQL資料庫和PolarDB PostgreSQL版叢集版本相容。
操作步驟一:備份RDS PostgreSQL資料庫
該操作為全量資料移轉。為避免遷移前後資料不一致,遷移操作開始前請停止RDS PostgreSQL資料庫的相關業務,並停止資料寫入。
在ECS上執行以下命令,備份資料庫中的資料。
pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>參數說明:
<username>:登入RDS PostgreSQL資料庫的帳號。
<hostname>:RDS PostgreSQL資料庫的串連地址,查看資料庫連接地址請參考查看或修改串連地址和連接埠。
<port>:資料庫服務的連接埠號碼。
<dbname>:指定要串連的資料庫的名稱,預設為postgres。
<njobs>:同時執行備份作業的並發數。
說明參數<njobs>可減少轉儲的時間,但也會增加資料庫伺服器的負載。
如果您的RDS PostgreSQL資料庫是9.2以前的版本,您還需要指定
--no-synchronized-snapshots參數。
<dumpdir>:產生的備份檔案所屬目錄。
樣本:
pg_dump -U postgres -h pgm-xxxxxxxxx.pg.rds.aliyuncs.com -p 5432 postgres -Fd -j 5 -f postgresdump命令列提示
Password:時,輸入資料庫帳號對應的密碼,資料庫開始備份。等待備份完成,RDS PostgreSQL資料庫資料將備份至指定的目錄中,本案例為postgresdump。
操作步驟二:資料移轉至PolarDB PostgreSQL版
在目標PolarDB PostgreSQL版叢集中建立用於資料恢複的資料庫,指定資料庫Owner為上一步建立的帳號。詳情請參考建立資料庫。
在ECS上執行以下命令,將RDS PostgreSQL資料庫資料移轉至PolarDB PostgreSQL版叢集中。
pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>參數說明:
<username>:登入PolarDB PostgreSQL版資料庫的帳號。
<hostname>:PolarDB PostgreSQL版叢集的串連地址。
<port>:資料庫服務的連接埠號碼,請參考查看串連地址和連接埠。
<dbname>:串連並直接恢複到的目標資料庫名。
<njobs>:同時執行資料恢複作業的並發數。
說明此選項可減少資料恢複的時間,但也會增加資料庫伺服器的負載。
<dumpdir>:備份檔案所在目錄。
樣本:
pg_restore -U gctest -h pc-mxxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -p 1921 -d postgres -j 6 postgresdump命令列提示
Password:時,輸入資料庫帳號對應的密碼,資料開始遷移。說明如果忘記密碼,請參考管理資料庫帳號。
等待資料移轉完成即可。