Re: How to transfer databases form one server to other

2020-01-26 Thread Andreas Joseph Krogh


På mandag 27. januar 2020 kl. 03:26:59, skrev Ron mailto:ronljohnso...@gmail.com>>: [..]
 I ran uncompressed pg_dump on multiple TB+ sized databases from v8.4 servers 
across the LAN using 9.6 binaries on the remote server. It was quite fast. 
Threading was key. 

According to the manual: https://www.postgresql.org/docs/12/app-pgdump.html 
 
the "directory format" is the only format which supports parallel dumps, if 
I'm not reading it wrong. 

How did threading solve "between database" dump/restore for you? Did you dump 
to "directory format" first, then restore? If so, then that requires quite a 
bit of temp-space... 

-- 
Andreas Joseph Krogh 
CTO / Partner - Visena AS 
Mobile: +47 909 56 963 
andr...@visena.com  
www.visena.com  
 

Re: How to transfer databases form one server to other

2020-01-26 Thread Ron

On 1/26/20 7:30 PM, Adrian Klaver wrote:

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.


I ran *uncompressed* pg_dump on multiple TB+ sized databases from v8.4 
servers across the LAN using 9.6 binaries on the remote server.  It was 
quite fast.  Threading was key.


--
Angular momentum makes the world go 'round.


Re: How to transfer databases form one server to other

2020-01-26 Thread Adrian Klaver

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.kla...@aklaver.com




Re: How to transfer databases form one server to other

2020-01-26 Thread Adrian Klaver

On 1/26/20 8:59 AM, Andrus wrote:

Hi!

VPS server has old Debian 6 Squeeze with Postgres 9.1
It has 24 databases.

Every night backup copies are created using pg_dump to /root/backups 
directory for every database.

This directory has 24 .backup files with total size 37 GB.

I installed new VPS server with Debian 10 and Postgres 12.

How to transfer those databases to new server ?


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.


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)





Both server have ssh and root user, postgres port 5432  open,  100 MB 
internet connection and fixed IP addresses. In night they are not used 
by users, can stopped during move.


Should I download .backup files and use pg_restore or use pipe to 
restore whole cluster.


Andrus.





--
Adrian Klaver
adrian.kla...@aklaver.com




How to transfer databases form one server to other

2020-01-26 Thread Andrus

Hi!

VPS server has old Debian 6 Squeeze with Postgres 9.1
It has 24 databases.

Every night backup copies are created using pg_dump to /root/backups 
directory for every database.

This directory has 24 .backup files with total size 37 GB.

I installed new VPS server with Debian 10 and Postgres 12.

How to transfer those databases to new server ?

Both server have ssh and root user, postgres port 5432  open,  100 MB 
internet connection and fixed IP addresses. In night they are not used by 
users, can stopped during move.


Should I download .backup files and use pg_restore or use pipe to restore 
whole cluster.


Andrus.