全部產品
Search
文件中心

ApsaraDB RDS:邏輯備份PostgreSQL資料

更新時間:Jun 19, 2024

您可以使用PostgreSQL內建的工具pg_dump將執行個體的資料進行邏輯備份,後續匯出到本地儲存。

背景資訊

pg_dump是備份PostgreSQL資料庫的工具,可用於備份單個資料庫。更多詳情,請參見pg_dump

前提條件

  • RDS PostgreSQL執行個體已設定白名單,允許ECS執行個體或本地主機的IP訪問。

  • ECS執行個體或本地主機已安裝和RDS PostgreSQL執行個體相同版本的PostgreSQL資料庫。

    說明

    本文使用CentOS 7作業系統和PostgreSQL 15版本為例進行示範。

注意事項

建議使用高許可權帳號進行備份,避免出現許可權不足的問題。

備份單個資料庫

  1. 登入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
  2. 命令列提示Password:時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。

    您可執行ll /tmp/testdb.dump命令確認備份檔案是否已成功產生。

    image.png

備份指定表

  1. 登入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
  2. 命令列提示Password:時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。

    您可執行ll /tmp/testdb2.dump命令確認備份檔案是否已成功產生。

    image.png

備份資料庫時排除指定表

  1. 登入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
  2. 命令列提示Password:時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。

    您可執行ll /tmp/testdb3.dump命令確認備份檔案是否已成功產生。

    image.png

備份資料庫模式(不備份資料)

  1. 登入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
  2. 命令列提示Password:時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。

    您可執行ll /tmp/testdb4.dump命令確認備份檔案是否已成功產生。

    image.png

相關文檔

如果資料庫出現異常需要恢複資料,請參見使用pg_restore恢複邏輯備份檔案資料