閱讀564 返回首頁    go windows


使用 psql 命令遷移 PostgreSQL 數據__快速入門(PostgreSQL)_雲數據庫 RDS 版-阿裏雲

本例介紹通過 psql 命令將 PostgreSQL 數據備份文件恢複到目標 RDS 中。

背景信息

PostgreSQL 支持邏輯備份。我們使用 pg_dump 邏輯備份功能,導出備份文件,再通過 psql 導入到 RDS 中,實現將 PostgreSQL 的數據導入到 RDS 中。

前提條件

已完成 RDS 實例數據庫的準備,可參見 設置連接模式創建數據庫和賬號

準備本地數據

  1. 通過 PostgreSQL 客戶端,連接本地 PostgreSQL 數據庫。

  2. 執行如下命令,備份數據。

    1. pg_dump -U username -h hostname -p port databasename -f filename

    參數說明如下:

    • username:本地數據庫用戶名
    • hostname:本地數據庫主機名,如果是在本地數據庫主機登錄,可以使用 localhost
    • port:本地數據庫端口號
    • databasename:要備份的本地數據庫名
    • filename:要生成的備份文件名稱

    例如,數據庫用戶 William 要備份本地 PostgreSQL 數據庫,登錄 PostgreSQL 主機後,通過如下命令備份數據。

    1. pg_dump -U William -h localhost -p 3433 pg001 -f pg001.sql

正式遷移操作

說明: 通過 RDS 內網恢複數據,網絡更穩定,數據更安全。建議您通過將數據上傳到雲服務器 ECS 上,然後通過內網將數據恢複到目標 RDS上。如果數據文件太大,可以先壓縮後再上傳。本例以該方式為例進行說明。

  1. 登錄雲服務器 ECS。

  2. 通過 PostgreSQL 客戶端,執行如下命令將數據導入到 RDS 中。

    1. psql -U username -h hostname -d desintationdb -p port -f dumpfilename.sql

    參數說明如下:

    • username:RDS 上的 PostgreSQL 數據庫用戶名
    • hostname:RDS 上的 PostgreSQL 數據庫地址
    • port:RDS 上的 PostgreSQL 數據庫端口號
    • databasename:RDS 上的 PostgreSQL 數據庫名
    • filename:本地備份數據文件名

    如:

    1. psql -U William -h postgresql.rds.aliyuncs.com -d pg001 -p 3433 -f pg001.sql

    由於 RDS 數據庫的權限設置和本地數據庫不一致,在數據導入過程當中可能會出現一些與權限相關的 WARNING 或 ERROR,可以忽略,如:

    1. WARNING: no privileges could be revoked for "xxxxx"
    2. ERROR: role "xxxxx" does not exist

最後更新:2016-11-23 16:03:53

  上一篇:go 附錄:SQL Server 2008 R2/2012 功能差異__快速入門(SQL Server)_雲數據庫 RDS 版-阿裏雲
  下一篇:go 附錄:用戶及 Schema 管理__快速入門(PostgreSQL)_雲數據庫 RDS 版-阿裏雲