PostgreSQL 데이터베이스 크로스 버 전 업그레이드 상용 방안 분석
9205 단어 PostgreSQL판본업그레이드
안녕하세요,저 는 기술 만 이야기 하고 머리 를 자 르 지 않 는 토 니 선생님 입 니 다.기업 의 경우 데이터베이스 시스템 을 새로운 버 전 으로 업그레이드 하면 더 좋 은 성능,더 많은 기능,최신 보안 패 치 와 오류 복구 등 을 얻 을 수 있다.따라서 본 고 는 PostgreSQL 데이터베이스 버 전 업그레이드 의 3 가지 상용 방안 을 소개 한다.
업그레이드 방안 개요
PostgreSQL 버 전 번 호 는 주요 버 전과 부차적인 버 전 으로 구성 되 어 있 습 니 다.예 를 들 어 PostgreSQL 12.4 의 12 는 주요 버 전이 고 4 는 부차적인 버 전이 다.PostgreSQL 10.0 이전 버 전 은 3 개의 숫자 로 구성 되 었 는데 예 를 들 어 9.6.19 이 고 그 중에서 9.6 은 주요 버 전 이 며 19 는 부차적인 버 전 이다.
부차적인 버 전 을 발표 하 는 것 은 메모리 의 저장 형식 을 바 꾸 지 않 기 때문에 항상 같은 주요 버 전과 호 환 됩 니 다.예 를 들 어 PostgreSQL 12.4 와 PostgreSQL 12.0 및 후속 PostgreSQL 12.x 호 환.이러한 호 환 버 전의 업 그 레이 드 는 매우 간단 합 니 다.데이터베이스 서 비 스 를 닫 고 바 이 너 리 를 교체 할 수 있 는 실행 가능 한 파일 을 설치 하고 서 비 스 를 다시 시작 하면 됩 니 다.
그 다음 에 우 리 는 주로 PostgreSQL 의 크로스 버 전 업그레이드 문 제 를 토론 합 니 다.예 를 들 어 PostgreSQL 12.x 에서 PostgreSQL 13.y 로 업그레이드 합 니 다.주요 버 전의 업 그 레이 드 는 내부 데이터 의 저장 형식 을 수정 할 수 있 으 므 로 추가 작업 이 필요 합 니 다.자주 사용 하 는 버 전 업그레이드 방법 과 적용 장면 은 다음 과 같다.
업그레이드 방법
적용 필드
정지 시간
논리 백업 및 복원
중 소형 데이터베이스,예 를 들 어 100 GB 이하
크로스 플랫폼 데이터 이전 지원
데이터베이스 크기 에 달 려 있 습 니 다.
pg_업그레이드 도구
대형 데이터베이스,예 를 들 어 100 GB 이상
본 기 계 는 현지에서 업그레이드 합 니 다.
몇 분
논리 복제
대형 데이터베이스,예 를 들 어 100 GB 이상
크로스 플랫폼 지원
몇 초
네,그렇습니다.
📝제조 업 체 가 제공 하 는 PostgreSQL 맞 춤 형 버 전 을 사용 하면 그들 이 제공 하 는 도 구 를 통 해 버 전 업 그 레이 드 를 실현 하고 관련 문 서 를 구체 적 으로 참고 할 수 있 습 니 다.
주의사항:주요 버 전 업 그 레이 드 를 통 해 사용자 가 볼 수 있 는 불 호환성 을 초래 할 수 있 으 므 로 응용 프로그램 은 해당 하 는 수정 이 필요 할 수 있 습 니 다.구체 적 인 변 화 는 발행 설명,특히'Migration'부분의 내용 을 참고 할 수 있다.여러 주요 버 전 을 넘 어 업그레이드 하려 면 중간 버 전의 발행 설명 을 읽 어야 한다.
논리 백업 및 복원 을 통 해 업그레이드
전통 적 인 버 전 업그레이드 방법 이용 pgdump/pg_dumpall 논리 백업 으로 데이터 베 이 스 를 내 보 내 고 새 버 전에 서 pg복원이전 버 전 데이터 베 이 스 를 내 보 낼 때 새 버 전의 pg 를 추천 합 니 다.dump/pg_dumpall 도 구 는 최신 병렬 내 보 내기 와 복원 기능 을 이용 하여 데이터베이스 팽창 문 제 를 줄 일 수 있 습 니 다.
논리 백업 과 복원 은 매우 간단 하지만 속도 가 느 리 고 정지 시간 은 데이터 뱅 크 의 크기 에 달 려 있 기 때문에 중 소형 데이터 뱅 크 의 업그레이드 에 적합 하 다.
현재 PostgreSQL 소프트웨어 의 설치 디 렉 터 리 가/usr/local/pgsql 에 있 고 데이터 디 렉 터 리 가/usr/local/pgsql/data 에 있 으 면 같은 서버 에서 업 그 레이 드 됩 니 다.
논리 백업 을 실행 하기 전에 프로그램 을 중단 하고 데이터 업데이트 가 없 는 지 확인 합 니 다.백업 이 시 작 된 후 업데이트 가 내 보 내지 않 기 때 문 입 니 다.필요 하 다 면/usr/local/pgsql/data/pg 를 수정 할 수 있 습 니 다.hba.conf 파일 은 다른 사람 이 데이터베이스 에 접근 하 는 것 을 금지 합 니 다.
그리고 데이터 베 이 스 를 백업 합 니 다:
pg_dumpall > outputfile
새 버 전의 PostgreSQL 이 설치 되 어 있다 면 새 버 전의 pg 를 사용 할 수 있 습 니 다.dumpall 명령 으로 이전 버 전 데이터 베 이 스 를 백업 합 니 다.이전 버 전의 배경 서 비 스 를 중단 합 니 다:
pg_ctl stop
다른 방식 으로 백 스테이지 서 비 스 를 중단 하거나설치 디 렉 터 리 에 특정 버 전 표지 가 포함 되 어 있 지 않 으 면 디 렉 터 리 이름 을 바 꿀 수 있 고 필요 할 때 다시 수정 할 수 있 습 니 다.다음 과 같은 명령 으로 디 렉 터 리 이름 을 바 꿀 수 있 습 니 다.
mv /usr/local/pgsql /usr/local/pgsql.old
새 버 전의 PostgreSQL 소프트웨어 를 설치 합 니 다.설치 디 렉 터 리 가/usr/local/pgsql 이면.새로운 데이터베이스 클 러 스 터 를 초기 화 하려 면 데이터베이스 전용 사용 자 를 사용 해 야 합 니 다(보통 postgres 입 니 다.업그레이드 버 전이 라면 이 사용자 가 이미 존재 할 것 입 니 다)실행 작업:
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
이전 버 전 프로필 pghba.conf 와 postgresql.conf 등의 변경 사항 은 해당 하 는 새 프로필 에서 다시 수정 합 니 다.데이터베이스 전용 사용자 로 새 버 전의 배경 서 비 스 를 시작 합 니 다:
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
마지막 으로 새 버 전의 psql 명령 을 이용 하여 데 이 터 를 복원 합 니 다:
/usr/local/pgsql/bin/psql -d postgres -f outputfile
정지 시간 을 줄 이기 위해 새 버 전의 PostgreSQL 을 다른 디 렉 터 리(예:/usr/local/pgsql-13)에 설치 하고 서로 다른 포트 로 서 비 스 를 시작 할 수 있 습 니 다.그리고 데이터베이스 내 보 내기 와 가 져 오 기 를 동시에 실행 합 니 다:
pg_dumpall -p 5432 | psql -d postgres -p 5433
상기 작업 을 수행 할 때 신 구 버 전의 백 스테이지 서 비 스 는 동시에 실행 되 고 새 버 전 은 5433 포트 를 사용 하 며 구 버 전 은 5432 포트 를 사용 합 니 다.pg 이용upgrade 도구 업그레이드
pg_upgrade 도 구 는 PostgreSQL 크로스 버 전의 현지 업 그 레이 드 를 지원 할 수 있 으 며 내 보 내기 와 가 져 오기 작업 을 수행 할 필요 가 없습니다.pg_upgrade 는 PostgreSQL 8.4.X 에서 최신 버 전의 업 그 레이 드 를 지원 할 수 있 습 니 다.스냅 샷 버 전과 테스트 버 전 을 포함 합 니 다.
pg_upgrade 는 업그레이드 전의 호환성 검사(-c 또는--check 옵션)기능 을 제공 합 니 다.플러그 인,데이터 형식 이 호 환 되 지 않 는 등 문 제 를 발견 할 수 있 습 니 다.--link 옵션 이 지정 되면 새 버 전 서 비 스 는 복사 가 필요 없 이 기 존 데이터베이스 파일 을 직접 사용 할 수 있 습 니 다.보통 몇 분 안에 업그레이드 작업 을 완료 할 수 있 습 니 다.
현재 PostgreSQL 소프트웨어 의 설치 디 렉 터 리 가/usr/pgsql-12/에 있 고 데이터 디 렉 터 리 가/var/lib/pgsql/12/data/에 있 으 면 PostgreSQL 13 로 업그레이드 합 니 다.
클 라 이언 트 가 접근 하지 않 은 것 을 확인 한 후 데이터 베 이 스 를 백업 하고 이전 버 전의 배경 서 비 스 를 중단 합 니 다.예 를 들 어 CentOS 는 다음 명령 을 수행 할 수 있 습 니 다.
sudo systemctl stop postgresql-12
sudo systemctl disable postgresql-12
새 버 전의 PostgreSQL 소프트웨어 를 설치 합 니 다.예 를 들 어 PostgreSQL 13.0,설치 디 렉 터 리 는/usr/pgsql-13/에 있 습 니 다.새 버 전의 데이터베이스 클 러 스 터 를 초기 화 합 니 다.데이터 디 렉 터 리 는/var/lib/pgsql/13/data/로 설정 되 어 있 습 니 다.
이전 버 전에 확장 모듈 이 설치 되 어 있다 면 새 버 전에 도 해당 공유 대상 파일 이나 DLL 파일 을 설치 해 야 합 니 다.단,오래된 데이터베이스 에서 업 그 레이 드 될 수 있 기 때문에
CREATE EXTENSION
명령 을 실행 하지 마 십시오.또한 사용자 정의 전체 텍스트 검색 파일(사전,동의어,어고,사용 중지 어)을 사용 했다 면 새로운 데이터베이스 클 러 스 터 디 렉 터 리 에 복사 해 야 합 니 다.새 버 전의 백 스테이지 서 비 스 를 중단 합 니 다.예 를 들 어 CentOS 는 다음 명령 을 수행 할 수 있 습 니 다.
sudo systemctl stop postgresql-13
통과 pgupgrade 는 업그레이드 작업 을 수행 하고 데이터베이스 전용 사용자(보통 postgres)를 사용 하여 다음 작업 을 수행 합 니 다.
/usr/pgsql-13/bin/pg_upgrade \
--old-datadir /var/lib/pgsql/12/data/ \
--new-datadir /var/lib/pgsql/13/data/ \
--old-bindir /usr/pgsql-12/bin/ \
--new-bindir /usr/pgsql-13/bin/ \
--check
그 중에서--check 는 업그레이드 검 사 를 실행 하고 업그레이드 작업 을 실제로 수행 하지 않 는 다 고 표시 합 니 다.검 사 를 통 해 이 매개 변 수 를 제거 하고 업 그 레이 드 를 수행 할 수 있 습 니 다:
/usr/pgsql-13/bin/pg_upgrade \
--old-datadir /var/lib/pgsql/12/data/ \
--new-datadir /var/lib/pgsql/13/data/ \
--old-bindir /usr/pgsql-12/bin/ \
--new-bindir /usr/pgsql-13/bin/ \
--link
그 중에서--link 는 새로운 버 전의 데이터 디 렉 터 리 를 이전 버 전의 데이터 디 렉 터 리 에 하 드 링크 하고 새로운 데이터 파일 을 복사 하지 않 으 며 빠르게 업그레이드 할 수 있다 고 밝 혔 다.이전 버 전 프로필 pghba.conf 와 postgresql.conf 등의 변경 사항 은 해당 하 는 새 프로필 에서 다시 수정 합 니 다.
새 버 전의 백 스테이지 서 비 스 를 시작 합 니 다.예 를 들 어 CentOS 는 다음 명령 을 수행 할 수 있 습 니 다.
sudo systemctl start postgresql-13
sudo systemctl enable postgresql-13
서버 에 연결 하여 데이터베이스 버 전 정보 보기:
SELECT version();
version |
-------------------------------------------------------------------------------------------------------|
PostgreSQL 13.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit|
통계 정 보 를 수집 하 다.pg_upgrade 는 새 버 전 데이터베이스 에 대한 통계 정 보 를 만 들 지 는 않 지만 스 크 립 트 파일 을 만 들 고 이 파일 을 실행 합 니 다.
./analyze_new_cluster.sh
업그레이드 에 성공 한 것 을 확인 하면 오래된 데이터베이스 소프트웨어 와 클 러 스 터 를 삭제 하거나 유지 할 수 있 습 니 다.pg_upgrade 역시 오래된 데이터베이스 클 러 스 터 를 삭제 하 는 스 크 립 트 를 제공 합 니 다:
./delete_old_cluster.sh
그리고 CentOS 와 같은 이전 버 전의 PostgreSQL 소프트웨어 를 삭제 할 수 있 습 니 다.
yum remove postgresql12*
이전 버 전의 데이터 베 이 스 를 되 돌려 주 려 면 다른 상황 으로 나 눌 수 있 습 니 다.논리 복제 기능 을 사용 하여 업그레이드 하 다
PostgreSQL 논리 복 제 는 버 전 간 의 데이터 복 제 를 지원 하고 서로 다른 플랫폼 간 의 복 제 를 지원 하기 때문에 버 전 업 그 레이 드 를 실현 하 는 데 도 사용 할 수 있 습 니 다.우 리 는 새로운 버 전의 데이터 베 이 스 를 복사 하 는 노드 로 설치 할 수 있 습 니 다.데이터 가 동기 화 되 었 을 때 메 인 전환 을 실행 한 다음 에 이전 버 전의 메 인 노드 를 닫 을 수 있 습 니 다.주로 전환 하 는 업그레이드 방법 은 보통 몇 초 만 에 완성 할 수 있 고 제3자 의 높 은 사용 가능 한 구성 요 소 를 이용 하여 정지 시간 업 그 레이 드 를 실현 할 수 있다.
PostgreSQL 10 은 내 장 된 논리 복제 기능 을 제공 하거나 pglogical,Slony,Londiste,Bucardo 등 논리 적 복잡 도 구 를 사용 할 수 있 습 니 다.
PostgreSQL 논리 복제 구조의 생 성과 주종 전환 에 대해 참고 할 수 있 습 니 다공식 문서 시험.
총결산
PostgreSQL 작은 버 전 업 그 레이 드 는 바 이 너 리 파일 만 바 꾸 면 됩 니 다.버 전 을 뛰 어 넘 는 업그레이드 방안 은 주로 3 가지 가 있 습 니 다.pgdump/pg_dumpall 논리 백업 및 복원 업그레이드,pg 이용upgrade 도 구 를 업그레이드 하고 논리 복사 기능 으로 업그레이드 합 니 다.그들의 장단 점 과 적용 장면 을 이해 하면 우리 가 가장 좋 은 업그레이드 방식 을 선택 하 는 데 도움 을 줄 수 있다.
이 글 은 PostgreSQL 데이터베이스 의 버 전 간 업그레이드 에 관 한 일반적인 방안 분석 에 관 한 글 입 니 다.더 많은 관련 PostgreSQL 버 전 업그레이드 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redmine 데이터베이스를 MySQL에서 PostgreSQL로 마이그레이션 (보충)Redmine 의 Database 를 MySQL 로 운용하고 있었습니다만, MySQL 5.6 이상이나 MariaDB 에는 , , 이러한 티켓이 수년 동안 방치된 상황을 감안하여, PostgreSQL로 마이그레이션하기...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.