使用合格邏輯從 Amazon EC2 上的 PostgreSQL 遷移到亞馬遜 RDS - AWS 方案指引

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

使用合格邏輯從 Amazon EC2 上的 PostgreSQL 遷移到亞馬遜 RDS

創建者:拉傑什·馬迪瓦利 (AWS)

環境:PoC 或試點

資料來源:Amazon EC2

目標:Amazon RDS for PostgreSQL

R 類型:重新平台

工作負載:開源

技術:移轉;資料庫

AWS 服務:Amazon RDS

Summary

此模式概述了將 PostgreSQL 資料庫(9.5 版及更新版本)從 Amazon Elastic Compute Cloud (Amazon EC2) 遷移到使用 PostgreSQL 的 Amazon Relational Database Service 服務 (Amazon RDS) 的步驟。Amazon RDS 現在支持第 10 版的複 PostgreSQL 擴展。

先決條件和限制

先決條件

產品版本

  • 在 Amazon RDS 上使用 PostgreSQL 版本 10 及更新版本,並具有 Amazon RDS 上支援的功能 (請參閱 AWS 文件中的 Amazon RDS 上的 PostgreSQL)。這個模式是透過將 Amazon RDS 上的 PostgreSQL 9.5 遷移到第 10 版進行測試,但也適用於 Amazon RDS 上的較新版本。

架構

資料移轉架構

Amazon RDS 上 PostgreSQL 遷移架構

工具

史诗

任務描述所需技能
建立一個 Amazon 資料庫執行個體。

在 Amazon RDS 中設定 PostgreSQL 資料庫執行個體。如需指示,請參閱適用於 PostgreSQL 的亞馬遜 RDS 文件。

DBA
從來源 PostgreSQL 資料庫取得結構描述傾印,並將其還原到目標 PostgreSQL 資料庫中。
  1. 使用 pg_dump 公用程式並-s選擇從來源資料庫產生結構描述檔案。

  2. 使用 psql 公用程式並-f選擇將結構描述載入目標資料庫。

DBA
開啟邏輯解碼。

在 Amazon RDS 資料庫參數群組中,將rds.logical_replication靜態參數設定為 1。如需指示,請參閱 Amazon RDS 文件

DBA
在來源資料庫和目標資料庫上建立 pglogical 延伸模組。
  1. 在來源 PostgreSQL 資料庫上建立pglogical擴充功能:

    psql -h <amazon-ec2-endpoint> -d target-dbname -U target-dbuser -c "create extension pglogical;"
  2. 在目標 PostgreSQL 資料庫上建立pglogical擴充功能:

    psql -h <amazon-rds-endpoint> -d source-dbname -U source-dbuser -c "create extension pglogical;"
DBA
在來源 PostgreSQL 資料庫上建立發行者。

若要建立發行者,請執行:

psql -d dbname -p 5432 <<EOF SELECT pglogical.create_node( node_name := 'provider1', dsn := 'host=<ec2-endpoint> port=5432 dbname=source-dbname user=source-dbuser' ); EOF
DBA
建立複製組、新增表格和序列。

若要在來源 PostgreSQL 資料庫上建立複製組,並將表格和序列新增至複製組,請執行:

psql -d dbname -p 5432 <<EOF SELECT pglogical.replication_set_add_all_tables('default', '{public}'::text[],synchronize_data := true); EOF
DBA
建立訂閱者。

若要在目標 PostgreSQL 資料庫上建立訂閱者,請執行:

psql -h <rds-endpoint> -d target-dbname -U target-dbuser  <<EOF SELECT pglogical.create_node(     node_name := 'subscriber1', dsn := 'host=<rds-endpoint> port=5432 dbname=target-dbname password=postgres user=target-dbuser' ); EOF
DBA
建立訂閱。

若要在目標 PostgreSQL 資料庫上建立訂閱,請執行:

psql -h <rds-endpoint> -d target -U postgres <<EOF SELECT pglogical.create_subscription(  subscription_name := 'subscription1',  replication_sets := array['default'],     provider_dsn := 'host=<ec2-endpoint> port=5432 dbname=<source-dbname> password=<password> user=source-dbuser' );
DBA
任務描述所需技能
檢查來源和目標資料庫。

檢查來源和目標資料庫,確認資料已成功複製。您可以使用來select count(1)自來源和目標資料表來執行基本驗證。

DBA

相關資源