使用 pglogical 从 EC2 亚马逊上的 PostgreSQL 迁移到适用于 PostgreSQL 的亚马逊 RDS - AWS Prescriptive Guidance

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

使用 pglogical 从 EC2 亚马逊上的 PostgreSQL 迁移到适用于 PostgreSQL 的亚马逊 RDS

由 Rajesh Madiwale (AWS) 编写

摘要

此模式概述了使用 PostgreSQL pglogical 扩展将 PostgreSQL 数据库(版本 9.5 及更高版本)从亚马逊弹性计算云( EC2亚马逊)迁移到适用于 PostgreSQL 的亚马逊关系数据库服务(亚马逊 RDS)的步骤。Amazon RDS 现在支持 PostgreSQL 版本 10 的 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 的数据迁移架构

工具

操作说明

Task描述所需技能
创建 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' );
数据库管理员
Task描述所需技能
检查源数据库和目标数据库。

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

数据库管理员

相关资源