2026년 5월 17일 일요일

mssql에서 postgresql로 이관(마이그레이션)처리

postgresql은 강력한 mvcc를 지원하고 엔진과 관리툴이 철저히 분리되어 있다.

이 때문에 하드웨어에 의존적인 순수한 속도와 규율적인 제약을 탈피할 수 있고 

OS종속에서도 벗어날수 있으며 도커 컨테이너에도 자유롭게 올라가고 서버엔진과 

클라이언트를 분리해서 클라이언트쪽에서 관리작업 (백업,복구)을 진행할수 있는등

혁신적인 일이 벌어진다.  (어설픈 스크립트 백업이런거 아님) 또한 실시간 메모리 범위

변동이나 update나 insert시 RAM에서 우선처리하고 응답한후 스토리지에는 지연쓰기를 설정할 수 있는 레디스 db속도급 sync log off기능등 활용범위가 

다양하고 자료형도 그래프관련 자료나 기하학관련 AI에서 쓰이는 자료형이나 

json이나 xml처리등을할 수 있으며 지구상에서 sql표준을 가장 잘 구현하고 표준에 부합하는 

데이터베이스다. 이런 혁신적인 구조 때문에 차세대 db엔진으로 많은 사랑을 받고 있다.

그래서 운영하는 시스템도 mssql에서 postgresql로 마이그레이션을 진행하였다.


먼저 이관 순서는 다음과 같이 진행하여야 한다.  (한PC에서 두커넥션다 존재)


1. 기존 mssql자료에 접근할수 있는 로컬환경구축 (로그인과 알멩이가 같이 있어야함)

2. 새로운 postgresql에 접근할수 있는 로컬환경구축 (로그인과 껍데기 db준비)

3. pgloader로  양쪽을 전부 접속해서 마이그레이션하는 명령실행

pgloader는 리눅스 기반이라 윈도우에서는 docker에 명령줄처리를 사용하는

방식을 취해야한다. 이미지는 dimitri/pgloader:latest 를 이용하며 

명령줄은 다음과 같다.


docker run --rm -it dimitri/pgloader:latest pgloader \

  mssql://sa:비밀번호@host.docker.internal:포트번호/db명 \

  postgresql://postgres:비밀번호@host.docker.internal:포트번호/db명



4. postgresql에 public 스키마로 백업된 데이터를 확인하고 

내 입맛에 맞게 테이블을 alter작업 (이부분이 시간이 가장 많이 걸림.. 복원된 

테이블을 변경하고 인덱스도 다시 잡아줌 등등 sql파일에서 작업해서 처리할것)


5. 입맛대로 변경된 postgresql에서 db를 백업한다. (pg_dump 처리로 파일로 export)


6. 운영할 postgresql이 설치된 서버 pc에서 5번 파일로 restore 작업을 진행한다..




[마이그레이션 유의사항]



- pgload의 도커 이미지 설치


# Docker Hub에서 최신 이미지 풀

docker pull dimitri/pgloader:latest

# 버전 확인용 테스트

docker run --rm -it dimitri/pgloader:latest pgloader --version



댓글 없음:

댓글 쓰기