docker postgresql 데이터 백업하기
SQL 덤프 시도
pg_dumpall로 백업한 뒤 psql 복구를 하려고 시도
docker-compose up -d
docker exec -it oj-postgres bash
su - postgres
psql —username onlinejudge —dbname onlinejudge
pg_dumpall -U postgres > /var/lib/postgresql/data/20211123.dump
이래서 백업된줄 알았는데 나중에 확인해보니까 파일 내용이 비었더라.. 하
하여간 파일 제대로 생긴 줄 알고 다음꺼 진행했었음
새로운 서버가 있어야되니까 postgresql 컨테이너를 새로운거 생성
docker run -p 5435:5435 —name [container 이름] -e POSTGRES_PASSWORD=[비밀번호] -d postgres
이래서 컨테이너는 postgres-test로 하나 만들었고
이제 postgres-test 실행해서 db 생성 후에 dump파일 복원시켜주면 되겠다고 생각
createdb testdb
psql testdb < dump파일 경로
하는데 파일이 없다 당연함 다른 컨테이너임
아니 그러면 dump파일을 새로운 복사해가지고? 하는건 좀 아니지 않나? 하고 생각하고 dump파일 열었는데 텅~ .. 비었음
하 .. 내일 다시 .. dump파일 제대로 만들어지는지부터 .. 5시간했는데 5분한 것 같아보이네 .. 눈물나네..
또 다른 방법 2
docker exec -t -u onlinejudge ddce6b9b77dd pg_dumpall -c > dump_postgresql.sql
psql -U {유저네임} -d {덤프파일 풀고 싶은 DB명} -a -f {덤프파일위치}
EX) psql -U onlinejudge -d onlinejudge -a -f C:\Users\Downloads\[파일명].sql
(참고 https://mozi.tistory.com/557)
volume 파일 백업
https://royleej9.tistory.com/entry/Docker-volume-BackupRestore
docker run --rm --volumes-from oj-backend -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /data && docker run --rm --volumes-from oj-redis -v $(pwd):/backup ubuntu tar cvf /backup/backup_redis.tar /data
sudo docker run --rm --volumes-from oj-backend -v $(pwd):/backup ubuntu bash -c "cd /data && tar xvf /backup/backup_backend.tar --strip 1"
sudo docker run --rm --volumes-from oj-redis -v $(pwd):/backup ubuntu bash -c "cd /data && tar xvf /backup/backup_redis.tar --strip 1"
data안에 postgres 안에 dump_postgresql.sql넣고
sudo docker exec -it oj-postgres bash
su - postgres
psql -U onlinejudge -d onlinejudge -a -f /var/lib/postgresql/data/dump_postgresql.sql
sudo chmod 755 [경로]
흠 그 명령어가 어디서 생긴거지
어떤 명령어?