3.9. 이전 RHEL 버전에서 RHEL 10의 PostgreSQL 16으로 PostgreSQL 인스턴스를 마이그레이션
RHEL 9에서 PostgreSQL 버전을 이미 실행하고 데이터베이스 소프트웨어를 RHEL 10을 실행하는 호스트로 이동하려는 경우 데이터베이스를 마이그레이션할 수 있습니다.
다음 마이그레이션 방법을 사용할 수 있습니다.
- 백업 및 복원 업그레이드 - 이 방법은 더 많은 시간이 필요할 수 있지만 대부분의 시나리오에서 작동합니다.
-
pg_upgrade
유틸리티를 사용하여 빠른 업그레이드 - 이 방법은 더 빠르지만 PostgreSQL 13에서 16으로 마이그레이션하고 하드웨어 아키텍처가 동일하게 유지되는 경우에만 작동합니다.
PostgreSQL 마이그레이션 전에 소스 호스트의 /var/lib/pgsql/data/
디렉터리를 항상 백업합니다.
3.9.1. 백업 및 복원 방법을 사용하여 RHEL 10에서 PostgreSQL으로 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
백업 및 복원 방법을 사용하여 RHEL 8 또는 RHEL 9 버전의 PostgreSQL에서 RHEL 10의 PostgreSQL으로 데이터를 마이그레이션할 수 있습니다.
사전 요구 사항
- 기존 데이터베이스 서버는 RHEL 8 또는 RHEL 9에서 실행되며 RHEL 리포지토리에서 설치한 PostgreSQL 버전을 사용합니다.
-
두 호스트의 로케일 설정은 동일합니다. 이를 확인하려면 두 호스트 모두에서
echo $LANG
명령의 출력을 비교합니다.
프로세스
마이그레이션할 기존 PostgreSQL 인스턴스가 있는 호스트에서 다음을 수행합니다.
모든 데이터베이스를
/var/lib/pgsql/pgdump_file.sql
파일로 내보냅니다.su - postgres -c "pg_dumpall > /var/lib/pgsql/pgdump_file.sql"
# su - postgres -c "pg_dumpall > /var/lib/pgsql/pgdump_file.sql"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 내보낸 파일을 확인합니다.
su - postgres -c 'less "/var/lib/pgsql/pgdump_file.sql"'
# su - postgres -c 'less "/var/lib/pgsql/pgdump_file.sql"'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 단계에서 생성한 데이터베이스 덤프와 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/
# 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 Copied! Toggle word wrap Toggle overflow
RHEL 10 호스트에서 다음을 수행합니다.
postgresql-server
패키지를 설치합니다.dnf install postgresql-server
# dnf install postgresql-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/data/
디렉터리를 초기화합니다.postgresql-setup --initdb
# postgresql-setup --initdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 복사한 구성 파일을
/var/lib/pgsql/data/
디렉터리로 이동합니다.mv /tmp/pg_hba.conf \ /tmp/pg_ident.conf \ /tmp/postgresql.conf \ /var/lib/pgsql/data/
# mv /tmp/pg_hba.conf \ /tmp/pg_ident.conf \ /tmp/postgresql.conf \ /var/lib/pgsql/data/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/data/ 디렉터리에
있는 콘텐츠의 올바른 소유권을 확인하십시오.chown -R postgres:postgres /var/lib/pgsql/data/
# chown -R postgres:postgres /var/lib/pgsql/data/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/data/
:에 SELinux 컨텍스트를 복원합니다.restorecon -Rv /var/lib/pgsql/data/
# restorecon -Rv /var/lib/pgsql/data/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow postgresql
서비스를 활성화하고 시작합니다.systemctl enable --now postgresql.service
# systemctl enable --now postgresql.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow postgres
사용자로 데이터를 가져옵니다.su - postgres -c 'psql -f /tmp/pgdump_file.sql postgres'
# su - postgres -c 'psql -f /tmp/pgdump_file.sql postgres'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 데이터베이스를 확인하고 PostgreSQL 서버를 사용하는 애플리케이션이 예상대로 작동하는지 확인합니다.
3.9.2. pg_update를 사용하여 PostgreSQL 13을 이전 RHEL 버전에서 RHEL 10의 PostgreSQL 16으로 마이그레이션 링크 복사링크가 클립보드에 복사되었습니다!
이전 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
명령의 출력을 비교합니다.
프로세스
마이그레이션할 기존 PostgreSQL 인스턴스가 있는 호스트에서 다음을 수행합니다.
postgresql
서비스를 중지합니다.systemctl stop postgresql.service
# systemctl stop postgresql.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/
디렉터리로 변경하고data
하위 디렉터리를 백업합니다.cd /var/lib/pgsql/ tar -zcf ~/pgdata.bak.tar.gz data/
# cd /var/lib/pgsql/ # tar -zcf ~/pgdata.bak.tar.gz data/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~/pgdata.bak.tar.gz
아카이브를 RHEL 10 호스트에 복사합니다. 예를 들면 다음과 같습니다.scp ~/pgdata.bak.tar.gz <user>@<rhel_10_host>:/tmp/
# scp ~/pgdata.bak.tar.gz <user>@<rhel_10_host>:/tmp/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
RHEL 10 호스트에서 다음을 수행합니다.
필수 패키지를 설치합니다.
dnf install postgresql-server postgresql-upgrade
# dnf install postgresql-server postgresql-upgrade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow postgresql-upgrade
패키지는 마이그레이션 중에 필요한 PostgreSQL 13 서버를 제공합니다.-
타사 PostgreSQL 서버 모듈을 사용하는 경우
postgresql-devel
및postgresql-upgrade-devel
패키지에 대해 빌드하고 설치합니다. postgresql
서비스가 중지되었는지 확인합니다.systemctl stop postgresql.service
# systemctl stop postgresql.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/pgsql/
디렉터리로 변경하고 이전 호스트에서 백업된 데이터 디렉토리를 추출합니다.cd /var/lib/pgsql/ tar -zxf /tmp/pgdata.bak.tar.gz
# cd /var/lib/pgsql/ # tar -zxf /tmp/pgdata.bak.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항:
/tmp/pgdata.bak.tar.gz
아카이브를 제거하십시오.rm /tmp/pgdata.bak.tar.gz
# rm /tmp/pgdata.bak.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 업그레이드 프로세스를 수행합니다.
postgresql-setup --upgrade
# postgresql-setup --upgrade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 버전과 호환되는지 확인합니다.postgresql
서비스를 활성화하고 시작합니다.systemctl enable --now postgresql.service
# systemctl enable --now postgresql.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 데이터베이스를 정리하고 분석합니다.
su postgres -c 'vacuumdb --all --analyze-in-stages'
# su postgres -c 'vacuumdb --all --analyze-in-stages'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 데이터베이스를 확인하고 PostgreSQL 서버를 사용하는 애플리케이션이 예상대로 작동하는지 확인합니다.
선택 사항: 마이그레이션 전의 데이터베이스 및 구성 파일이 포함된
/var/lib/pgsql/data-old/
디렉터리를 제거합니다.rm -r /var/lib/pgsql/data-old/
# rm -r /var/lib/pgsql/data-old/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항:
postgresql-upgrade
패키지를 제거합니다.dnf remove postgresql-upgrade
# dnf remove postgresql-upgrade
Copy to Clipboard Copied! Toggle word wrap Toggle overflow