Re: pg_restore with connection limit 0

Adrian Klaver <[email protected]>
Newsgroups gmane.comp.db.postgresql.general
Message-ID <[email protected]>
On 11/27/19 7:06 AM, Олег Самойлов wrote:
> Hi all.
> 
> I have task to refresh a test database from a production database (with masking) on the fly. To make masking we use pg_restore --create with three stages restoration. And one of the problem is daemons writing concurrently in the time of the restoration of a database. I need to block them in time of the restoration. ALLOW_CONNECTIONS=true don't work in this case, because it blocks a superuser too. We use CONNECTION LIMIT 0, because this blocks almost all, except a superuser. But to prevent a race condition we must set this in the same query as CREATE DATABASE, the postgresql syntax allow this. Now this is rather complex procedure:
> 
> We get `pg_restore --create --list −−section=pre−data` and `pg_restore ---stage --list −−section=pre−data`, diff them to get difference.
> Get `pg_restore --create --use-list=diff −−section=pre−data` to get sql.
> Edit sql: remove ALTER DATABASE ... CONNECTION LIMIT ... if exist, add CONNECTION LIMIT 0 to the CREATE DATABASE.
> Send sql to the postgresql.
> And so on.
> 
> Will be convenient to add CONNECTION LIMIT 0 to the CREATE DATABASE just by option of pg_restore.
> And will be even more straight approach do not use CONNECTION LIMIT 0 is this case, but change ALLOW_CONNECTIONS to accept values: false, true, superuser. ("Superuser" to accept connections from superuser only).
> 
> 

Why not use pg_hba.conf to allow only connection from superuser for 
duration?



-- 
Adrian Klaver
[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.