IT/Docker

Docker postgreSQL 자동 백업 및 수동 복원 방법

bepuri 2023. 12. 27. 09:48
728x90
  1. pgbackups 통해서 백업

    pgbackups:
     container_name: backup
     image: prodrigestivill/postgres-backup-local
     restart: always
     volumes:
       - ./backup:/backups
     links:
       - db:db
     depends_on:
       - db
     environment:
       - POSTGRES_EXTRA_OPTS=-Z9 --schema=public --blobs
       - SCHEDULE=@every 0h30m00s
       - BACKUP_KEEP_DAYS=7
       - BACKUP_KEEP_WEEKS=4
       - BACKUP_KEEP_MONTHS=6
       - HEALTHCHECK_PORT=81
     env_file:
       - backend/.env
  2. 완전 초기화된 상태로 db 컨테이너 새롭게 띄우기

윈도우 기준

  1. 컨테이너 내부로 sql gz 파일 복사

    docker compose cp backup/last/obible-latest.sql.gz $container_name:/
  2. zcat으로 psql로 입력 보내기

    $docker compose exec --tty --interactive db2 //bin//sh -c "zcat /obible-latest.sql.gz | psql --username=obibleuser --dbname=obible -W"

리눅스 기준

  • $NAME들은 실제 값으로 변경해서 입력
    docker exec --tty --interactive $CONTAINER /bin/sh -c "zcat $BACKUPFILE | psql --username=$USERNAME --dbname=$DBNAME -W"

postgres-backup-local 공식 github 링크

728x90