pgloader로 MySQL/MariaDB → PostgreSQL 스냅샷 마이그레이션

타입 캐스팅/시퀀스 리셋/검증까지 포함한 pgloader 스냅샷 마이그레이션 체크리스트

분야: 데이터베이스 시리즈: DB 기본기 postgresmysqlmariadbmigrationpgloader

pgloader는 MySQL/MariaDB를 Postgres로 옮길 때 “스냅샷 마이그레이션”을 빠르게 도와주는 도구입니다.

이 글은 운영에서 자주 필요한 1회성 스냅샷(데이터 덤프/검증) 관점에서 정리합니다.

관련 용어: pgloader, pg_dump, mysqldump

비밀번호는 절대 문서/레포에 남기지 마세요. 예시는 모두 placeholder 입니다.

1) 준비물

  • pgloader
  • psql
  • mysql(또는 mariadb 클라이언트)

2) Postgres DB/ROLE 준비(개념)

운영 환경에 맞게 role/db를 준비합니다.

  • role 생성
  • db 생성
  • 권한 부여

3) pgloader loadfile 예시

LOAD DATABASE
     FROM mysql://MYSQL_USER:MYSQL_PASSWORD@MYSQL_HOST/MYSQL_DB
     INTO postgresql://PG_USER:PG_PASSWORD@PG_HOST/PG_DB

WITH
     include drop,
     create tables,
     create indexes,
     reset sequences,
     foreign keys

CAST
     type datetime to timestamptz using zero-dates-to-null,
     type date to date using zero-dates-to-null,
     type tinyint when (= precision 1) to boolean using tinyint-to-boolean;

4) 실행

pgloader ./my.load

5) 검증(최소)

  • 핵심 테이블 row count 비교
  • 샘플 레코드 몇 개를 직접 조회
  • 시퀀스/PK가 정상 증가하는지 확인

6) 자주 발생하는 함정

  • 0000-00-00 같은 “제로 데이트” 처리
  • timezone이 섞여 timestamptz 변환이 꼬임
  • enum/tinyint 매핑 문제
  • 인덱스 생성 시간이 과도하게 길어짐(대규모 테이블)

같이 보면 좋은 문서:

관련 가이드