Error when restoring 9.5 pgdump files on 9.6 postgres - postgresql

We have been using 9.5 postgres.
And we use pgdump to get backup files from that database and then subsequently use it to restore on a 9.6 postgres.
We were unable to restore successfully. Usually the minor version upgrade does not mean backwards breaking.
I am wondering what's the issue causing us to be unable to successfully restore on a 9.6 database.
We need to do so just in case we need to restore from archived data backups.

I was facing the same error when upgrading from 9.3 to 9.6.
The restore failed every time I tried but the dump was successful.
My solution to this problem was not to use the custom format! Instead I used the plain format. So I tried plain format with file extension sql, with utf8 encoding as user postgres. And obviously don't forget to include pre-data, data and post-data because otherwise your restore won't be complete. This works perfectly.
If your dump is ok, also try a full vacuum before the dump. If the vacuum is not ok, this might be your problem.

To Take Dump
pg_dump --username=postgres --format=c --file=e:/testdbdump.sql testdb
OR
pg_dump -U username databasename >>sqlfile.sql
To Restore
pg_restore --username=postgres --dbname=testdb<d:\sqlfile.sql
pg_restore --username=postgres --dbname=testdb <d:\sqlfile.sql
pg_restore --username=postgres --dbname=testdb <d:\testDBApr18.sql
pg_restore --username=postgres --dbname=testdb <c:\Backup\testdbDBApr18.sql
// PG DUMP & RESTORE THAT WORKS FOR ME
pg_dump -U postgres -h localhost --format=c testdb > db_dump_file.dump
pg_restore -U postgres -h localhost -v -d testdb db_dump_file.dump

Related

How to pg_restore one table and its schema from a Postgres dump?

I am having some difficulties with restoring the schema of a table. I dumped my Heroku Postgres db and I used pg_restore to restore one table from it into my local db (it has more than 20 tables). It was successfully restored, but I was having issues when I tried to insert new data into the table.
When I opened up my database using psql, I found out that the restored table is available with all the data, but its schema has zero rows. Is there anyway I could import both the table and its schema from the dump? Thank you very much.
This is how I restored the table into my local db:
pg_restore -U postgres --dbname my_db --table=message latest.dump
Edit:
I tried something like this following the official docs, but it just gets blocked and nothing happened. My db is small, no more than a couple of megabytes and the table's schema I am trying to restore has no more than 100 row.
pg_restore -U postgres --dbname mydb --table=message --schema=message_id_seq latest.dump
As a more general answer (I needed to restore a single table from a huge backup), you may want to take a look at this post: https://thequantitative.medium.com/restoring-individual-tables-from-postgresql-pg-dump-using-pg-restore-options-ef3ce2b41ab6
# run the schema-only restore as root
pg_restore -U postgres --schema-only -d new_db /directory/path/db-dump-name.dump
# Restore per table data using something like
pg_restore -U postgres --data-only -d target-db-name -t table_name /directory/path/dump-name.dump
From the Heroku DevCenter here
Heroku Postgres is integrated directly into the Heroku CLI and offers
many helpful commands that simplify common database tasks
You can check here if your environment is correctly configured.
In this way, you can use the Heroku CLI pg:pull command to pull remote data from a Heroku Postgres database to a local database on your machine.
For example:
$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi

Restoring a Postgresql 10 dump to Postgres 9.3 server

We are about to upgrade from pgsql 9.3 to 10.x. Part of the requirement is to be able to switch back to 9.3 in the case of some disaster (some massive but of course, unlikely incompatibility).
I tried pg_restoring a dump taken from one of our dev v. 10.x databases to a pgsql9.3 server, and got a lot of errors.
Is there any known "roll back path" from v 10.x to v 9.3?
Actually you can use Pg_Dump will give you a full sql file including all DDL and DML statements to recreate your database in another place (or restore).
You can do statement in cmd for backup use Pg_Dump
pg_dump -U username -d database > filename.sql
For more documentation and command use you can see here Pg_Dump
And you can restore use Psql command like this
psql -U username -d database -f filename.sql
You can use the pg_dump from pg9.3 to backup the pg10 database. Then use that backup and pg_restore from pg9.3 again to restore.

How to restore a postgres database

I did a pg_dumpall -c -f <BACKUP_FILE>.sql on a system, I'd like to do a restore on another system and have postgres create all roles/databases/tablespaces for me, is it possible?
This is clearly outlined in the PostgreSQL docs.
https://www.postgresql.org/docs/9.5/static/backup-dump.html
24.1.1. Restoring the Dump
Text files created by pg_dump are intended to be read in by the psql program. The general command form to restore a dump is
psql dbname < infile
where infile is the file output by the pg_dump command. The database dbname will not be created by this command, so you must create it yourself from template0 before executing psql (e.g., with createdb -T template0 dbname). psql supports options similar to pg_dump for specifying the database server to connect to and the user name to use. See the psql reference page for more information. Non-text file dumps are restored using the pg_restore utility.
The issue was that the most recent PE uses postgres 9.4, I could without errors restore to a postgres server running postgres 9.5. My bad, should have checked the rpm's on the PE puppetDB server first.

How to restore postgresql db on Heroku

I'm totally new to Heroku and Postgres and I'm trying to figure out how to restore and access the Postgres db in Heroku. I do have backup that taken fro pgAdmin III .backup file.
Any help with how to restore the Postgres db in Heroku would be greatly appreciated.
Restore to local database
Load the dump into your local database using the pg_restore tool. If objects exist in a local copy of the database already, you might run into inconsistencies when doing a pg_restore. Pg_restore does not drop all of the objects in the database when loading the dump.
This will usually generate some warnings, due to differences between your Heroku database and a local database, but they are generally safe to ignore.
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump

pg_restore: Its not restoring my db

What does it mean I'm trying to restore my postgresql db and here is what I'm getting but I do not see it restore tables/data/
C:\Program Files\PostgreSQL\9.4\bin\pg_restore.exe --host
123-97.compute-1.amazonaws.com --port 5432 --username "username"
--dbname "mydb" --no-password --section pre-data --section data --section post-data --schema public --verbose "C:\db\employee.backup"
pg_restore: connecting to database for restore pg_restore: implied
data-only restore
Process returned exit code 0.
I'm using Windows 8.1
I was getting this error while restoring schema backup with different name. When i restored the schema with same name it worked like a charm and then later I renamed it.
Alternative: do pg_restore from a carefully-restricted pg_dump dump and avoid --schema (and possibly even --table) options when using pg_restore.
i faced same issue when tried to restore psql 12 backup into psql 12 database but with newer ubuntu version (backup was on ubuntu 18 and restore on ubuntu 20 ,both are psql 12).
when i downgraded ubuntu from 20 to 18 it restored just normally, not sure why ubuntu version should make problem. my advice just make sure environment of backup and restore are exactly the same.
For backup purposes, rename your old schema eg. schema_old and create a new schema with the same name, and try to restore it again.