3.9. 이전 RHEL 버전에서 RHEL 10의 PostgreSQL 16으로 PostgreSQL 인스턴스를 마이그레이션


RHEL 9에서 PostgreSQL 버전을 이미 실행하고 데이터베이스 소프트웨어를 RHEL 10을 실행하는 호스트로 이동하려는 경우 데이터베이스를 마이그레이션할 수 있습니다.

다음 마이그레이션 방법을 사용할 수 있습니다.

중요

PostgreSQL 마이그레이션 전에 소스 호스트의 /var/lib/pgsql/data/ 디렉터리를 항상 백업합니다.

백업 및 복원 방법을 사용하여 RHEL 8 또는 RHEL 9 버전의 PostgreSQL에서 RHEL 10의 PostgreSQL으로 데이터를 마이그레이션할 수 있습니다.

사전 요구 사항

  • 기존 데이터베이스 서버는 RHEL 8 또는 RHEL 9에서 실행되며 RHEL 리포지토리에서 설치한 PostgreSQL 버전을 사용합니다.
  • 두 호스트의 로케일 설정은 동일합니다. 이를 확인하려면 두 호스트 모두에서 echo $LANG 명령의 출력을 비교합니다.

프로세스

  1. 마이그레이션할 기존 PostgreSQL 인스턴스가 있는 호스트에서 다음을 수행합니다.

    1. 모든 데이터베이스를 /var/lib/pgsql/pgdump_file.sql 파일로 내보냅니다.

      # su - postgres -c "pg_dumpall > /var/lib/pgsql/pgdump_file.sql"
      Copy to Clipboard Toggle word wrap
    2. 내보낸 파일을 확인합니다.

      # su - postgres -c 'less "/var/lib/pgsql/pgdump_file.sql"'
      Copy to Clipboard Toggle word wrap
    3. 이전 단계에서 생성한 데이터베이스 덤프와 PostgreSQL 구성 파일을 RHEL 10 호스트에 복사합니다. 예를 들면 다음과 같습니다.

      # scp /var/lib/pgsql/pgdump_file.sql \
             /var/lib/pgsql/data/pg_hba.conf \
             /var/lib/pgsql/data/pg_ident.conf \
             /var/lib/pgsql/data/postgresql.conf \
             <user>@<rhel_10_host>:/tmp/
      Copy to Clipboard Toggle word wrap
  2. RHEL 10 호스트에서 다음을 수행합니다.

    1. postgresql-server 패키지를 설치합니다.

      # dnf install postgresql-server
      Copy to Clipboard Toggle word wrap
    2. /var/lib/pgsql/data/ 디렉터리를 초기화합니다.

      # postgresql-setup --initdb
      Copy to Clipboard Toggle word wrap
    3. 복사한 구성 파일을 /var/lib/pgsql/data/ 디렉터리로 이동합니다.

      # mv /tmp/pg_hba.conf \
           /tmp/pg_ident.conf \
           /tmp/postgresql.conf \
           /var/lib/pgsql/data/
      Copy to Clipboard Toggle word wrap
    4. /var/lib/pgsql/data/ 디렉터리에 있는 콘텐츠의 올바른 소유권을 확인하십시오.

      # chown -R postgres:postgres /var/lib/pgsql/data/
      Copy to Clipboard Toggle word wrap
    5. /var/lib/pgsql/data/:에 SELinux 컨텍스트를 복원합니다.

      # restorecon -Rv /var/lib/pgsql/data/
      Copy to Clipboard Toggle word wrap
    6. postgresql 서비스를 활성화하고 시작합니다.

      # systemctl enable --now postgresql.service
      Copy to Clipboard Toggle word wrap
    7. postgres 사용자로 데이터를 가져옵니다.

      # su - postgres -c 'psql -f /tmp/pgdump_file.sql postgres'
      Copy to Clipboard Toggle word wrap
    8. 데이터베이스를 확인하고 PostgreSQL 서버를 사용하는 애플리케이션이 예상대로 작동하는지 확인합니다.

이전 RHEL 버전에서 RHEL 10의 PostgreSQL 16으로 PostgreSQL 13 인스턴스를 마이그레이션하려면 빠른 업그레이드 방법을 사용할 수 있습니다. 이 방법을 사용하면 /var/lib/pgsql/data/ 디렉터리의 콘텐츠를 RHEL 10 호스트에 복사하고 pg_update 유틸리티는 데이터베이스를 변환합니다.

중요

이 방법은 기존 PostgreSQL 인스턴스가 버전 13이고 하드웨어 아키텍처가 소스 및 대상 호스트에서 동일한 경우에만 작동합니다. 다른 경우에는 backup 및 restore 방법을 사용하십시오.

