使用 pglogical 从 Amazon EC2 上的 PostgreSQL 迁移至 Amazon RDS for PostgreSQL - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 pglogical 从 Amazon EC2 上的 PostgreSQL 迁移至 Amazon RDS for PostgreSQL

由 Rajesh Madiwale (AWS) 编写

环境:PoC 或试点

来源:Amazon EC2

目标:Amazon RDS for PostgreSQL

R 类型:更换平台

工作负载:开源

技术:迁移;数据库

Amazon Web Services: Amazon RDS

Summary

此模式概述了使用 PostgreSQL pglogical  扩展将 PostgreSQL 数据库(版本 9.5 及以上版本)从 Amazon Elastic Compute Cloud (Amazon EC2) 迁移至 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 的步骤。Amazon RDS 现在支持 PostgreSQL 版本 10 的 pglogical 扩展。

先决条件和限制

先决条件

  • 选择正确的 Amazon RDS 实例类型。有关更多信息,请参阅 Amazon RDS 实例类型

  • 确保 PostgreSQL 的源版本与目标版本相同。 

  • 通过 PostgreSQL on Amazon EC2 安装和集成pglogical扩展

产品版本

  • Amazon RDS 上的 PostgreSQL 版本 10 及以上版本,Amazon RDS 支持这些功能(参见 AWS 文档中的PostgreSQL on Amazon RDS)。这种模式是通过在 Amazon RDS 上将 PostgreSQL 9.5 迁移至 PostgreSQL 版本 10 进行测试,但它也适用于最新版 PostgreSQL on Amazon RDS。

架构

数据迁移架构

Amazon RDS 上 PostgreSQL 的数据迁移架构

工具

操作说明

任务描述所需技能
创建 Amazon RDS PostgreSQL 数据库实例。

在 Amazon RDS 中设置 PostgreSQL 数据库实例。有关说明,请参阅 Amazon RDS for PostgreSQL 文档

数据库管理员
从源 PostgreSQL 数据库获取架构转储并将其恢复至目标 PostgreSQL 数据库中。
  1. 使用带有 -s选项的 pg_dump 实用程序,从源数据库生成架构文件。

  2. 使用带有 -f选项的 psql 实用程序,将架构加载至目标数据库中。

数据库管理员
启用逻辑解码。

在 Amazon RDS 数据库参数组,将 rds.logical_replication 静态参数设置为 1。有关说明,请参阅 Amazon RDS 文档

数据库管理员
在源数据库和目标数据库创建 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;"
数据库管理员
在源 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
数据库管理员
创建复制集,添加表格和序列。

要在源 PostgreSQL 数据库上创建复制集并将表和序列添加到复制集,请运行:

psql -d dbname -p 5432 <<EOF SELECT pglogical.replication_set_add_all_tables('default', '{public}'::text[],synchronize_data := true); EOF
数据库管理员
创建订阅用户。

若要对 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
数据库管理员
创建订阅。

若要对 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' );
数据库管理员
任务描述所需技能
检查源数据库和目标数据库。

检查源数据库和目标数据库,以确认数据迁移正在成功复制。您可以使用 select count(1) 对源表和目标表执行基本验证。

数据库管理员

相关资源