您可以使用PostgreSQL自帶的工具pg_dump將實例的數據進行邏輯備份,后續導出到本地保存。
背景信息
pg_dump是備份PostgreSQL數據庫的工具,可用于備份單個數據庫。更多詳情,請參見pg_dump。
前提條件
RDS PostgreSQL實例已設置白名單,允許ECS實例或本地主機的IP訪問。
ECS實例或本地主機已安裝和RDS PostgreSQL實例相同版本的PostgreSQL數據庫。
說明本文使用CentOS 7操作系統和PostgreSQL 15版本為例進行演示。
注意事項
建議使用高權限賬號進行備份,避免出現權限不足的問題。
備份單個數據庫
登錄ECS實例或本地主機,使用如下命令備份目標數據庫。
pg_dump -h '<hostname>' -U <username> -p <port> -Fc <dbname> > <dumpdir>
參數
說明
hostname
RDS PostgreSQL實例連接地址。
username
RDS PostgreSQL實例高權限賬號名稱。
port
RDS PostgreSQL實例端口。
-Fc
輸出格式。
-Fc
表示輸出自定義格式的存檔,這個格式適合通過pg_restore進行導入還原。更多選項的詳細說明請參見pg_dump。dbname
目標數據庫名稱。
dumpdir
導出的備份文件路徑及名稱。
示例
pg_dump -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -Fc zht01 > /tmp/testdb.dump
命令行提示
Password:
時,輸入PostgreSQL實例高權限賬號對應的密碼,然后按回車鍵確認。您可執行
ll /tmp/testdb.dump
命令確認備份文件是否已成功生成。
備份指定表
登錄ECS實例或本地主機,使用如下命令備份目標數據庫的指定表。
pg_dump -h '<hostname>' -U <username> -p <port> -t <Schema>.<table> -Fc <dbname> > <dumpdir>
參數
說明
hostname
RDS PostgreSQL實例連接地址。
username
RDS PostgreSQL實例高權限賬號名稱。
port
RDS PostgreSQL實例端口。
Schema
備份表所在的Schema,默認為Public,如果表所在的Schema為Public,可省略。
table
需要備份的表。可以用多個
-t <Schema>.<table>
選擇多個表。-Fc
輸出格式。
-Fc
表示輸出自定義格式的存檔,這個格式適合通過pg_restore進行導入還原。更多選項的詳細說明請參見pg_dump。dbname
目標數據庫名稱。
dumpdir
導出的備份文件路徑及名稱。
示例如下:
pg_dump -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -t zhttest0808 -Fc zht01 > /tmp/testdb2.dump
命令行提示
Password:
時,輸入PostgreSQL實例高權限賬號對應的密碼,然后按回車鍵確認。您可執行
ll /tmp/testdb2.dump
命令確認備份文件是否已成功生成。
備份數據庫時排除指定表
登錄ECS實例或本地主機,使用如下命令備份目標數據庫并排除指定表。
pg_dump -h '<hostname>' -U <username> -p <port> -T <table> -Fc <dbname> > <dumpdir>
參數
說明
hostname
RDS PostgreSQL實例連接地址。
username
RDS PostgreSQL實例高權限賬號名稱。
port
RDS PostgreSQL實例端口。
table
需要排除的表??梢杂枚鄠€
-T <table>
排除多個表。-Fc
輸出格式。
-Fc
表示輸出自定義格式的存檔,這個格式適合通過pg_restore進行導入還原。更多選項的詳細說明請參見pg_dump。dbname
目標數據庫名稱。
dumpdir
導出的備份文件路徑及名稱。
示例如下:
pg_dump -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -T zhttest0808 -Fc zht01 > /tmp/testdb3.dump
命令行提示
Password:
時,輸入PostgreSQL實例高權限賬號對應的密碼,然后按回車鍵確認。您可執行
ll /tmp/testdb3.dump
命令確認備份文件是否已成功生成。
備份數據庫模式(不備份數據)
登錄ECS實例或本地主機,使用如下命令備份目標數據庫模式。
pg_dump -h '<hostname>' -U <username> -p <port> -s -Fc <dbname> > <dumpdir>
參數
說明
hostname
RDS PostgreSQL實例連接地址。
username
RDS PostgreSQL實例高權限賬號名稱。
port
RDS PostgreSQL實例端口。
-s
僅備份數據庫模式,不備份數據。更多選項的詳細說明請參見pg_dump。
-Fc
輸出格式。
-Fc
表示輸出自定義格式的存檔,這個格式適合通過pg_restore進行導入還原。更多選項的詳細說明請參見pg_dump。dbname
目標數據庫名稱。
dumpdir
導出的備份文件路徑及名稱。
示例如下:
pg_dump -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -s -Fc zht01 > /tmp/testdb4.dump
命令行提示
Password:
時,輸入PostgreSQL實例高權限賬號對應的密碼,然后按回車鍵確認。您可執行
ll /tmp/testdb4.dump
命令確認備份文件是否已成功生成。
相關文檔
如果數據庫出現異常需要恢復數據,請參見使用pg_restore恢復邏輯備份文件數據。