Restoring using PG_DUMP in PG12 results in - Mailing list pgsql-general

From Shukla, Pranjal
Subject Restoring using PG_DUMP in PG12 results in
Date
Msg-id 09F60E18-C1ED-4878-B866-0B0CE790CB61@akamai.com
Whole thread Raw
Responses Re: Restoring using PG_DUMP in PG12 results in
List pgsql-general

Hello,

We tried importing into an empty database in PG 12 from the dump that was created in PG 10. Import was successful but we got an message that an error was ignored. We agin imported with -e option and the following message was printed:

 

pg_restore: while PROCESSING TOC:

pg_restore: from TOC entry 6; 2615 2200 SCHEMA public postgres

pg_restore: error: could not execute query: ERROR:  schema "public" already exists

Command was: CREATE SCHEMA public;

 

There are some blogs that ar pointing to that fact the error is because of different versions of PG Admin Utility namely different versions of pg_dump() and pg_resotre() command in source and destination versions. We use the following command for pg_dump and pg_restore.

 

pg_dump -U postgres -h 127.0.0.1 --verbose --port=5432 -j 5 -Fd mydb --no-synchronized-snapshots -f /var/mydata/dbbackup

pg_restore -W -h 127.0.0.1 -p 5432 -U postgres -d mydb -v "/var/mydata/dbbackup"

 

To mitigate the same, we took SQL (.sql) dump of the above database in PG10 and restored in an empty database in PG12, it worked. Using this process, we migrated our database from PG10 to 12.

 

To confirm whether the problem is really because of the difference in version, we performed 2 exercises, let’s call them approaches. Let me narrate them below.

 

Approach 1:

  1. Again, took Folder backup of mydb database using pg_dump in PG12 (The same was brought in PG 12 using SQL Import).
  2. Created another database named mydb_temp.
  3. Imported the dump taken in step-1 using pg_import command in temp database, it worked.

 

Conclusion of Approach 1:

  1. pg_dump and pg_import from 10 to 12 gave an error that “Schema public already exists”.
  2. pg_dump and pg_import from 12 to 12 did not give any error.

 

Approach 2:

  1. Took a dump of mydb PG10 database FROM PG12 machine using the below command. Not the IP here, instead of localhost, we gave ip of the machine with PG10 installation.
  2. FROM machine with PG12 binaries. pg_dump -U postgres -h 172.27.2.131 --verbose --port=5432 -j 5 -Fd mydb --no-synchronized-snapshots -f /var/mydata/dbbackup
  3. Restored in an empty database in PG 12 using command: pg_restore -W -h 127.0.0.1 -p 5432 -U postgres -d mydb -v "/var/mydata/dbbackup"

 

Conclusion of Approach 2:

  1. Both backup and restore through same version of utilities worked.

 

Question to you all:

  1. Have you faced this scenario?
  2. Off the approaches mentioned above, which one do you think we should opt for while doing migration from PG 10 to 12 (in different machines)?

 

 

PS: Below is the command we use to create database:

 

CREATE DATABASE mydb WITH ENCODING 'UTF8' LC_COLLATE 'C' LC_CTYPE 'C' TEMPLATE template0;

 

 

Thanks & Regards

Pranjal Shukla

pgsql-general by date:

Previous
From: Арсен Арутюнян
Date:
Subject: LISTEN/NOTIFY ultra slow speed
Next
From: Adrian Klaver
Date:
Subject: Re: Restoring using PG_DUMP in PG12 results in