데이터 손실 없이 PostgreSQL 서버 버전 업그레이드
일반적으로 많은 사용자는 프로세스에서 데이터 손실에 대한 두려움 때문에 PostgreSQL 서버를 최신 버전으로 업그레이드하지 않습니다. PostgreSQL 서버를 새 버전으로 업데이트하는 것은 약간 까다로우며 올바른 절차를 따르지 않으면 데이터가 완전히 손실될 수 있습니다.
따라서 PostgreSQL 서버를 최신 버전으로 업그레이드하기 전에 철저한 조사가 필수적입니다. 이 자습서에서는 데이터 손실 없이 PostgreSQL 서버 버전을 업그레이드하는 단계별 프로세스를 진행합니다.
PostgreSQL 서버 버전 업그레이드의 중요성
예! 아래 나열된 여러 가지 이유로 인해 PostgreSQL 서버를 최신 버전으로 업그레이드하는 것이 필수적입니다.
- 이전 버전은 더 이상 다른 응용 프로그램과 호환되지 않을 수 있습니다.
- 사이버 범죄자는 이전 버전의 패치되지 않은 위협으로 인해 시스템의 취약점을 찾아 PostgreSQL 서버를 공격할 수 있습니다.
- 이전 버전의 버그는 최신 버전에서 패치됩니다.
- 새 버전은 작업을 효율적으로 수행하는 데 도움이 되는 향상된 기능을 제공합니다.
이 문서에는 PostgreSQL 서버를 한 버전에서 다른 버전으로 성공적으로 업데이트하는 방법이 포함되어 있습니다.
지침은 모든 운영 체제에 적용됩니다.
PostgreSQL 서버 버전 업데이트를 위한 다양한 접근 방식
데이터 손실 없이 한 버전에서 다른 버전으로 PostgreSQL 서버를 업데이트하는 여러 가지 방법이 있습니다. 여기에서는 PostgreSQL 서버를 업그레이드하기 위해 그 중 세 가지를 시연합니다.
요구 사항에 따라 다음 솔루션 중 하나를 선택할 수 있습니다.
솔루션 1: 일반 솔루션
모든 운영 체제에서 작동하며 데이터를 조작하지 않고 PostgreSQL 서버를 원하는 버전으로 업데이트할 수 있습니다. 이것은 일반적인 솔루션이므로 정확한 BASH 명령은 언급되지 않습니다.
이러한 명령은 다양한 운영 체제를 검색하고 지침에 따라 구현할 수 있습니다.
- 특정 운영 체제에 대해
BASH
명령을 사용하여 실행 중인 PostgreSQL 서버 인스턴스를 중지합니다. - 이동하려는 PostgreSQL 서버의 새 버전을 설치하고 시작합니다.
- 방금 설치한 PostgreSQL 서버의 새 버전에 연결할 수 있는지 확인합니다.
- 이전 버전의 PostgreSQL 서버인
postgresql.conf
->port
의 포트 번호를5432
에서5433
으로 변경합니다. - 새 포트 번호
5433
의 PostgreSQL 서버 이전 버전을 시작합니다. - 터미널을 열고
cd
명령을 사용하여 디렉터리를 새 버전의bin
폴더로 변경합니다. pg_dumpall -p 5433 -U <사용자 이름> | psql -p 5432 -U <사용자 이름>
터미널에서.- 이전 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 load
및 launchctl unload
명령 대신 brew services start postgresql
및 brew 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 서버를 한 버전에서 다른 버전으로 업그레이드하려면 올바른 프로세스를 따라야 합니다. 그렇지 않으면 잘못된 업그레이드 프로세스로 인해 데이터가 손실될 수 있습니다. 그러므로 조심해야 합니다.
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