您可以使用RDS PostgreSQL的備份下載功能,將雲端硬碟執行個體的快照備份資料轉換成CSV檔案或SQL檔案匯出,然後通過該檔案將資料恢複到自建PostgreSQL資料庫中。
操作步驟
本樣本以RDS PostgreSQL雲端硬碟執行個體的SQL檔案恢複至ECS執行個體(CentOS 7.8 64位Linux系統)的自建PostgreSQL資料庫為例,以下命令和指令碼不支援在非Linux環境下使用,否則將會報錯。
登入RDS控制台,使用下載備份功能將雲端硬碟執行個體的備份檔案轉換成CSV檔案或SQL檔案,並下載到本地或ECS執行個體中。
在本地或ECS執行個體中解壓下載的備份檔案,命令如下:
tar -zxvf <壓縮包檔案名稱>.tar.gz -C <解壓縮後的檔案位置>本樣本將名為
backup.tar.gz的壓縮檔解壓縮到指定目錄/home/ecs-test-user中,具體請以實際檔案名稱和目錄為準。tar -zxvf backup.tar.gz -C /home/ecs-test-user(可選)查看備份檔案是否已解壓到指定位置(/home/ecs-test-user)。
ls -al /home/ecs-test-user將PostgreSQL Python指令檔下載至本地或ECS執行個體中。
對Python指令檔
restore_from_downloads.py進行授權,命令如下:chmod +x ./restore_from_downloads.py將CSV檔案或SQL檔案恢複至自建資料庫,恢複命令如下:
python3 restore_from_downloads.py <CSV檔案或SQL檔案目錄路徑> <資料庫主機> <資料庫連接埠> <資料庫帳號> <資料庫密碼>樣本如下:
python3 restore_from_downloads.py /home/ecs-test-user 127.0.0.1 5432 postgres "#Tes********"重要請確保自建資料庫中沒有和待匯入的資料庫同名的庫,否則將匯入失敗。
如果資料庫帳號名或密碼中包含了特殊字元(例如:#、空格等),在命令列傳入參數時需要使用英文雙引號("")將密碼括起來。例如,如果資料庫密碼是
#1234,則需要在命令列中傳入"#1234"。如果您的系統沒有安裝Python 3.x,恢複可能會出錯。您可通過
python3 --version命令查看Python版本。
相關文檔
對於少量的資料,例如恢複某個表的資料,您也可使用邏輯備份進行快速恢複。具體操作,請參見使用pg_restore恢複邏輯備份檔案資料。
阿里雲提供的遷移服務也可協助您將RDS PostgreSQL遷移至自建PostgreSQL資料庫。更多詳情,請參見PostgreSQL為源的資料移轉。
更多資料恢複方案,請參見恢複方案概覽。