Bobcares

Docker postgres pg_restore | Tutorial

by | Jul 19, 2022

Docker postgres pg_restore is now so simple with these steps.

Bobcares, as part of our Docker Hosting Support Service, responds to all inquiries, large or small.

Let’s take a closer look at restoring the data dump using pg_restore.

Docker postgres pg_restore

For Restoring Data Dump Using pg_restore, our Support team provides these simple steps:

1. Firstly, determine the name and id of the Docker container hosting the Postgres instance

Start Docker and enter the docker command:

$ docker psCopy Code

The command results in:

CONTAINER ID ... NAMESCopy Code
abc985ddffcf ... my_postgres_1Copy Code
2. Then locate the volumes that are available in the Docker container

Now run the command:

docker inspect -f '{{ json .Mounts }}'  | python -m json.toolCopy Code

Then, examine the volume paths under the Destination key. The result will be:

$ docker inspect -f '{{ json .Mounts }}' abc985ddffcf | python -m json.toolCopy Code
[Copy Code
    
{Copy Code
        "Type": "volume",Copy Code
        
"Name": "my_postgres_backup_local",Copy Code
        "Source": "/var/lib/docker/volumes/my_postgres_backup_local/_data",Copy Code
        "Destination": "/backups",Copy Code
        "Driver": "local",Copy Code
        "Mode": "rw",Copy Code
        
"RW": true,Copy Code
        "Propagation": ""Copy Code
    
},Copy Code
    {Copy Code
        
"Type": "volume",Copy Code
        "Name": "my_postgres_data_local",Copy Code
        "Source": "/var/lib/docker/volumes/my_postgres_data_local/_data",Copy Code
        "Destination": "/var/lib/postgresql/data",Copy Code
        "Driver": "local",Copy Code
        "Mode": "rw",Copy Code
        "RW": true,Copy Code
        "Propagation": ""Copy Code
    }Copy Code
]Copy Code

Here

/backupsCopy Code
and
/var/lib/postgresql/dataCopy Code
is the volume path.

3. Now copy dump into one of the volumes

To continue Restoring Data Dump Using pg_restore, pick a volume and copy the dump in. Then run the command:

docker cp </path/to/dump/in/host> :Copy Code

Here we select volume /backups. It gives the following result:

$ docker cp my_data.dump my_postgres_1:/backupsCopy Code
4. Finally, request the database owner to run the pg_restore command

Using the docker exec command, run the pg restore command. The generic forms of both commands are here:

For pg_restore:

pg_restore -U  -d  Copy Code

For docker exec:

docker exec  Copy Code

This is optional if we know the DB owner. We can also find the owner by retrieving the list of databases and their owners. So we have to run the following command to continue with Restoring Data Dump Using pg_restore

psql -U postgres -lcommandCopy Code
. within the
docker execCopy Code
command.

docker exec my_postgres_1 psql -U postgres -lCopy Code

Running this command gives the result:

List of databasesCopy Code
Name | OwnerCopy Code
--------------------+----------Copy Code
some_database | postgresCopy Code

Now we can run the command

pg_restoreCopy Code
:

docker exec my_postgres_1 pg_restore -U postgres -d some_database /backups/my_data.dumpCopy Code

Now we are all set to restore Postgres data dump in a Docker container using pg_restore.

[Looking for an answer to another question? We’re only a click away.]

Conclusion

To sum up, our Support team provides the details on Restoring Data Dump Using pg_restore which includes mainly 4 steps.

    1. Primarily, we determine the name and id of the Docker container hosting the Postgres instance.
    2. Then we locate the volumes that are available in the Docker container.
    3. After that copy dump into one of the volumes.
    4. At last, request the database owner to run the pg_restore command.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Speed issues driving customers away?
We’ve got your back!