pg_dump阻止与同一用户的Postgres数据库访问

问题描述 投票:0回答:1

我们在同一台服务器上使用Postgres DB在Ubuntu上运行Django应用程序。我们每天使用以下命令备份我们的数据库:

pg_dump -Fc -U user1 -w db_name > ${filepath}`

问题是,似乎阻止了对同一用户(user1)的同一数据库的读/写访问,而不是我们的Django应用程序。检查文档,它说明了这一点

pg_dump不会阻止访问数据库的其他用户(读者或编写者)

这让我觉得可能阻止访问数据库,因为Django应用程序使用的是同一个用户。这会发生吗?我没有找到任何澄清它的文件。

postgresql backup pg-dump database-locking
1个回答
0
投票

如果访问实际被阻止,即您没有收到任何错误,但应用程序挂起,则必须是应用程序在表上采用ACCESS EXCLUSIVE锁。

如果您的工作量有很多TRUNCATEALTER TABLE语句或类似的话,就会发生这种情况。这些将被阻止,直到pg_dump在单个事务中运行以保持一致性。

它也可能是使用LOCK tablename进行的显式表锁,这通常是糟糕设计的标志。

尝试减少你的工作量中的ACCESS EXCLUSIVE锁,他们也可以prevent autovacuum and thus damage your database

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.