Post

Backup & Restore a database

MySQL

Backup with mysqldump

👉 Backup the database from the local Docker container:

1
2
3
4
5
6
docker exec [mysql_container_id] sh -c 'exec mysqldump -u[user] -p[password] [database_name]' > backup-$(date +%y%m%d%H%M%S).sql

# example
# container name: 127c93385edc
# user: root, password: 123456, database name: db_test
docker exec 127c93385edc sh -c 'exec mysqldump -uroot -p123456 db_test' > /Users/lamngockhuong/develop/backup-$(date +%y%m%d%H%M%S).sql

👉 Backup the database from the remote MySQL datebase server:

1
2
3
4
docker exec [mysql_container_id] sh -c 'exec mysqldump -h[remote_host] --port=[port] -u[user] -p[password] [database_name]' > backup-$(date +%y%m%d%H%M%S).sql

# example
docker exec 127c93385edc sh -c 'exec mysqldump -h172.1.100.110 --port=3306 -uroot -p123456 db_test' > /Users/lamngockhuong/develop/backup-$(date +%y%m%d%H%M%S).sql

Restore with mysql

👉 Restore the database to the local Docker container:

1
2
3
4
docker exec -i [mysql_container_id] sh -c 'exec mysql -u[user] -p[password] [database_name]' < [file_name].sql

# example
docker exec -i 127c93385edc sh -c 'exec mysql -uroot -p123456 db_test' < /Users/lamngockhuong/develop/db_backup.sql

👉 Restore the database to the remote MySQL database server:

1
2
3
4
docker exec -i [mysql_container_id] sh -c 'exec mysql -h[remote_host] --port=[port] -u[user] -p[password] [database_name]' < [file_name].sql

# example
docker exec -i 127c93385edc sh -c 'exec mysql -h172.1.100.110 --port=3306 -uroot -p123456 db_test' < /Users/lamngockhuong/develop/db_backup.sql

PostgreSQL

Backup with pg_dump

👉 Backup the database from the local Docker container:

1
2
3
4
docker exec -t --user [user] [postgresql_container_id] pg_dump -U [user] [database_name] > dump_$(date +%y%m%d%H%M%S).sql

# example
docker exec -t --user postgres 127c93385edc pg_dumpall -U postgres db_test > dump_$(date +%y%m%d%H%M%S).sql

Restore with psql

👉 Restore the database to the local Docker container:

1
2
3
4
cat [file_name].sql | docker exec -i --user [user] 127c93385edc psql -U [user]

#example
cat dump.sql | docker exec -i --user postgres 127c93385edc psql -U postgres
This post is licensed under CC BY 4.0 by the author.