Postgresql 데이터를 Dokcer DB로 Migrate하기

horiz.d·2023년 5월 18일
0

PJ: Aight

목록 보기
6/17

Postgresql을 인식하는 기존 windows powershell에서 pg_dump

백업 결과 확인

Docker db 컨테이너 경로로 전송

Migrate to Docker DB

  1. pg_restore를 사용했을 때 발생한 에러들
    1-1. corrupt tar header: tar는 linux 기반 os에서 사용하는 압축파일 확장자로, 윈도우 기반으로 dump를 압축파일로 만들 때 발생하는 에러로 확인됨

    1-2. did not find magic string 에러

  2. psql을 통한 dump migrate 성공
    - 비록 현재 계정설정 불일치로 migrate간 에러가 발생했으나, 예상된 에러로 기타 테이블 및 데이터 이전은 성공적으로 수행되었음. 이제 docker-compose와 django.settings.py에서 DB메타정보(계정관련)를 수정한 이후 다시 MIGRATE 수행해볼 예정

  1. docker-compose DB 및 django settings.py DB 계정 정보 수정 및 DB 재구축 이후 컨테이너 DB에 Migrate 재시도 : 성공

에러 메시지가 많이 발생했지만, 이는 docker-compose up 이후, django 컨테이너에 대해 docker exec it ${container-id} python manage.py migrate를 수행하여 django에 설정된 stateless한 정보(스키마 정의 등)가 이미 반영되었기 때문에, 이와 dump파일의 stateless한 정보간의 중복으로 인해 발생한 warnings같은 거라고 볼 수 있다. 이외에 stateful한 정보(즉, 레코드)가 모두 잘 migrate되어 아래처럼 도커(nginx, gunicorn)로 구동한 django앱의 API를 통해 저장된 데이터를 정상적으로 조회할 수 있었다.


번외 기록

1. In docker, Django migrate

docker exec -it 8974070c1711 python manage.py migrate

2. 기타 Docker관련 자주 쓴 커맨드

docker ps

docker-compose up -d (d플래그는 백그라운드 실행)
docker-compose up --build
docker-compose down -v (다운하며 관련 volume 제거 플래그)
docker exec -it ${container-id} ${sub command}

이하
# docker container 환경으로 파일 전송
docker cp ${path-from} ${container-id}:${path-to}

# docker 컨테이너 배시 접속
docker exec -it ${container-id} bash

profile
가용한 시간은 한정적이고, 배울건 넘쳐난다.

0개의 댓글