Ben*_*y B 2 postgresql opennms vacuum
好的,我已经搬到一家新公司,我看到他们在这里有一个 PostgreSQL 数据库来运行 OpenNMS。
我是一个 MySQL 人,对 PostgreSQL 一点也不熟悉,但我至少学会了如何运行psql和postgres -D进入单用户模式。
无论如何,OpenNMS 崩溃了。我进入并追踪到 PostgreSQL,给出了这个错误:
WARNING: database "template1" must be vacuumed within 965550 transactions
HINT: To avoid a database shutdown, execute a full-database VACUUM in "template1".
Run Code Online (Sandbox Code Playgroud)
它实际上从 100 万开始,而我已经下降到 965500,如您所见。我已经通过登录单用户 ( postgres -D) 并完全运行 Vacuum来达到这一点。现在我希望这可以清理它,但结果正好是 55 行:
WARNING: database "template1" must be vacuumed within 938861 transactions
HINT: To avid a database shutdown, execute a full-database VACUUM in "template1".
WARNING: database "template1" must be vacuumed within 938860 transactions
HINT: To avoid a database shutdown, execute a full-database VACUUM in "template1".
WARNING: database "template1" must be vacuumed within 938861 transactions
HINT: To avoid a database shutdown, execute a full-database VACUUM in "template1".
WARNING: database "template1" must be vacuumed within 938860 transactions
HINT: To avoid a database shutdown, execute a full-database VACUUM in "template1".
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,我是否只需要继续运行直到达到 0 或者我做错了?
我以前遇到过这个问题。以下是我如何修复它的笔记
您需要通过运行真空来解决问题,因为错误很方便地暗示了这一点。为此,首先关闭 postgres
sudo /sbin/service postgresql stop
现在,您需要检查每个数据库并使用独立后端执行 vaccum。作为 postgres 用户运行:
postgres -D /opt/pgsql/data/ postgres
其中 /opt/pgsql/data 是 postgres 数据目录的路径,而 postgres 是您要修复的数据库的名称。
您将收到如下提示:
PostgreSQL 独立后端 8.1.18
后端>
只需VACUUM在 backend> 提示符下输入即可。
您现在很可能会收到类似警告:数据库“template1”必须在 999407 个事务中被清理 提示:为避免数据库关闭,请在“template1”中执行完整数据库 VACUUM。
只需不断重复这些步骤,每次更改 DBNAME,直到您不再收到警告。发生这种情况时,您可以重新启动 postgres,一切都会恢复正常。
编辑:我还应该提到,在我们做了几次这个过程之后;我们决定实施 autovacuum 过程:http : //www.postgresql.org/docs/8.1/static/maintenance.html#AUTOVACUUM
| 归档时间: |
|
| 查看次数: |
5038 次 |
| 最近记录: |