我们每天备份postgres,它以tarred (gz)基备份的形式出现。我需要将它还原到相同版本的另一个db中。然而,我对我读到的关于做这件事的文章感到困惑。postgres DB的版本为8.2.4。所采取的主要步骤如下:
rm -rf /var/lib/postgresql/10/main/*
cp -r /basebackup/* /var/lib/postgresql/10/main/
rm -rf /var/lib/postgresql/10/main/pg_wal/*
因此,在我的例子中,postgresql数据目录是/usr/local/pgsql824 824/ data。在上面的命令中,我认为这必须是/var/lib/postgresql/main。我已经将tar.gz基备份解锁到/usr/local/temp中。因此,我假设这个路径在上面的命令中是/basebackup。如果我错了,请纠正我。
现在,出现了"recovery.conf“文件的部分。以下是本文给出的文件内容:
vim /var/lib/postgresql/10/main/recovery.conf
restore_command = 'cp /wal_archive/%f "%p"'
recovery_target_lsn = '3/72658818'
如果我已经将基本备份的内容解锁到/usr//wal_archive/temp中,那么"/wal_archive“的目的是什么?这就是我不确定的地方。
这是全文的链接:
https://severalnines.com/database-blog/point-time-postgresql-database-restoration
我只需要清楚地解释如何将基本备份还原到新的数据库数据目录。
发布于 2020-09-21 14:07:36
通常,没有进一步描述的基本备份意味着pg_basebackup
所采取的东西。但这在8.2中并不存在,所以这里还不清楚“基本备份”意味着什么。这并不是说它是非常明确的,因为pg_basebackup有许多选择。
你链接到的那篇文章是为了及时恢复。显然,基本备份不能包括在进行备份时尚未发生的更改。需要WAL存档将数据库从备份的结束时间前滚到所需的时间点。如果您实际上不想执行PITR,而只是恢复到基本备份的结束时间,那么您将不需要recovery.conf,也不需要执行rm -rf /var/lib/postgresql/10/main/pg_wal/*
。(尽管您确实运行了该命令,但无论如何也不会造成任何损害,因为当时所讨论的目录没有被称为“pg_wal”。)你只要启动数据库。
https://dba.stackexchange.com/questions/275810
复制相似问题