From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | Andrus <kobruleht2(at)hot(dot)ee>, pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: How to transfer databases form one server to other |
Date: | 2020-01-27 01:30:41 |
Message-ID: | 23417975-69b8-e273-2a58-c65beb16decf@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Ron | 2020-01-27 02:26:59 | Re: How to transfer databases form one server to other |
Previous Message | Andrus | 2020-01-26 22:47:55 | Re: How to transfer databases form one server to other |