[카테고리:] PostgreSQL

  • PostgreSQL DB Dump 방식으로 다운그레이드 가이드

    PostgreSQL DB Dump 방식으로 다운그레이드 가이드

    ✅ 1단계: PostgreSQL 17 클라이언트 설치

    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    sudo dnf -qy module disable postgresql
    sudo dnf install -y postgresql17

    ✅ 2단계: 백업 (pg_dump 사용) – 17버전

    export PGPASSWORD='password'
    
    /usr/pgsql-17/bin/pg_dump \
      -h 192.168.3.72 \
      -p 5432 \
      -U DB-User \
      -d NineMemos_Dev_BC_01 \
      -Fc \
      -v \
      -f ~/NineMemos_Dev_BC_01_pg17.dump

    ✅ -Fc 뜻

    옵션설명
    -Fpg_dump의 output format(출력 형식) 지정 옵션
    c**custom format (커스텀 형식)**의 약자입니다.

    ✅ 왜 Fc를 써?


    커스텀 형식은 다음과 같은 장점이 있어서 실무에서 가장 많이 사용되는 방식입니다.

    장점설명
    ✅ pg_restore로 복원 가능백업 중 일부 테이블만 복원하거나 병렬 복원(–jobs) 가능
    ✅ 압축 지원기본적으로 압축된 상태로 저장됨
    ✅ 유연한 복원특정 스키마, 테이블, 함수만 선택적으로 복원 가능

    ✅ 3단계: PostgreSQL 14 클라이언트 설치

    sudo dnf install -y postgresql14

    ✅ 4단계: 복원 (pg_restore 사용)

    백업을 17버전으로 했다면, 복원도 17버전으로 하는게 좋다(권장)

    export PGPASSWORD='password'
    
    /usr/pgsql-14/bin/pg_restore \
      -h [14.17-RDS-엔드포인트] \
      -p 5432 \
      -U DB-User \
      -d NineMemos_Dev_BC_01 \
      ~/NineMemos_Dev_BC_01_pg17.dump
  • pgloader를 이용한 이기종 DB 데이터 Migration

    pgloader를 이용한 이기종 DB 데이터 Migration

    환경

    MariaDB ➡️ pgloader ➡️ postgreSQL

    pgloader 서버의 Migration 세부파일 내용

    # migration_add.load
    
    LOAD DATABASE
         FROM mysql://
         INTO postgresql://
    
    WITH
        create tables,
        create indexes,
        reset sequences,
        batch rows = 1000,
        workers = 2,
        concurrency = 1,
        multiple readers per thread,
        prefetch rows = 5000,
        foreign keys
    
    EXCLUDING TABLE NAMES MATCHING # 제외 테이블
        ~/TB_/,
        ~/TB_/,
        ~/TB_/,
        ~/TB_/,
        ~/TB_/
    
    ===
    INCLUDING ONLY TABLE NAMES MATCHING # 포함 테이블
        ~/TB_/,
        ~/TB_/,
        ~/TB_/

    실행

    export SBCL_OPTIONS="--dynamic-space-size 16384" # 메모리 사이즈
    pgloader --logfile pgloader.log migration_add2.load