pgloader로 MySQL/MariaDB → PostgreSQL 스냅샷 마이그레이션
타입 캐스팅/시퀀스 리셋/검증까지 포함한 pgloader 스냅샷 마이그레이션 체크리스트
pgloader는 MySQL/MariaDB를 Postgres로 옮길 때 “스냅샷 마이그레이션”을 빠르게 도와주는 도구입니다.
이 글은 운영에서 자주 필요한 1회성 스냅샷(데이터 덤프/검증) 관점에서 정리합니다.
관련 용어: pgloader, pg_dump, mysqldump
비밀번호는 절대 문서/레포에 남기지 마세요. 예시는 모두 placeholder 입니다.
1) 준비물
pgloaderpsqlmysql(또는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 매핑 문제
- 인덱스 생성 시간이 과도하게 길어짐(대규모 테이블)
같이 보면 좋은 문서: