jon*_*ton 15 postgresql amazon-rds
今天早上我参与了升级 AWS RDS 上的 PostgreSQL 数据库。我们想从 9.3.3 版迁移到 9.4.4 版。我们已经在临时数据库上“测试”了升级,但是临时数据库要小得多,并且不使用多可用区。事实证明,这个测试是相当不充分的。
我们的生产数据库使用多可用区。过去我们做过次要版本升级,在这种情况下,RDS会先升级standby,然后将其提升为master。因此,故障转移期间发生的唯一停机时间约为 60 秒。
我们假设主要版本升级也会发生同样的情况,但是我们错了。
关于我们设置的一些细节:
以下是我们执行升级时记录的 RDS 事件:
数据库 CPU 在大约 08:44 和 10:27 之间达到最大值。RDS 拍摄升级前和升级后的快照似乎占用了大部分时间。
该AWS文档不警告这样的反响,尽管从阅读他们很显然,我们在处理一个明显的缺陷是,我们没有创建的副本生产的多AZ建立数据库,并尝试将其升级为试运行
总的来说,这非常令人沮丧,因为 RDS 给我们的关于它正在做什么以及可能需要多长时间的信息非常少。(再次,进行试运行会有所帮助......)
除此之外,我们想从这次事件中吸取教训,所以这里是我们的问题:
小智 5
这是一个很好的问题,
在云环境中工作有时会很棘手。
您可以使用pg_dumpall -f dump.sql
命令,它将您的整个数据库转储为 SQL 文件格式,您可以从头开始重建它指向其他端点。psql -h endpoint-host.com.br -f dump.sql
简称使用。
但是要做到这一点,您将需要一些具有合理磁盘空间的 EC2 实例(以适合您的数据库转储)。此外,您需要安装yum install postgresql94.x86_64
才能运行转储和恢复命令。
请参阅PG Dumpall DOC 中的示例。
请记住,为了保持数据的完整性,建议(在某些情况下是强制性的)在此维护窗口期间关闭连接到数据库的系统。
另外,如果你需要加速的东西,可以考虑使用pg_dump
,而不是pg_dumpall
通过采取并行(优势-j njobs
)参数,当你决定参与这一进程的CPU数量,例如-j 8
将使用到8个CPU。默认情况下,pg_dumpall
or的行为pg_dump
仅使用 1。使用pg_dump
替代的唯一优势pg_dumpall
是您需要为您拥有的每个数据库运行该命令,并转储分隔的角色(组和用户)。
请参阅PG Dump DOC和PG Restore DOC 中的示例。
AWS 还建议进行逻辑复制,以最大程度地减少主要版本升级期间的停机时间。
对于从 PostgreSQL 10.x 升级到更高版本,可以使用本机复制,对于旧版本,您可以使用 pglogic(也可以在最新版本上使用pglogic)——RDS 支持这两种解决方案。
pre-data
和post-data
)post-data
数据库同步后应用架构更改,以强制引用完整性步骤 6-8 取决于应用程序,当然,您可能有其他工具来停止应用程序堆栈中的写入。
您可以在此 YouTube 视频中找到详细信息和示例:
https://www.youtube.com/watch?v=S8kX250UIVo
归档时间: |
|
查看次数: |
4668 次 |
最近记录: |