我们在 AWS 的 EC2 上运行了一个 Posrgres 9.5 数据库,我们正在尝试设置热备用。该服务器有大约 3TB 的数据,因此备份不是一项快速的任务。
我最初尝试通过运行以下命令为热备用创建基础备份(以下本指南):
sudo -u postgres pg_basebackup -h <primary IP> -D /data/postgres -U repuser -v -P --xlog-method=stream
运行几个小时后,我确定它需要将近两周的时间才能完成基础备份。我担心主服务器在完成时不会有 14 天前的 WAL 日志,所以我尝试了另一种方法。
我晚上关闭了主服务器,并对 EBS 卷进行了快照。(我们将数据目录存储在单独的卷上。)然后,我从快照创建了一个卷并将其附加到备用服务器。
此时,主服务器和备用服务器都已关闭,并且它们都具有匹配的数据目录。我启动了主服务器,它显然可以正常联机。但是备用服务器却没有。经过一番挖掘,我在日志文件夹 (csv) 中发现了此错误:
"hot standby is not possible because wal_level was not set to ""hot_standby"" or higher on the master server",,"Either set wal_level to ""hot_standby"" on the master, or turn off hot_standby here."
主服务器的 wal_level 已设置为 hot_standby。我还在网上发现,如果备用服务器无法连接到主服务器,则可能会发生此错误,但我已经验证了凭据并且它们没有问题。(当我尝试使用 pg_basebackup 时,它们也运行良好。)
我的问题是:
1) 为什么无法对主服务器进行快照并将其安装到备用服务器? 有没有办法让它工作?
2)如果没有,有没有更快的方法进行基础备份?
3) 如果不是,那么在 14 天后备份完成后,主服务器是否仍有足够的 WAL 数据?换句话说,热备用服务器是否能够弥补运行 pg_basebackup 时错过的内容?
答案1
卢克,消息说:“或者在这里关闭 hot_standby。”
在您的备用服务器中情况不是这样吗(因为它来自快照)?
我想你不想使用 rds 吧?
如果它不能发挥作用,我没有一个简单的答案。这将取决于您可以接受的停机时间窗口,无论这是单个应用程序还是多租户应用程序,...
您可以尝试:
1)使用 pg_barman;2)首先转储结构,然后尝试分别转储每个表,以便可以利用更多核心 2.1)在这种情况下,限制将是 io 2.2)我需要更多时间来分析 FK 的使用情况,以建立正确的序列 2.3)在这种情况下,我建议重命名数据库一段时间,这样就不会创建新数据 3)对数据库进行分片
祝你好运