이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 47.1. 논리적 디코딩 토토버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

48.1. 토토 사이트 추천 디코딩 예

다음 예는 SQL 인터페이스를 사용하여 토토 사이트 추천 디코딩을 제어하는 ​​방법을 보여줍니다.

토토 사이트 추천 디코딩을 사용하기 전에 다음을 설정해야 합니다.wal_level토토 사이트 추천그리고max_replication_slots적어도 1개. 그런 다음 대상 데이터베이스에 연결해야 합니다(아래 예에서는포스트그레) 슈퍼유저로.

postgres=# -- 출력 플러그인 'test_decoding'을 사용하여 'regression_slot'이라는 슬롯을 생성합니다.
postgres=# SELECT * FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
    슬롯_이름 |    lsn
---+------------
 회귀_슬롯 | 1970년 0월 16일
(1줄)

postgres=# pg_replication_slots에서 SELECT 슬롯 이름, 플러그인, 슬롯 유형, 데이터베이스, 활성, 재시작_lsn, 확인_플러시_lsn;
    슬롯_이름 |    플러그인 | 슬롯 유형 | 데이터베이스 | 활성 | 재시작_lsn | 확인_플러시_lsn
----+---------------+----------+----------+---------+------------+----
 회귀_슬롯 | 테스트_디코딩 | 토토 사이트 추천 | 포스트그레스 | 에프 | 0/16A4408 | 0/16A4440
(1줄)

postgres=# -- 아직 확인할 변경사항이 없습니다.
postgres=# SELECT * FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL);
 lsn | 시드 | 데이터 
------+------+------
(0행)

postgres=# CREATE TABLE 데이터(id 직렬 기본 키, 데이터 텍스트);
테이블 만들기

postgres=# -- DDL은 복제되지 않으므로 트랜잭션만 표시됩니다.
postgres=# SELECT * FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL);
    lsn |  시드 |     데이터     
---------+---------+-------------
 0/BA2DA58 | 10297 | 10297 시작
 0/BA5A5A0 | 10297 | 커밋 10297
(2열)

postgres=# -- 변경 사항을 읽고 나면 소비되고 내보내지지 않습니다.
postgres=# -- 후속 호출에서:
postgres=# SELECT * FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL);
 lsn | 시드 | 데이터 
------+------+------
(0행)

postgres=# 시작;
postgres=# 데이터(데이터)에 삽입 VALUES('1');
postgres=# 데이터(데이터)에 삽입 VALUES('2');
postgres=# 커밋;

postgres=# SELECT * FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL);
    lsn |  시드 |                          데이터                           
---------+---------+--------------------------------------------
 0/BA5A688 | 10298 | 10298 시작
 0/BA5A6F0 | 10298 | 테이블 public.data: INSERT: ID[정수]:1 데이터[텍스트]:'1'
 0/BA5A7F8 | 10298 | 테이블 public.data: INSERT: id[정수]:2 데이터[텍스트]:'2'
 0/BA5A8A8 | 10298 | 커밋 10298
(4열)

postgres=# 데이터(데이터) VALUES('3')에 삽입;

postgres=# -- 변경 사항을 소비하지 않고도 변경 스트림을 미리 볼 수도 있습니다.
postgres=# SELECT * FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL);
    lsn |  시드 |                          데이터                           
---------+---------+--------------------------------------------
 0/BA5A8E0 | 10299 | 10299 시작
 0/BA5A8E0 | 10299 | 테이블 public.data: INSERT: id[정수]:3 데이터[텍스트]:'3'
 0/BA5A990 | 10299 | 커밋 10299
(3열)

postgres=# -- 다음 pg_logical_slot_peek_changes() 호출은 동일한 변경 사항을 다시 반환합니다.
postgres=# SELECT * FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL);
    lsn |  시드 |                          데이터                           
---------+---------+--------------------------------------------
 0/BA5A8E0 | 10299 | 10299 시작
 0/BA5A8E0 | 10299 | 테이블 public.data: INSERT: id[정수]:3 데이터[텍스트]:'3'
 0/BA5A990 | 10299 | 커밋 10299
(3열)

postgres=# -- 형식에 영향을 주기 위해 옵션을 출력 플러그인에 전달할 수 있습니다.
postgres=# SELECT * FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL, 'include-timestamp', 'on');
    lsn |  시드 |                          데이터                           
---------+---------+--------------------------------------------
 0/BA5A8E0 | 10299 | 10299 시작
 0/BA5A8E0 | 10299 | 테이블 public.data: INSERT: id[정수]:3 데이터[텍스트]:'3'
 0/BA5A990 | 10299 | 커밋 10299(2017-05-10 12:07:21.272494-04)
(3열)

postgres=# -- 더 이상 소비를 중지할 필요가 없는 슬롯을 파괴하는 것을 기억하세요
postgres=# -- 서버 리소스:
postgres=# SELECT pg_drop_replication_slot('regression_slot');
 pg_drop_replication_slot
----------

(1행)

다음 예는 프로그램을 사용하여 스트리밍 복제 프로토콜을 통해 토토 사이트 추천 디코딩을 제어하는 ​​방법을 보여줍니다.pg_recvlogicalPostgreSQL 배포판에 포함되어 있습니다. 이를 위해서는 복제 연결을 허용하도록 클라이언트 인증을 설정해야 합니다(참조섹션 26.2.5.1) 그리고 그거max_wal_senders추가 연결을 허용할 만큼 충분히 높게 설정되어 있습니다.

$ pg_recvlogical -d postgres --slot=test --create-slot
$ pg_recvlogical -d postgres --slot=test --start -f -제어+Z$ psql -d postgres -c "데이터(데이터) VALUES('4')에 삽입;"
$fg
시작 693
테이블 public.data: INSERT: id[정수]:4 데이터[텍스트]:'4'
커밋 693제어+C$ pg_recvlogical -d postgres --slot=test --drop-slot