@senspond
>
postgreSQL 데이터베이스 백업 및 다른 환경으로 이전하여 복원하기
rgbitcode 블로그는 맥OS 환경에서 postgreSQL 15버전으로 개발이 됬습니다.
처음에는 NextJS 13버전과 postgreSQL 14버전으로 만들다가 버전업을 해서 NextJS 14와 postgreSQL 15버전이 됬을거에요.
그리고 오랫동안 이 사이트를 유지보수를 하지 않았는데요.
그동안 AI 대학원 생활을 하고 논문을 작성하고… 정신이 없었던 이유도 있었고요.
또 웹 개발보다는 AI 모델을 개발하는 것에 더욱 관심을 가지게 되면서 Nvidia 그래픽카드를 통한 CUDA 가속이 가능한 윈도우 작업환경을 주로 쓰게 됨에 따라 맥 OS를 잘 사용하지 않게 되면서 거리가 멀어진 것도 있었습니다.
돌이켜보니 6개월 넘게 방치를 한것 같습니다. 현재 Redis를 통해 방문 트래픽을 수집하고, Spring 배치 프로그램으로 게시글 당 조회수와 일일 조회수를 집계해서 DB에 기록하고 있는데요.
자세하게 본적은 없지만, 생각보다 찾아와주시는 분들이 많이 계시는것 같습니다.
게시물에 달린 댓글도 확인을 거의 못했는데, 확인해보니 댓글이 달린 게시물들도 있었는데요.
정말 너무 답글이 늦은것 같은데, 확인한 부분들 댓글 달아드렸습니다.
현재는 리눅스를 메인 PC로 사용하고 있고, 더 이상 맥OS에서는 맥 기기 테스트 하는 용도외에는 맥에서는 개발은 하지 않을 예정이라
맥OS에서 사용했던 개발 DB를 그대로 옮겨와야 하는 상황인데요. 작업을 하면서 정리해봤습니다.
pg_dump -U [계정명] --no-owner -Fc -f backup.dump [데이터베이스명]
먼저 기존에 쓰던 postgreSQL 버전은 동일하게 맞추는게 좋습니다.
특히 postgreSQL 14버전과 15버전은 호환되지 않는 일부 쿼리들이 있더라고요.
그리고 소유자와 권한을 백업 DB와 복원할 DB에 동일하게 맞추는게 좋은데, 이게 안맞으면 복원할때 오류가 나버립니다.
그래서 --no-owner 옵션을 줘서 소유권(owner) 정보를 제외했습니다.
즉, 이전 DB의 원래 소유자(계정)을 무시하고 이전하는 postgreSQL의 사용자가 소유되도록 해줍니다.
-Fc 는 압축된 포맷으로 백업이 되고요.
pg_restore -U [계정명] -d [데이터베이스명] -h localhost -p 5432 -Fc backup.dump
백업 할때는 -Fc 로 했기 때문에 복원도 -Fc 로 해줍니다.
백업(pg_dump
) 시 --no-owner
를 사용했다면, 복원(pg_restore
) 시에는 --no-owner
옵션이 필요 없습니다.
다만, 백업 시 --no-owner
를 사용하지 않았다면, 복원 시 기존 소유자(owner) 정보를 유지하기 때문에, 새로운 환경에서 소유자 오류가 난다면 복원시 --no-owner
를 추가해주면 됩니다.
이렇게 맥OS의 로컬환경에서 작업하던 DB스키마와 데이터들을 모두 다른 pc의 작업환경으로 이전했습니다.
그외 MariaDB 도 그대로 가져와야하는데, 그건 나중에 하면서 작성해봐야겠습니다.
아무튼 postgreSQL은 이런식으로 운영서버에 있는 DB도 백업을 해서 가져올 수 있을 것 같습니다.
다만 운영서버는 docker로 postgreSQL을 띄어놨는데, 이런 경우 아래처럼 하면 될것 같네요.
services:
postgres:
image: postgres:15
container_name: my_postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: mydatabase
ports:
- "5432:5432"
volumes:
- ./backup:/backup # 호스트의 ./backup 디렉터리를 컨테이너의 /backup에 마운트
docker exec -t my_postgres pg_dump -U [계정명] --no-owner -Fc -f /backup/backup.dump [데이터베이스명]
지금 시점에서 돌이켜보면, 이 사이트를 처음 개발할 때 NextJS를 공부해가면서 개발을 했었고,
지금처럼 AI를 쓰지 않고 모든 것을 직접 코딩으로 만들다보니,
당시 부족한 실력에 지금이라면 절때 이렇게 짜지 않을것 같은 소스코드들이 있는것 같습니다.
요즘은 AI를 통해서 "아~ 이렇게 짜면 좀더 좋겠구나" 하며 배울때가 생기네요.
아무튼 기존에 만든 이 사이트 리팩토링도 좀 해보고, 다시 웹개발로 뭔가를 만들어 볼 생각입니다.
안녕하세요. Red, Green, Blue 가 만나 새로운 세상을 만들어 나가겠다는 이상을 가진 개발자의 개인공간입니다.
현재글에서 작성자가 발행한 같은 카테고리내 이전, 다음 글들을 보여줍니다
@senspond
>