微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pg_restore 运行时如何锁定数据库

如何解决pg_restore 运行时如何锁定数据库

在运行 pg_restore 时,我们会遇到一些其他程序的一些(意外)执行,导致恢复错误

有没有办法在恢复时锁定数据库以确保不进行任何修改

这是执行的命令:

pg_restore --clean --verbose --no-owner /home/postgres/backup/bkp --if-exists -j 7 -d restdb01 -p 5432

解决方法

pg_restore 的 PostgreSQL 文档没有提供此类功能的任何信息。

根据wiki postgresql 不支持数据库锁定。

我建议使用权限机制来防止任何连接到数据库的人被恢复:

  1. 创建一个新数据库。
  2. 将对该数据库的 CONNECT 权限授予 pg_restore 命令中使用的单个用户 (--username=db-admin)。
  3. 恢复。
  4. 向数据库添加所有必需的权限。

除非您有应用程序以超级用户身份连接到您的服务器,否则这将阻止应用程序读取或更改

,
  • pg_hba.conf中撤销数据库的连接权限或拒绝连接(请记住,默认情况下,PUBLIC可以连接到数据库)

  • 使用 pg_terminate_backend 取消所有现有连接

  • 以仍然可以连接到数据库的用户身份运行 pg_restore

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。