pg_restore 运行时如何锁定数据库
How to lock Data Base when pg_restore runs
当 运行 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 不支持数据库锁定。
我建议使用权限机制来防止任何连接到数据库的人被恢复:
- 创建一个新数据库。
- 向 pg_restore 命令 (--username=db-admin) 中使用的单个用户授予对该数据库的 CONNECT 权限。
- 恢复。
- 将所有必需的权限添加到数据库。
除非您有应用程序以超级用户身份连接到您的服务器,否则将阻止应用程序读取或更改
撤销数据库的连接权限或拒绝pg_hba.conf
中的连接(记住默认情况下,PUBLIC
可以连接到数据库)
使用pg_terminate_backend
取消所有现有连接
运行 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 不支持数据库锁定。
我建议使用权限机制来防止任何连接到数据库的人被恢复:
- 创建一个新数据库。
- 向 pg_restore 命令 (--username=db-admin) 中使用的单个用户授予对该数据库的 CONNECT 权限。
- 恢复。
- 将所有必需的权限添加到数据库。
除非您有应用程序以超级用户身份连接到您的服务器,否则将阻止应用程序读取或更改
撤销数据库的连接权限或拒绝
pg_hba.conf
中的连接(记住默认情况下,PUBLIC
可以连接到数据库)使用
pg_terminate_backend
取消所有现有连接运行
pg_restore
作为仍然可以连接到数据库的用户