최근에 dnf
. 달리려고 했더니 pg_upgrade
성공했어
Cannot upgrade because the database in /var/lib/pgsql/data is of
version 11 but it should be 12
따라서 업그레이드는 하나의 버전에만 적용됩니다.
두 개 이상의 버전을 업그레이드하는 방법은 무엇입니까?
답변1
아이디어는 다음과 같습니다.
- PGDG 저장소에서 이전 PostgreSQL 서버를 설치합니다.
- 모든 데이터를 파일로 덤프하는 데 사용합니다.
- 현재 서버를 반환합니다(Fedora 저장소에서).
- 덤프 파일에서 데이터를 가져옵니다.
이 작업은 모두 루트로 수행됩니다.
PostgreSQL 저장소를 설치합니다.
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-34-x86_64/pgdg-fedora-repo-latest.noarch.rpm
Fedora의 PostgreSQL(PGDG와 충돌)을 제거하고 PGDG 저장소에서 이전 버전을 설치합니다.
dnf remove postgresql postgresql-server
dnf install postgresql11 postgresql11-server
이전 데이터를 현재 설치 디렉터리에 복사합니다.
rsync -av /var/lib/pgsql/data/ /var/lib/pgsql/11/data/
이전 서버를 실행합니다.
systemctl start postgresql-11.service
모든 데이터를 파일로 덤프합니다.
su - postgres -c "pg_dumpall -p 5432 > /tmp/dump_file.sql"
위 작업을 실행 취소합니다(서버 중지, PGDG 패키지 종료, Fedora 패키지 다시 설치).
systemctl stop postgresql-11.service
dnf remove postgresql11 postgresql11-server postgresql11-libs postgresql13 postgresql13-server postgresql13-libs
dnf install postgresql postgresql-server pg_top postgresql-contrib
아마 필요하지 않을 것입니다 pg_top
및/또는 postgresql-contrib
. 반품,
/var/lib/pgsql/data/pg_hba.conf
업데이트가 필요한 경우(아마도 trust
로컬 연결을 위한 방법을 설정합니까?)
이전 데이터 디렉터리를 해제하고 현재 PostgreSQL 디렉터리를 다시 초기화합니다.
mv /var/lib/pgsql/data/ /var/lib/pgsql/data-old
mkdir /var/lib/pgsql/data
chown -R postgres:postgres /var/lib/pgsql/data/
postgresql-setup initdb
현재 서버(Fedora 저장소에 있는 서버)를 활성화하고 시작합니다.
systemctl enable postgresql
systemctl start postgresql
데이터 가져오기:
su - postgres -c "pgsql -p 5432 < /tmp/dump_file.sql"
psql
EDIT 2023-12-11: 새 버전의 Fedora에는 대신 명령이 있는 것 같습니다 ..pgsql
결과에 만족하면 이 과정에서 생성된 데이터를 삭제할 수 있습니다.
/var/lib/pgsql/11
- PGDG에서 설치된 이전 서버의 데이터 디렉터리입니다./var/lib/pgsql/data-old
- 이 모든 혼란 이전의 원본 데이터.
일반적으로 PGDG 저장소를 사용하지 않는 경우 이를 삭제할 수도 있습니다.
dnf remove pgdg-fedora-repo
이것은 아마도 덜 서투른 접근 방식이지만 나에게는 효과적입니다. 또한, 재구축 작업이라 history
사소한 오류가 있을 수 있으나 내용은 괜찮을 것이라는 점을 참고하시기 바랍니다.