| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.6 : 토토 결과 디코딩 | PostgreSQL : 문서 : 9.6 : 토토 결과 디코딩 | 47장. 논리적 메이저 토토 사이트 | PostgreSQL : 문서 : 9.6 : 젠 토토 디코딩 개념 |
다음 예는 SQL 인터페이스를 사용하여 메이저 토토 사이트 디코딩을 제어하는 방법을 보여줍니다.
메이저 토토 사이트 디코딩을 사용하기 전에 다음을 설정해야 합니다.wal_level에메이저 토토 사이트그리고max_replication_slots최소 1개. 그런 다음 대상 데이터베이스에 연결해야 합니다(아래 예에서는포스트그레) 슈퍼유저로.
postgres=# -- 출력 플러그인 'test_decoding'을 사용하여 'regression_slot'이라는 슬롯을 생성합니다.
postgres=# SELECT * FROM pg_create_logical_replication_slot('regression_slot', 'test_decoding');
슬롯_이름 | xlog_위치
----+---------------
회귀_슬롯 | 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);
위치 | 시드 | 데이터
---------+------+------
(0행)
postgres=# CREATE TABLE 데이터(id 직렬 기본 키, 데이터 텍스트);
테이블 만들기
postgres=# -- DDL은 복제되지 않으므로 트랜잭션만 표시됩니다.
postgres=# SELECT * FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL);
위치 | 시드 | 데이터
---------+------+------------
0/16D5D48 | 688 | 시작 688
0/16E0380 | 688 | 커밋 688
(2열)
postgres=# -- 변경 사항을 읽고 나면 소비되고 내보내지지 않습니다.
postgres=# -- 후속 호출에서:
postgres=# SELECT * FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL);
위치 | 시드 | 데이터
---------+------+------
(0행)
postgres=# 시작;
postgres=# 데이터(데이터)에 삽입 VALUES('1');
postgres=# 데이터(데이터)에 삽입 VALUES('2');
postgres=# 커밋;
postgres=# SELECT * FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL);
위치 | 시드 | 데이터
-----------+------+----------------------------------
0/16E0478 | 689 | 시작 689
0/16E0478 | 689 | 테이블 public.data: INSERT: ID[정수]:1 데이터[텍스트]:'1'
0/16E0580 | 689 | 테이블 public.data: INSERT: id[정수]:2 데이터[텍스트]:'2'
0/16E0650 | 689 | 커밋 689
(4열)
postgres=# 데이터(데이터) VALUES('3')에 삽입;
postgres=# -- 변경 사항을 소비하지 않고도 변경 스트림을 미리 볼 수도 있습니다.
postgres=# SELECT * FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL);
위치 | 시드 | 데이터
-----------+------+----------------------------------
0/16E09C0 | 690 | 시작 690
0/16E09C0 | 690 | 테이블 public.data: INSERT: id[정수]:3 데이터[텍스트]:'3'
0/16E0B90 | 690 | 커밋 690
(3열)
postgres=# -- 다음 pg_logical_slot_peek_changes() 호출은 동일한 변경 사항을 다시 반환합니다.
postgres=# SELECT * FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL);
위치 | 시드 | 데이터
-----------+------+----------------------------------
0/16E09C0 | 690 | 시작 690
0/16E09C0 | 690 | 테이블 public.data: INSERT: id[정수]:3 데이터[텍스트]:'3'
0/16E0B90 | 690 | 커밋 690
(3열)
postgres=# -- 형식에 영향을 주기 위해 옵션을 출력 플러그인에 전달할 수 있습니다.
postgres=# SELECT * FROM pg_logical_slot_peek_changes('regression_slot', NULL, NULL, 'include-timestamp', 'on');
위치 | 시드 | 데이터
-----------+------+----------------------------------
0/16E09C0 | 690 | 시작 690
0/16E09C0 | 690 | 테이블 public.data: INSERT: id[정수]:3 데이터[텍스트]:'3'
0/16E0B90 | 690 | 커밋 690(2014-02-27 16:41:51.863092+01)
(3열)
postgres=# -- 더 이상 소비를 중지할 필요가 없는 슬롯을 파괴하는 것을 기억하세요
postgres=# -- 서버 리소스:
postgres=# SELECT pg_drop_replication_slot('regression_slot');
pg_drop_replication_slot
----------
(1행)
다음 예는 프로그램을 사용하여 스트리밍 복제 프로토콜을 통해 메이저 토토 사이트 디코딩을 제어하는 방법을 보여줍니다.postgresql : 문서PostgreSQL 배포판에 포함되어 있습니다. 이를 위해서는 복제 연결을 허용하도록 클라이언트 인증을 설정해야 합니다(참조섹션 26.2.5.1) 그리고 그거max_wal_senders추가 연결을 허용할 만큼 충분히 높게 설정되어 있습니다.
$ pg_recvlogical -d postgres --slot 테스트 --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| PostgreSQL : 문서 : 9.6 : 토토 결과 디코딩 | 젠 토토 : 문서 : 9.6 : 젠 토토 9.6.24 문서화 | PostgreSQL : 문서 : 9.6 : 젠 토토 디코딩 개념 |
| 메이저 토토 사이트 디코딩 | PostgreSQL : 문서 : 9.6 : 토토 결과 디코딩 | 메이저 토토 사이트 디코딩 개념 |