이전논리적 복제 클러스터이전 논리적 복제 클러스터의 모든 구성원이 버전 17.0 이상인 경우에만 가능합니다.
pg_upgrade논리적 슬롯을 마이그레이션하려고 시도합니다. 이렇게 하면 새 게시자에서 동일한 논리 슬롯을 수동으로 정의할 필요가 없습니다. 논리적 슬롯 마이그레이션은 이전 클러스터가 버전 17.0 이상인 경우에만 지원됩니다. 버전 17.0 이전 클러스터의 논리적 슬롯은 자동으로 무시됩니다.
게시자 클러스터 업그레이드를 시작하기 전에 다음을 실행하여 구독이 일시적으로 비활성화되었는지 확인하십시오.구독 변경 ... 비활성화. 업그레이드 후 구독을 다시 활성화하세요.
다음에는 몇 가지 전제 조건이 있습니다.pg_upgrade논리적 슬롯을 업그레이드할 수 있습니다. 이러한 사항이 충족되지 않으면 오류가 보고됩니다.
새 클러스터에는 다음이 있어야 합니다.wal_level으로논리적.
새 클러스터에는 다음이 있어야 합니다.max_replication_slots이전 클러스터에 있는 슬롯 수보다 크거나 같은 값으로 구성되었습니다.
이전 클러스터의 슬롯에서 참조하는 출력 플러그인은 새 PostgreSQL 실행 가능 디렉터리에 설치되어야 합니다.
이전 클러스터는 모든 트랜잭션과 논리적 디코딩 메시지를 구독자에게 복제했습니다.
이전 클러스터의 모든 슬롯을 사용할 수 있어야 합니다. 즉, 해당 슬롯이 없습니다.젠 토토 PostgreSQL : 문서.충돌하는아닙니다참.
새 클러스터에는 영구 논리 슬롯이 없어야 합니다. 즉, 다음 위치에 슬롯이 없어야 합니다.젠 토토 PostgreSQL : 문서.임시이다거짓.
설정구독자 구성새 구독자에서.pg_upgrade다음에 있는 구독의 테이블 정보를 포함하는 구독 종속성을 마이그레이션하려고 시도합니다.젠 토토 : 문서 : 18 : 52시스템 카탈로그 및 구독의 복제 원본. 이를 통해 새 구독자의 논리적 복제가 이전 구독자의 위치에서 계속될 수 있습니다. 구독 종속성 마이그레이션은 이전 클러스터가 버전 17.0 이상인 경우에만 지원됩니다. 버전 17.0 이전의 클러스터에 대한 구독 종속성은 자동으로 무시됩니다.
다음에는 몇 가지 전제 조건이 있습니다.pg_upgrade구독을 업그레이드할 수 있습니다. 이러한 사항이 충족되지 않으면 오류가 보고됩니다.
이전 구독자의 모든 구독 테이블은 상태에 있어야 합니다.i(초기화) 또는r(준비). 이는 확인하여 확인할 수 있습니다.젠 토토 : 문서 : 18 : 52.srsubstate.
각 구독에 해당하는 복제 원본 항목은 이전 클러스터에 존재해야 합니다. 이는 확인하여 찾을 수 있습니다.사설 토토 사이트 : 문서 :그리고토토 사이트 순위 : 문서 : 18 :시스템 테이블.
새 클러스터에는 다음이 있어야 합니다.max_active_replication_origins이전 클러스터에 있는 구독 수보다 크거나 같은 값으로 구성되었습니다.
구독자를 업그레이드하는 동안 게시자에서 쓰기 작업을 수행할 수 있습니다. 구독자 업그레이드가 완료되면 이러한 변경사항이 구독자에게 복제됩니다.
논리적 복제 제한은 논리적 복제 클러스터 업그레이드에도 적용됩니다. 보다와이즈 토토 : 문서 : 18 : 29.8. 제한자세한 내용은.
게시자 업그레이드의 전제 조건은 논리적 복제 클러스터 업그레이드에도 적용됩니다. 보다섹션 29.13.1자세한 내용은.
구독자 업그레이드의 전제 조건은 논리적 복제 클러스터 업그레이드에도 적용됩니다. 보다섹션 29.13.2자세한 내용은.
논리적 복제 클러스터를 업그레이드하려면 다양한 노드에서 여러 단계를 수행해야 합니다. 모든 작업이 트랜잭션으로 이루어지는 것은 아니므로 사용자는 다음에 설명된 대로 백업을 수행하는 것이 좋습니다.섹션 25.3.2.
다음 논리적 복제 클러스터를 업그레이드하는 단계는 아래에 자세히 설명되어 있습니다.
다음에 지정된 단계를 따르십시오섹션 29.13.3.12노드 논리 복제 클러스터를 업그레이드합니다.
다음에 지정된 단계를 따르십시오섹션 29.13.3.2계단식 논리적 복제 클러스터를 업그레이드합니다.
다음에 지정된 단계를 따르십시오.섹션 29.13.3.32노드 순환 논리적 복제 클러스터를 업그레이드합니다.
게시자가 여기에 있다고 가정해 보겠습니다.노드1그리고 구독자가 포함됨노드2. 구독자노드2구독 중입니다sub1_node1_node2다음의 변경 사항을 구독 중입니다.노드1.
다음의 모든 구독을 비활성화합니다.노드2다음의 변경 사항을 구독하고 있는노드1사용하여구독 변경 ... 비활성화, 예:
/* node2 # */ 구독 변경 sub1_node1_node2 비활성화;
다음에서 게시자 서버를 중지하세요.노드1, 예:
pg_ctl -D /opt/스포츠 토토 베트맨/data1 중지
초기화data1_upgraded인스턴스를 필요한 최신 버전을 사용하여 실행하세요.
게시자 업그레이드노드1의 서버를 필요한 최신 버전으로 업그레이드하세요. 예:
pg_upgrade
--old-datadir "/opt/PostgreSQL/postgres/17/data1"
--new-datadir "/opt/PostgreSQL/postgres/18/data1_upgraded"
--old-bindir "/opt/PostgreSQL/postgres/17/bin"
--new-bindir "/opt/PostgreSQL/postgres/18/bin"
다음에서 업그레이드된 게시자 서버를 시작하세요.노드1, 예:
pg_ctl -D /opt/PostgreSQL/data1_upgraded start -l 로그 파일
다음에서 구독자 서버를 중지하세요.노드2, 예:
pg_ctl -D /opt/스포츠 토토 베트맨/data2 중지
초기화data2_upgraded인스턴스를 필요한 최신 버전을 사용하여 실행하세요.
구독자 업그레이드노드2의 서버를 필요한 새 버전으로 업그레이드합니다. 예:
pg_upgrade
--old-datadir "/opt/PostgreSQL/postgres/17/data2"
--new-datadir "/opt/PostgreSQL/postgres/18/data2_upgraded"
--old-bindir "/opt/PostgreSQL/postgres/17/bin"
--new-bindir "/opt/PostgreSQL/postgres/18/bin"
업그레이드된 구독자 서버 시작노드2, 예:
pg_ctl -D /opt/PostgreSQL/data2_upgraded start -l 로그 파일
켜짐노드2, 업그레이드된 게시자에서 생성된 테이블을 생성합니다.노드1서버 사이1단계그리고 지금, 예:
/* node2 # */ CREATE TABLE 배포자(정수 PRIMARY KEY 수행, 이름 varchar(40));
모든 구독 활성화노드2다음의 변경 사항을 구독하는노드1사용하여구독 변경 ... 활성화, 예:
/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 ENABLE;
새로고침노드2다음을 사용하는 구독의 발행물구독 변경...게시 새로고침, 예:
/* node2 # */ 구독 변경 sub1_node1_node2 게시 새로고침;
위에 설명된 단계에서는 게시자가 먼저 업그레이드되고 그 다음 구독자가 업그레이드됩니다. 또는 사용자는 비슷한 단계를 사용하여 구독자를 먼저 업그레이드한 다음 게시자를 업그레이드할 수 있습니다.
계단식 논리적 복제 설정이 있다고 가정해 보겠습니다.노드1-노드2-노드3. 여기노드2다음의 변경 사항을 구독 중입니다.노드1그리고노드3다음의 변경 사항을 구독 중입니다.노드2. 그만큼노드2구독 중입니다sub1_node1_node2다음의 변경 사항을 구독하고 있습니다.노드1. 그만큼노드3구독 중입니다sub1_node2_node3다음의 변경 사항을 구독하고 있습니다노드2.
다음의 모든 구독을 비활성화합니다노드2다음의 변경 사항을 구독하고 있는노드1사용하여구독 변경 ... 비활성화, 예:
/* node2 # */ 구독 변경 sub1_node1_node2 비활성화;
다음에 서버를 중지하세요.노드1, 예:
pg_ctl -D /opt/스포츠 토토 베트맨/data1 중지
초기화data1_upgraded인스턴스를 필요한 최신 버전을 사용하여 실행하세요.
업그레이드노드1의 서버를 필요한 최신 버전으로 업그레이드하세요. 예:
pg_upgrade
--old-datadir "/opt/PostgreSQL/postgres/17/data1"
--new-datadir "/opt/PostgreSQL/postgres/18/data1_upgraded"
--old-bindir "/opt/PostgreSQL/postgres/17/bin"
--new-bindir "/opt/PostgreSQL/postgres/18/bin"
다음에서 업그레이드된 서버를 시작하세요.노드1, 예:
pg_ctl -D /opt/PostgreSQL/data1_upgraded start -l 로그 파일
다음의 모든 구독을 비활성화합니다.노드3다음의 변경 사항을 구독하고 있는노드2사용하여구독 변경 ... 비활성화, 예:
/* node3 # */ 구독 변경 sub1_node2_node3 비활성화;
다음에서 서버를 중지하세요.노드2, 예:
pg_ctl -D /opt/스포츠 토토 베트맨/data2 중지
초기화data2_upgraded인스턴스를 필요한 최신 버전을 사용하여 실행하세요.
업그레이드노드2의 서버를 필요한 새 버전으로 업그레이드합니다. 예:
pg_upgrade
--old-datadir "/opt/PostgreSQL/postgres/17/data2"
--new-datadir "/opt/PostgreSQL/postgres/18/data2_upgraded"
--old-bindir "/opt/PostgreSQL/postgres/17/bin"
--new-bindir "/opt/PostgreSQL/postgres/18/bin"
다음에서 업그레이드된 서버를 시작하세요.노드2, 예:
pg_ctl -D /opt/PostgreSQL/data2_upgraded start -l 로그 파일
켜짐노드2, 업그레이드된 게시자에서 생성된 테이블을 생성합니다.노드1서버 사이1단계그리고 지금, 예:
/* node2 # */ CREATE TABLE 배포자(정수 PRIMARY KEY 수행, 이름 varchar(40));
모든 구독 활성화노드2다음의 변경 사항을 구독하고 있는노드1사용하여구독 변경 ... 활성화, 예:
/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 ENABLE;
새로고침노드2구독의 발행물 사용구독 변경...게시 새로고침, 예:
/* node2 # */ 구독 변경 sub1_node1_node2 게시 새로 고침;
다음에서 서버를 중지하세요.노드3, 예:
pg_ctl -D /opt/스포츠 토토 베트맨/data3 중지
초기화data3_upgraded인스턴스를 필요한 최신 버전을 사용하여 실행하세요.
업그레이드노드3의 서버를 필요한 새 버전으로 업그레이드합니다. 예:
pg_upgrade
--old-datadir "/opt/PostgreSQL/postgres/17/data3"
--new-datadir "/opt/PostgreSQL/postgres/18/data3_upgraded"
--old-bindir "/opt/PostgreSQL/postgres/17/bin"
--new-bindir "/opt/PostgreSQL/postgres/18/bin"
다음에서 업그레이드된 서버를 시작하세요.노드3, 예:
pg_ctl -D /opt/PostgreSQL/data3_upgraded start -l 로그 파일
켜짐노드3, 업그레이드에서 생성된 테이블을 생성합니다.노드2사이6단계그리고 지금, 예:
/* node3 # */ CREATE TABLE 배포자(정수 PRIMARY KEY 수행, 이름 varchar(40));
모든 구독 활성화노드3다음의 변경 사항을 구독하고 있는노드2사용하여구독 변경 ... 활성화, 예:
/* node3 # */ ALTER SUBSCRIPTION sub1_node2_node3 ENABLE;
새로고침노드3다음을 사용하는 구독의 발행물구독 변경...게시 새로고침, 예:
/* node3 # */ 구독 변경 sub1_node2_node3 게시 새로 고침;
순환 논리 복제 설정이 있다고 가정해 보겠습니다.노드1-노드2그리고노드2-노드1. 여기노드2다음의 변경 사항을 구독 중입니다.노드1그리고노드1다음의 변경 사항을 구독 중입니다노드2. 그만큼노드1구독 중입니다sub1_node2_node1다음의 변경 사항을 구독하고 있습니다.노드2. 그만큼노드2구독 중입니다sub1_node1_node2다음의 변경 사항을 구독하고 있습니다.노드1.
다음의 모든 구독을 비활성화합니다.노드2다음의 변경 사항을 구독하고 있는노드1사용하여구독 변경 ... 비활성화, 예:
/* node2 # */ 구독 변경 sub1_node1_node2 비활성화;
서버를 다음에서 중지하세요.노드1, 예:
pg_ctl -D /opt/스포츠 토토 베트맨/data1 중지
초기화data1_upgraded인스턴스를 필요한 최신 버전을 사용하여 실행하세요.
업그레이드노드1'의 서버를 필요한 최신 버전으로 업그레이드하세요. 예:
pg_upgrade
--old-datadir "/opt/PostgreSQL/postgres/17/data1"
--new-datadir "/opt/PostgreSQL/postgres/18/data1_upgraded"
--old-bindir "/opt/PostgreSQL/postgres/17/bin"
--new-bindir "/opt/PostgreSQL/postgres/18/bin"
다음에서 업그레이드된 서버를 시작하세요노드1, 예:
pg_ctl -D /opt/PostgreSQL/data1_upgraded start -l 로그 파일
모든 구독 활성화노드2다음의 변경 사항을 구독하고 있는노드1사용하여구독 변경 ... 활성화, 예:
/* node2 # */ ALTER SUBSCRIPTION sub1_node1_node2 ENABLE;
켜짐노드1, 다음에서 생성된 테이블을 생성합니다.노드2사이1단계그리고 지금, 예:
/* node1 # */ CREATE TABLE 배포자(정수 PRIMARY KEY 수행, 이름 varchar(40));
새로고침노드1초기 테이블 데이터를 복사할 구독의 발행물노드2사용 중구독 변경...게시 새로고침, 예:
/* node1 # */ 구독 변경 sub1_node2_node1 게시 새로 고침;
다음의 모든 구독을 비활성화합니다.노드1다음의 변경 사항을 구독하고 있는노드2사용하여구독 변경 ... 비활성화, 예:
/* node1 # */ ALTER SUBSCRIPTION sub1_node2_node1 DISABLE;
서버를 다음에서 중지하세요.노드2, 예:
pg_ctl -D /opt/스포츠 토토 베트맨/data2 중지
초기화data2_upgraded인스턴스를 필요한 최신 버전을 사용하여 실행하세요.
업그레이드노드2'의 서버를 필요한 새 버전으로 업그레이드합니다. 예:
pg_upgrade
--old-datadir "/opt/PostgreSQL/postgres/17/data2"
--new-datadir "/opt/PostgreSQL/postgres/18/data2_upgraded"
--old-bindir "/opt/PostgreSQL/postgres/17/bin"
--new-bindir "/opt/PostgreSQL/postgres/18/bin"
다음에서 업그레이드된 서버를 시작하십시오.노드2, 예:
pg_ctl -D /opt/PostgreSQL/data2_upgraded start -l 로그 파일
모든 구독 활성화노드1다음의 변경 사항을 구독하는노드2사용하여구독 변경 ... 활성화, 예:
/* node1 # */ ALTER SUBSCRIPTION sub1_node2_node1 ENABLE;
켜짐노드2, 업그레이드에서 생성된 테이블을 생성합니다.노드1사이9단계그리고 지금, 예:
/* node2 # */ CREATE TABLE 배포자(정수 PRIMARY KEY 수행, 이름 varchar(40));
새로고침노드2초기 테이블 데이터를 복사할 구독의 발행물노드1사용 중구독 변경...게시 새로고침, 예:
/* node2 # */ 구독 변경 sub1_node1_node2 게시 새로 고침;
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.