我正在编写一个docker-compose
带有 PostgreSQL 的容器的配置。docker-compose
有一个名为restart
. 如果我启用它,那么只要 Postgres 进程停止,它就会立即重新启动 Postgres。然而,它(可能)如何重新启动并不相关。
我知道在 MySQL 中,在数据库停止后立即启动数据库是不安全的,因为 MyISAM 表可能会损坏。必须先使用不相关的命令行工具手动修复 MyISAM 表,然后启动 db。
所以我想知道如果出现问题,重启 PostgreSQL 通常是否安全。或者,也许我们应该先备份、修复、读取日志,然后再尝试重新启动它。
例如,一个相关的情况是停电。之后我该怎么办?
Postgres 通常可以很好地处理服务器重启。假设所有正确的硬件都已就位(电池支持的缓存等),在崩溃后启动 Postgres 将自动使其进入恢复模式,它将尝试重播自上次
CHECKPOINT
. 一旦它完成重播到一致状态,您就可以自由使用数据库并继续您的业务。然而,话虽如此,您作为 DBA 可以根据您的业务需求执行一致性检查,以确保没有损坏。披露:我在EnterpriseDB (EDB)担任支持工程师