AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 61305
Accepted
jason.zissman
jason.zissman
Asked: 2014-03-20 08:22:16 +0800 CST2014-03-20 08:22:16 +0800 CST 2014-03-20 08:22:16 +0800 CST

从 AWS RDS PostgreSQL 实例获取 WAL 文件

  • 772

我们在 Amazon Web Services 上有一个 Postgres RDS 实例。我们启用了自动备份,并且每天拍摄快照。我们想为我们自己管理的 RDS 实例生成本地“最新”备份。对实例运行 pg_dump 是不够的,因为我们希望能够将数据库恢复到任何时间点。我们希望对 RDS 和所有 WAL 文件进行本地备份,因为该备份已进行。问题:

  1. 是否可以访问 RDS 在其备份例程中自动生成的 WAL 文件和备份?这将是理想的。我想下载它们的本地副本。经过初步调查,我觉得这个问题的答案是否定的。听起来 RDS 将其 WAL 文件和备份存储在 S3 中,但这使我们无法访问它们。我很想确认。

  2. 有没有其他方法可以访问 RDS 实例上发生的事务(WAL 文件)?我想我们应该能够在 EC2 上创建一个 Postgres 数据库,并将我们的主要“实时”RDS 实例中的事务“馈送”到这个 EC2 实例中。一旦我们的 EC2 实例更新,我们就可以从那里提取 WAL 文件。不过,多么令人头疼:/这种设置可能吗?从我们的 RDS 实例“馈送”到 EC2 实例以使其始终保持最新状态有什么魔力?

谢谢!

postgresql amazon-ec2
  • 3 3 个回答
  • 17556 Views

3 个回答

  • Voted
  1. Best Answer
    Craig Ringer
    2014-03-20T16:43:08+08:002014-03-20T16:43:08+08:00

    更新:我已在 AWS 论坛上发布了有关此内容的信息 - 请加入并在那里索取。


    在撰写本文时,Amazon RDS 不支持 RDS 之外的物理复制。您可以使用登录GRANT用户权限,但您不能在.REPLICATIONrds_superuserreplicationpg_hba.conf

    此外,当您在 RDS 中创建 DB 参数组时,一些关键参数会显示但已锁定,例如archive_command,锁定为/etc/rds/dbbin/pgscripts/rds_wal_archive %p。AWS RDS for PostgreSQL 似乎没有公开这些 WAL 以供外部访问(例如,通过 S3),因为如果您要对外部 PITR 使用 WAL-shipping 复制则需要这样做。

    所以在这一点上,如果你想要wal-shipping,不要使用RDS。它是一个易于使用的罐头数据库,但易于使用通常意味着它也是有限的,这里肯定就是这种情况。正如 Joe Love 在评论中指出的那样,它在 RDS中提供 WAL 运输和 PITR ,但您无法从RDS外部访问 WAL 。

    所以你需要使用 RDS 自己的备份工具——转储、快照和它自己的基于 WAL 的 PITR。


    即使 RDS 确实允许您建立复制连接(用于pg_basebackup或流式复制)并允许您访问存档的 WAL,您也可能无法实际使用该 WAL。RDS 运行一个打过补丁的 PostgreSQL,但没有人知道打了多少补丁或者它是否显着改变了磁盘格式。它也运行在亚马逊选择的架构上,可能是 x64 Linux,但不容易确定。由于 PostgreSQL 的磁盘格式和复制依赖于架构,因此您只能复制到与 Amazon RDS 使用的架构相同的主机,并且前​​提是您的 PostgreSQL 构建与他们的兼容。

    除其他外,这意味着您没有任何简单的方法可以从 RDS 迁移。您必须停止对数据库的所有写入足够长的时间才能执行 a pg_dump、恢复它并让新数据库运行。复制和故障转移、rsync 等的常用技巧将不起作用,因为您无法直接访问数据库主机。

    即使 RDS 运行未打补丁的 PostgreSQL,pg_basebackup出于安全原因,Amazon 也可能不希望允许您将 WAL 流式传输到 RDS 或导入 RDS。PostgreSQL 将数据目录视为受信任的内容,如果您制作了任何巧妙的“LANGUAGE c”函数来挂钩内部功能或做任何其他棘手的事情,您可能能够利用服务器获得比您应该拥有的更大的访问权限. 所以亚马逊不会很快允许入站 WAL。

    它们可以支持出站 WAL 发送,但上述格式兼容性、自由更改等问题仍然适用。


    相反,您应该使用 Londiste 或 Bucardo 之类的工具。

    • 21
  2. user318817
    2018-03-15T15:58:20+08:002018-03-15T15:58:20+08:00

    现在可以使用逻辑复制: https ://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication

    • 3
  3. michel-slm
    2015-01-21T00:52:41+08:002015-01-21T00:52:41+08:00

    根据该论坛主题的回复,从2014 年 11 月 10 日起,现在支持使用基于触发器的系统(如 Londiste 和 Bucardo)进出 RDS 进行复制。

    公告在这里

    • 1

相关问题

  • 我可以在使用数据库后激活 PITR 吗?

  • 运行时间偏移延迟复制的最佳实践

  • 存储过程可以防止 SQL 注入吗?

  • PostgreSQL 中 UniProt 的生物序列

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve