我要将 postgresql 9.3.10 DB (~55GB) 从 Azure VM 传输到 AWS EC2。作为新手,这个问题是关于正确处理流程的。我看过这篇文章,需要更进一步:
将实时生产数据库转储到繁忙的服务器上是否绝对安全?文档解释了pg_dump 是如何非阻塞的,所以我倾向于认为它是。根据您的经验,
pg_dump
生产总是顺利进行,还是有例外?我的另一个(不愉快的)选择是关闭服务器,创建一个“硬”维护窗口。文档提到使用来
--format
控制转储格式。c
(custom) 看起来很有前途,但我发现关于如何使用它的描述含糊不清。我应该像这样简单地尝试pg_dump
命令:pg_dump -U postgres -Fc db_name > db.dump
?任何其他实际有用的标志也会引起人们的兴趣。我读过的一个简单指南
psql -1 restored_database < backup_file
建议将整个还原包装到一个事务中: 。如果存在恢复错误,则通过完全失败给出二元结果。i) 什么会导致恢复错误?和 ii) 我最初计划使用的恢复命令是pg_restore --verbose --clean --no-acl --no-owner -U myuser -d mydb latest.dump
. 看起来对吗?
特别是使用它是非常安全的,
--serializable-deferrable
但是您没有回答真正的问题,即在转储和移动数据库时如何处理插入的数据。在我看来,最好的方法是硬维护窗口。我会用
-c
。由于缺少扩展而导致的不稳定备份或加载失败会导致恢复错误,但我认为您不会遇到这个问题。
既然你知道 Azure 支持 9.6(他们在这里这么说),我会
如果有效,pg_dump 和移动移动到 Azure。