데이터 손실 없이 PostgreSQL 서버 버전 업그레이드

Bilal Shahid 2023년6월20일
  1. PostgreSQL 서버 버전 업그레이드의 중요성
  2. PostgreSQL 서버 버전 업데이트를 위한 다양한 접근 방식
데이터 손실 없이 PostgreSQL 서버 버전 업그레이드

일반적으로 많은 사용자는 프로세스에서 데이터 손실에 대한 두려움 때문에 PostgreSQL 서버를 최신 버전으로 업그레이드하지 않습니다. PostgreSQL 서버를 새 버전으로 업데이트하는 것은 약간 까다로우며 올바른 절차를 따르지 않으면 데이터가 완전히 손실될 수 있습니다.

따라서 PostgreSQL 서버를 최신 버전으로 업그레이드하기 전에 철저한 조사가 필수적입니다. 이 자습서에서는 데이터 손실 없이 PostgreSQL 서버 버전을 업그레이드하는 단계별 프로세스를 진행합니다.

PostgreSQL 서버 버전 업그레이드의 중요성

예! 아래 나열된 여러 가지 이유로 인해 PostgreSQL 서버를 최신 버전으로 업그레이드하는 것이 필수적입니다.

  • 이전 버전은 더 이상 다른 응용 프로그램과 호환되지 않을 수 있습니다.
  • 사이버 범죄자는 이전 버전의 패치되지 않은 위협으로 인해 시스템의 취약점을 찾아 PostgreSQL 서버를 공격할 수 있습니다.
  • 이전 버전의 버그는 최신 버전에서 패치됩니다.
  • 새 버전은 작업을 효율적으로 수행하는 데 도움이 되는 향상된 기능을 제공합니다.

이 문서에는 PostgreSQL 서버를 한 버전에서 다른 버전으로 성공적으로 업데이트하는 방법이 포함되어 있습니다.

지침은 모든 운영 체제에 적용됩니다.

PostgreSQL 서버 버전 업데이트를 위한 다양한 접근 방식

데이터 손실 없이 한 버전에서 다른 버전으로 PostgreSQL 서버를 업데이트하는 여러 가지 방법이 있습니다. 여기에서는 PostgreSQL 서버를 업그레이드하기 위해 그 중 세 가지를 시연합니다.

요구 사항에 따라 다음 솔루션 중 하나를 선택할 수 있습니다.

솔루션 1: 일반 솔루션

모든 운영 체제에서 작동하며 데이터를 조작하지 않고 PostgreSQL 서버를 원하는 버전으로 업데이트할 수 있습니다. 이것은 일반적인 솔루션이므로 정확한 BASH 명령은 언급되지 않습니다.

이러한 명령은 다양한 운영 체제를 검색하고 지침에 따라 구현할 수 있습니다.

  1. 특정 운영 체제에 대해 BASH 명령을 사용하여 실행 중인 PostgreSQL 서버 인스턴스를 중지합니다.
  2. 이동하려는 PostgreSQL 서버의 새 버전을 설치하고 시작합니다.
  3. 방금 설치한 PostgreSQL 서버의 새 버전에 연결할 수 있는지 확인합니다.
  4. 이전 버전의 PostgreSQL 서버인 postgresql.conf -> port의 포트 번호를 5432에서 5433으로 변경합니다.
  5. 새 포트 번호 5433의 PostgreSQL 서버 이전 버전을 시작합니다.
  6. 터미널을 열고 cd 명령을 사용하여 디렉터리를 새 버전의 bin 폴더로 변경합니다.
  7. pg_dumpall -p 5433 -U <사용자 이름> | psql -p 5432 -U <사용자 이름> 터미널에서.
  8. 이전 PostgreSQL 서버의 실행 중인 인스턴스를 중지합니다.

특정 운영 체제용으로 설계된 BASH 명령을 사용하여 전체 절차를 구현하면 PostgreSQL 서버를 이전 버전에서 새 버전으로 업그레이드하는 데 도움이 됩니다.

참고: 이 솔루션에서 발생할 수 있는 문제는 일부 Postgres 구성 파일(예: postgresql.conf 또는 pg_hba.conf)을 변경한 경우 이러한 변경 사항을 새로운 PostgreSQL 서버 설치. pg_upgradecluster 명령은 구성 파일을 새 클러스터로 복사하는 데 도움이 될 수 있습니다.

해결 방법 2: Homebrew에서 사용하는 가정 사용

