將資料匯入 Amazon RDS 上的 PostgreSQL - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將資料匯入 Amazon RDS 上的 PostgreSQL

假設有要移動到 Amazon RDS 的現有 PostgreSQL 部署。任務的複雜性取決於資料庫大小以及要傳輸的資料庫物件類型。例如,假設一個資料庫包含大約數 GB 的資料集,以及預存程序和觸發條件。此類資料庫會比僅含少量 GB 測試資料且沒有觸發條件或預存程序的簡單資料庫更複雜。

在下列情況中,建議您使用原生 PostgreSQL 資料庫遷移工具:

  • 您準備進行同質遷移,亦即遷移的來源資料庫使用與目標資料庫相同的資料庫引擎。

  • 您想要遷移整個資料庫。

  • 原生工具可讓您以最短的停機時間來遷移系統。

在其他大部分情況下,使用 AWS Database Migration Service (AWS DMS) 來執行資料庫遷移程序是最佳的辦法。AWSDMS 可以遷移資料庫而不會導致停機,且系統會持續為許多資料庫引擎進行複寫,直到準備好切換為目標資料庫為止。您可以使用 AWS DMS 來遷移到相同資料庫引擎或不同資料庫引擎。如果您要遷移到與來源資料庫不同的資料庫引擎,可使用 AWS Schema Conversion Tool (AWS SCT)。您可使用 AWS SCT 遷移 AWS DMS 未遷移的結構描述物件。如需 AWS DMS 的詳細資訊,請參閱什麼是 AWS Database Migration Service?

僅針對您的匯入,修改資料庫參數群組來包含下列設定。您應該測試參數設定,以根據資料庫執行個體大小找出最有效率的設定。匯入完成之後,您也需要將這些參數回復為生產值。

將資料庫執行個體設定修改為下列:

  • 停用資料庫執行個體備份 (將 backup_retention 設為 0)。

  • 停用多個可用區。

修改資料庫參數群組來包含下列設定。您應該僅在匯入資料時才使用這些設定。您應該測試參數設定,以根據資料庫執行個體大小找出最有效率的設定。匯入完成之後,您也需要將這些參數回復為生產值。

參數 匯入時的建議值 描述

maintenance_work_mem

524288、1048576、2097152 或 4194304 (KB)。這些設定相當於 512 MB、1 GB、2 GB 和 4 GB。

此設定的值取決於主機大小。CREATE INDEX 陳述式期間會使用此參數,每個平行命令皆可使用這麼多的記憶體。計算最佳值,以免將此值設得太高而耗盡記憶體。

max_wal_size

256 (適用於 9.6 版)、4096 (適用於 10 版及更新版本)

將尺寸提高至最大,讓 WAL 能在自動檢查點期間成長。增加此參數可增加損毀復原所需的時間。此參數會將 checkpoint_segments 取代為 PostgreSQL 9.6 及更新版本。

若為 PostgreSQL 9.6 版,此數值是以 16 MB 為單位。若為更新的版本,該數值是以 1 MB 為單位。例如,在 9.6 版中,128 表示 128 個達到 16 MB 的區塊。在 12.4 版中,2048 表示 2048 個尺寸各為 1 MB 的區塊。

checkpoint_timeout

1800

此設定的值可減少 WAL 輪換次數。

synchronous_commit

關閉

停用此設定可加速寫入。關閉此參數會在伺服器當機時增加資料遺失的風險 (請勿關閉 FSYNC)。

wal_buffers

8192

此值以 8 KB 為單位。這同樣可加速產生 WAL

autovacuum

0

載入資料時停用 PostgreSQL 自動清理參數,以免浪費資源

使用 pg_dump -Fc (壓縮) 或 pg_restore -j (平行) 命令搭配這些設定。

注意

PostgreSQL 命令 pg_dumpall 需要 super_user 許可,但建立資料庫執行個體時並未授予此許可,因此無法用來匯入資料。