Posts

Showing posts with the label Database

Backup/Restore a Dockerized PostgreSQL Database

  Enter in PostgreSQL container and View database list: docker exec -it <container-id> psql -W -U db_user DB_name  (IF DB_USER_NAME and DB_NAME is not same) docker exec -it <container-id> psql -U postgres  (If DB_USER_NAME and DB_NMAE is same as postgres) To list database : \l To use database: \c <database-name> To list tables: \d Now Exit from PostgreSQL: \q Backup Your Database: a. Command to backup a local or remote PostgreSQL database: docker exec -i <PostgreSQL-container-id> pg_dump -U postgres -d <database-name> > prod_db_dump_`date +%d-%m-%Y”_”%H_%M_%S`.sql  (Ask for postgres password) or echo -n "password" | docker exec -i 323f6ab197b1 pg_dump -U dbuser -d db_name > /home/prod_db_dump_`date +%d-%m-%Y”_”%H_%M_%S`.sql  (Never Ask for Password) b. Command to backup multiple PostgreSQL databases : docker exec -i <PostgreSQL-container-id> pg_dumpall -U postgres -d <database-name> > prod_db_dump_`date ...

Script to take Last 7 Days containerized PostgreSQL Database Backup

  Create a directory script and create script.sh file : mkdir -p /home/script vi /home/script/script.sh C opy below script: #!/bin/sh #For taking backup # create dir db_backup: mkdir -p /home/db_backup/ DIR=/home/db_backup/ DATESTAMP=$(date +%d-%m-%y-%H-%M) # remove backups older than $DAYS_KEEP DAYS_KEEP=7 find ${DIR}* -mtime +$DAYS_KEEP -exec rm -f {} \; 2> /dev/null # Find Container ID where PostgreSQL is running with ancestor=<image name with tag> CONTAINER_ID=$(docker ps -q --filter ancestor=postgres:10.1) # DATABBASE name want to take backup DB=middleware_production_db # Destination Path FILENAME=${DIR}${DB}-${DATESTAMP}.sql #echo $FILENAME #echo $CONTAINER_ID docker exec -t ${CONTAINER_ID} pg_dump -U postgres -d ${DB} > ${FILENAME} SET CRON JOB FOR THIS SCRIPT Edit Cron job: crontab -e Copy the fol l owing command: 0 8 * * * bash -l /home/script/script.sh