【问题标题】:What's the best way to get a 200 GB database from ec2 instance into RDS Postgresql by using Replication....?使用 Replication 将 200 GB 数据库从 ec2 实例导入 RDS Postgresql 的最佳方法是什么......?
【发布时间】:2014-07-22 16:33:23
【问题描述】:

我们目前在 EC2 实例上的 Postgres 上运行我们的生产数据库。我们现在想迁移 RDS,但我无法及时将数据导入 RDS 实例。使用 pg_dump 来获取数据,我需要 20 分钟来创建一个转储文件,但是将近 18 个小时才能(psql)将它恢复到我的 RDS 实例中。在这 18 小时内,我的生产数据库添加了更多需要迁移的数据。 虽然我可以处理一些停机时间(最多一个小时),但我不能让生产停机 18 小时!有一个更好的方法吗?比如说,离线还原,然后将还原的 RDS 实例与我当前的数据库服务器进行主从组合?或者,对我当前的数据库卷进行快照[我当前的数据库版本是 9.0.4],然后将其挂载到 RDS 实例上? 注意:- Amazon RDS PostgreSQL 服务器不允许主机通过 Telnet 或 Secure Shell (SSH) 直接访问数据库实例

【问题讨论】:

    标签: postgresql amazon-web-services amazon-ec2


    【解决方案1】:
    1. 设置从旧服务器到新服务器的日志传送。
    2. 当旧服务器上的 Postgres 运行时,使用 `pg_basebackup` 在新服务器上创建数据库的克隆。
    3. 启动新服务器。
    4. 等待一段时间,直到新服务器处理备份期间传送的日志。
    5. 禁用与旧服务器的连接。
    6. `SELECT pg_switch_xlog()` 在旧服务器上强制将日志文件切换到新服务器。
    7. 等待一段时间,直到新服务器处理最后一个日志文件。
    8. 停止旧服务器并升级新服务器。

    【讨论】:

    • 嗨 Tometzky,感谢您的回复,但我只需要知道它适用于 rds postgresql 服务器,因为 Amazon RDS PostgreSQL 服务器不允许通过 Telnet 或 Secure Shell (SSH) 直接访问数据库实例),Amazon RDS postgres 引擎不提供管理员用户角色,rdsadmin 是亚马逊自己的超级用户,被亚马逊用来执行更新、运行备份和执行其他维护任务,而且我们没有编辑配置文件的权限例如:- postgresql.conf.
    • 我明白了。然后像 Slony 或 Bucardo 这样的基于触发器的复制引擎应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    相关资源
    最近更新 更多