Re: How to transfer databases form one server to other - Mailing list pgsql-general

From Adrian Klaver
Subject Re: How to transfer databases form one server to other
Date
Msg-id 23417975-69b8-e273-2a58-c65beb16decf@aklaver.com
Whole thread Raw
In response to How to transfer databases form one server to other  ("Andrus" <kobruleht2@hot.ee>)
Responses Re: How to transfer databases form one server to other
Re: How to transfer databases form one server to other
List pgsql-general
On 1/26/20 2:47 PM, Andrus wrote:
> Hi!
> 
>> Before you do any of this I would check the Release Notes for the 
>> first release of each major release. Prior to version 10 that would be 
>> X.X.x where X is a major release. For 10+ that is X.x.  I would also 
>> test the upgrade before doing it on your production setup.
> 
> I want to create test transfer first, check applications work and after 
> that final transfer.
> 
>> Best practice if you are going the dump/restore route is to use the 
>> pg_dump binary from the new server(12) to dump the old server(9.1)
> 
> Postgres version 12 pg_dump probably cannot installed in old server 
> (Debian Squeeze 9).
> Running pg_dump in new server probably takes much more time since data 
> is read from uncompressed form and dumping is time-consuming process.
> (internet connection between those server is fast, SSH copy speed was 
> 800 Mbit (not 100 Mbit as I wrote), it took 5 minutes to copy 37 GB).

Test it and see how slow/fast it is.

> 
> There are also some hundred of Postgresql login and group roles in old 
> server used also in access rights in databases.
> Those needs transferred also.

pg_dumpall -g > globals.sql

will get you the global information. See:

https://www.postgresql.org/docs/12/app-pg-dumpall.html

More comment inline below.
> 
> My plan is:
> 
> 1. Use pg_dump 9.1 in old server to create 24 .backup files in custom 
> format.
> 2. Use pgAdmin "backup globals" command to dump role definitions is old 
> server to text file.
> 3. Manually edit role definitions to delete role postgres since it 
> exists in new server.

No need, it will throw a harmless error message and continue on.

> 4. Run edited role definitons script using pgadmin in new server to 
> create roles
> 5. Use Midnight Commander to copy 24 .backup files from old to new server
> 6. Use Postgres 12 pg_restore with job count 4 to restore  those 24 
> databases to new server sequentially.
> 
> To repeat transfer after testing:
> 
> 1. Delete restored databases.
> 2. Delete imported roles in new server

That will probaly not end well. I'm guessing there are objects that have 
a dependency on the the roles.

 From you questions above and below I would say you need to set up a 
test bed and try an dump/restore on a single database. That will help 
focus you on the actual problems. I'm guessing there will be more then 
you have mentioned so far.

> 3. Proceed 1-6 from plan again.
> 
> 
> Questions:
> 
> 1. pgAdmin allows only deletion roles one by one.
> Deleting hundreds of roles is huge work.
> How to invoke command like
> 
> DELETE ALL ROLES EXCEPT postgres
> 
> ?
> Is there some command, script or pgadmin GUI for this ?
> 
> 2. Is it OK to restore from 9.1 backups or should I create backups using 
> pg_dump from Postgres 12 ?
> I have done some minor testing and havent found issues.
> 
> 3. How to create shell script which reads all files from /root/backup 
> directory from old server?
> (I'm new to linux, this is not postgresql related question)
> 
> 4. Are there some settings which can used to speed up restore process ? 
> Will turning fsync off during restore speed up it ?
> New server has 11 GB ram . No other applications are running during 
> database transfer.
> shared_buffer=1GB setting is currently used in postgresql.conf
> 
> 5. Can this plan improved
> 
> Andrus.
> 
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



pgsql-general by date:

Previous
From: "Andrus"
Date:
Subject: Re: How to transfer databases form one server to other
Next
From: Ron
Date:
Subject: Re: How to transfer databases form one server to other