2.0 KiB
Executable File
Create Back Up File docker exec -t phoenixDB pg_dump -U postgres -d phoenix > phoenix_backup.sql
PostgreSQL Database Backup in Docker
🛠️ Backup Commands for phoenixDB
1️⃣ Dump Database (Including DROP Statements)
docker exec -t phoenixDB pg_dump -U postgres -d phoenix -c > phoenix_backup.sql
📖 Explanation: • docker exec -t phoenixDB → Runs the pg_dump command inside the phoenixDB container. • pg_dump -U postgres -d phoenix -c: • -U postgres → Connect as user postgres. • -d phoenix → Dump the phoenix database. • -c → Includes DROP statements (cleans tables before restoring). • > phoenix_backup.sql → Saves the dump to your host machine.
🔹 When to Use? • Use this when you want to completely overwrite an existing database on restore. • Ensures that old tables are dropped before new ones are created.
Dump Database (Without DROP Statements)
docker exec -t phoenixDB pg_dump -U postgres -d phoenix > phoenix_backup.sql
📖 Explanation: • Similar to the previous command, but without -c. • This does NOT include DROP TABLE statements, meaning: • It will fail if restoring to a database that already has tables with the same names. • Use this when restoring to a new empty database.
🔹 When to Use? • If you’re backing up for archival purposes. • If you don’t want to drop existing data on restore.
🛠️ How to Restore the Backup?
Restore to a Database (bkp1)
cat phoenix_backup.sql | docker exec -i phoenixDB psql -U postgres -d bkp1
📖 Explanation: • cat phoenix_backup.sql → Reads the dump file. • | → Pipes it into the psql command inside the container. • docker exec -i phoenixDB psql -U postgres -d bkp2 • -i → Allows input redirection. • -U postgres → Connects as the postgres user. • -d bkp2 → Restores to the bkp2 database
🎯 Final Notes
• Use the -c flag when restoring into an existing database and you want to drop old tables first.
• Omit -c when restoring into a new, empty database.