mreach
(M. Reacher)
1
我正准备测试一个导入大量内容的流程,但想确保万一出现问题,能够正确回滚。
我运行的是外部 PostgreSQL 实例,因此我认为其实不需要备份 Docker 中的 Discourse Rails 实例,只需通过以下步骤备份数据库即可:
备份:
./launcher stop app
pg_dump -U username -p 12345 -W -F p databasename | xz > ~/backup/database/$(date +"%d-%m-%Y_%H.%M.%S").databasename.pgsql.xz
./launcher start app
### 导入内容 ###
如果情况不妙,恢复:
./launcher stop app
xzcat ~/backup/database/DATE.databasename.pgsql.xz | psql -U username -p 12345 -W databasename
./launcher start app
这样系统应该就能恢复正常并可用了……对吗?
pfaffman
(Jay Pfaffman)
2
很可能存在一个内置的、易于恢复的方案,它经过测试、获得支持,且只需点击几下或执行一条命令行即可完成。
如果您的方法不起作用,那就只能自行解决了。
mreach
(M. Reacher)
3
正如我所指出的,这是针对外部 PostgreSQL 数据库的,因为我并未使用 Docker 容器化的版本。遗憾的是,常规的备份/恢复方法对我来说无法使用(可能是因为我在大数据库服务器上运行的 PostgreSQL 版本稍新)。
pfaffman
(Jay Pfaffman)
4
哦,是的。如果你运行的是 PostgreSQL 11,那就得靠自己了。如果你在外部数据库上运行 PostgreSQL 10,应该没问题。但最好测试一下,看看是否可行。
gerhard
(Gerhard Schlager)
5
PG11 和 PG12 将很快在备份与恢复过程中得到支持。敬请期待。
谢谢! clarification 一下,将备份恢复到 Discourse 站点(包含内容)是否会完全删除外部 PostgreSQL 数据库实例(RDS)中的所有数据?如果恢复失败或连接中断,RDS 中的数据是否会损坏?
pfaffman
(Jay Pfaffman)
10
它将删除 Discourse 数据库中的所有数据,但不会影响其他数据。如果恢复失败,现有数据将保持不变。