사전 요구 사항

  • 기존 데이터베이스 서버는 PostgreSQL 13을 사용합니다.
  • 현재 및 향후 서버의 하드웨어 아키텍처는 동일합니다.
  • RHEL 10 호스트의 /var/lib/pgsql/ 디렉터리를 보유하는 디스크에 사용 가능한 공간이 충분히 있습니다.

    예를 들어, PostgreSQL 서버의 디렉터리 크기가 10GiB인 경우 마이그레이션 중에 RHEL 10 호스트에 최소 20GiB의 여유 디스크 공간이 필요합니다.

  • 두 호스트의 로케일 설정은 동일합니다. 이를 확인하려면 두 호스트 모두에서 echo $LANG 명령의 출력을 비교합니다.

프로세스

  1. 마이그레이션할 기존 PostgreSQL 인스턴스가 있는 호스트에서 다음을 수행합니다.

    1. postgresql 서비스를 중지합니다.

      # systemctl stop postgresql.service
      Copy to Clipboard Toggle word wrap
    2. /var/lib/pgsql/ 디렉터리로 변경하고 data 하위 디렉터리를 백업합니다.

      # cd /var/lib/pgsql/
      # tar -zcf ~/pgdata.bak.tar.gz data/
      Copy to Clipboard Toggle word wrap
    3. ~/pgdata.bak.tar.gz 아카이브를 RHEL 10 호스트에 복사합니다. 예를 들면 다음과 같습니다.

      # scp ~/pgdata.bak.tar.gz <user>@<rhel_10_host>:/tmp/
      Copy to Clipboard Toggle word wrap
  2. RHEL 10 호스트에서 다음을 수행합니다.

    1. 필수 패키지를 설치합니다.

      # dnf install postgresql-server postgresql-upgrade
      Copy to Clipboard Toggle word wrap

      postgresql-upgrade 패키지는 마이그레이션 중에 필요한 PostgreSQL 13 서버를 제공합니다.

    2. 타사 PostgreSQL 서버 모듈을 사용하는 경우 postgresql-develpostgresql-upgrade-devel 패키지에 대해 빌드하고 설치합니다.
    3. postgresql 서비스가 중지되었는지 확인합니다.

      # systemctl stop postgresql.service
      Copy to Clipboard Toggle word wrap
    4. /var/lib/pgsql/ 디렉터리로 변경하고 이전 호스트에서 백업된 데이터 디렉토리를 추출합니다.

      # cd /var/lib/pgsql/
      # tar -zxf /tmp/pgdata.bak.tar.gz
      Copy to Clipboard Toggle word wrap
    5. 선택 사항: /tmp/pgdata.bak.tar.gz 아카이브를 제거하십시오.

      # rm /tmp/pgdata.bak.tar.gz
      Copy to Clipboard Toggle word wrap
    6. 업그레이드 프로세스를 수행합니다.

      # postgresql-setup --upgrade
      Copy to Clipboard Toggle word wrap

      postgresql-setup 쉘 스크립트는 /var/lib/pgsql/data/ 디렉터리의 이름을 /var/lib/pgsql/data-old/ 로 변경하고 pg_upgrade 유틸리티를 사용하여 데이터베이스를 다시 생성한 /var/lib/pgsql/data/ 디렉터리로 마이그레이션합니다.

      중요

      pg_upgrade 유틸리티는 구성 파일이 아닌 데이터베이스만 마이그레이션합니다. 마이그레이션 후 /var/lib/pgsql/data/ 에는 기본 .conf 파일만 포함됩니다. 이전에 사용자 지정 구성 파일이 있는 경우 /var/lib/pgsql/data-old/ 디렉터리에서 복사하여 새 PostgreSQL 버전과 호환되는지 확인합니다.

    7. postgresql 서비스를 활성화하고 시작합니다.

      # systemctl enable --now postgresql.service
      Copy to Clipboard Toggle word wrap
    8. 모든 데이터베이스를 정리하고 분석합니다.

      # su postgres -c 'vacuumdb --all --analyze-in-stages'
      Copy to Clipboard Toggle word wrap
    9. 데이터베이스를 확인하고 PostgreSQL 서버를 사용하는 애플리케이션이 예상대로 작동하는지 확인합니다.
    10. 선택 사항: 마이그레이션 전의 데이터베이스 및 구성 파일이 포함된 /var/lib/pgsql/data-old/ 디렉터리를 제거합니다.

      # rm -r /var/lib/pgsql/data-old/
      Copy to Clipboard Toggle word wrap
    11. 선택 사항: postgresql-upgrade 패키지를 제거합니다.

      # dnf remove postgresql-upgrade
      Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat