【问题标题】:How to lock Data Base when pg_restore runspg_restore 运行时如何锁定数据库
【发布时间】:2021-06-25 09:09:48
【问题描述】:

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

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

这是执行的命令:

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

【问题讨论】:

    标签: postgresql psql pg-restore backup-sqldatabase


    【解决方案1】:
    • 撤销数据库的连接权限或拒绝pg_hba.conf中的连接(记住默认情况下PUBLIC可以连接数据库)

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2023-03-18
        • 2021-07-11
        • 2020-06-04
        • 2014-01-01
        • 1970-01-01
        • 2015-08-05
        • 2014-12-23
        • 1970-01-01
        • 2018-11-28
        相关资源
        最近更新 更多