이 솔루션은 Postgres를 설치하고 업그레이드하는 데 Homebrew 소프트웨어가 사용되었다는 가정에 초점을 맞춥니다. PostgreSQL 서버를 한 버전에서 다른 버전으로 업그레이드하려면 아래 단계를 따르십시오.

간단히 하기 위해 Postgres v9.6이 Postgres v10.1로 업데이트된다고 가정합니다.

  • 현재 PostgreSQL 서버의 실행 중인 인스턴스를 중지합니다.
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    
  • initdb 명령을 사용하여 새 10.1 데이터베이스를 설치하고 초기화합니다.
    initdb /usr/local/var/postgres10.1 -E utf8
    
  • pg_upgrade 명령을 실행합니다. 이 명령은 다른 확장명과 함께 사용되며 그 중 일부는 아래에 언급되어 있습니다.
    pg_upgrade -v \
    -d /usr/local/var/postgres \
    -D /usr/local/var/postgres10.1 \
    -b /usr/local/Cellar/postgresql/9.6/bin/ \
    -B /usr/local/Cellar/postgresql/10.1/bin/
    
    # The different extensions of the `pg_upgrade` command have the following significance:
    # The `-v` extension enables verbose internal logging.
    # The `-d` extension is used to specify the configuration directory of the old database.
    # The `-D` extension is used to specify the configuration directory of the new database.
    # The `-b` extension specifies the executable directory of the old database.
    # The `-B` extension specifies the executable directory of the new database.
    
  • 다음 명령을 사용하여 이전 데이터베이스에서 새 위치로 데이터를 이동합니다.
    cd /usr/local/var
    mv postgres postgres9.6
    mv postgres10.1 postgres
    
  • 네 단계를 모두 성공적으로 수행한 후 PostgreSQL 서버를 다시 시작합니다. 이를 위해 다음 명령을 사용할 수 있습니다.
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    

    Postgres를 다시 시작한 후 /usr/local/var/postgres/server.log에서 새 서버의 세부 정보를 확인하십시오. 새 서버가 적절하게 시작되었고 올바르게 실행 중인지 확인하십시오.

  • 다음 명령을 사용하여 rails pg gem을 다시 설치해야 합니다.
    gem uninstall pg
    gem install pg
    

두 번째 솔루션에 대한 개정

이제 Homebrew를 통해 사용자는 이전 launchctl loadlaunchctl unload 명령 대신 brew services start postgresqlbrew services stop postgresql 명령을 사용할 수 있습니다.

추출 서비스에 추가된 명령은 참조를 위해 아래에 강조 표시되어 있습니다.

brew services stop postgresql
brew upgrade postgresql
brew postgresql-upgrade-database
brew services start postgresql

해결 방법 3: Ubuntu 사용자의 경우

이 솔루션은 특히 Ubuntu 사용자를 위한 것입니다. 일반적인 절차는 이 기사의 앞부분에서 설명한 것과 동일합니다. 그러나이 솔루션에는 Ubuntu에서 사용되는 터미널 명령이 포함되어 있습니다.

단계는 다음과 같습니다.

  • 다음 명령을 사용하여 이전 버전의 Postgres를 중지합니다.
    sudo /etc/init.d/postgresql stop
    
  • 새 파일은 /etc/apt/sources.list.d/pgdg.list를 생성하고 다음 행을 추가하여 편집해야 합니다.
    deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main
    

    참고: Ubuntu 14.04에서는 utopic-pgdb 명령 대신 trusty-pgdb 명령을 사용할 수 있습니다.

  • 새로 생성된 파일에 행이 추가되면 아래 언급된 명령을 실행합니다.
    wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add-
    sudo apt-getupdate
    sudo apt-get install postgresql-10.1
    sudo pg_dropcluster --stop 10.1 main
    sudo /etc/init.d/postgresql start
    
  • PostgreSQL 서버를 업그레이드합니다.
    sudo pg_upgradecluster 9.6 main
    sudo pg_dropcluster 9.6 main
    

    업그레이드된 클러스터는 포트 5433에서 실행되어야 합니다. 따라서 sudo pg_lsclusters 명령을 사용하여 PostgreSQL 서버의 성공적인 업그레이드를 보장하기 위해 포트를 확인하십시오.

PostgreSQL 서버를 한 버전에서 다른 버전으로 업그레이드하려면 올바른 프로세스를 따라야 합니다. 그렇지 않으면 잘못된 업그레이드 프로세스로 인해 데이터가 손실될 수 있습니다. 그러므로 조심해야 합니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - PostgreSQL Update