Geo PostgreSQL 복제 문제 해결
Geo PostgreSQL 복제 문제 해결에 대해 설명합니다.
다음 섹션에서는 복제 오류 메시지를 해결하기 위한 문제 해결 단계를 설명합니다(오류는 geo:check 출력 에 Database replication working? ... no 로 표시됩니다). 여기에 제시된 지침은 대부분 단일 노드 Geo Linux 패키지 배포를 가정하며, 환경에 따라 조정이 필요할 수 있습니다. 비활성 복제 슬롯 제거 # 슬롯에 연결된 복제 클라이언트(보조 사이트)가 연결을 끊으면 복제 슬롯이 '비활성'으로 표시됩니다. 비활성 복제 슬롯은 WAL 파일을 계속 보존합니다. 클라이언트가 다시 연결하면 해당 파일이 전송되고 슬롯이 다시 활성화되기 때문입니다. 보조 사이트가 다시 연결할 수 없다면 다음 단계로 해당 비활성 복제 슬롯을 제거합니다. Geo 기본 사이트의 데이터베이스 노드에서 PostgreSQL 콘솔 세션을 시작합니다 . sudo gitlab-psql -d gitlabhq_production [!note] 복제 슬롯 관리에는 슈퍼유저 권한이 필요하므로 gitlab-rails dbconsole 을 사용하면 동작하지 않습니다. 복제 슬롯을 확인하고 비활성 상태이면 제거합니다. SELECT * FROM pg_replication_slots; active 가 f 인 슬롯은 비활성 상태입니다. 해당 슬롯을 사용하는 보조 사이트가 구성되어 있어 이 슬롯이 활성 상태여야 하는 경우: 보조 사이트의 PostgreSQL 로그 에서 복제가 실행되지 않는 이유를 확인합니다. 보조 사이트가 더 이상 다시 연결할 수 없는 경우: PostgreSQL 콘솔 세션으로 슬롯을 제거합니다. SELECT pg_drop_replication_slot( '<name_of_inactive_slot>' ); 복제 프로세스를 다시 시작(Patroni를 사용하지 않는 데이터베이스) 하면 복제 슬롯이 올바르게 다시 생성됩니다. [!note] Patroni가 관리하는 데이터베이스의 복제 슬롯은 보조 사이트에서 복제 프로세스를 시작해도 다시 생성되지 않습니다. 먼저 기본 사이트의 patroni['replication_slots'] 설정 으로 구성해야 합니다. 슬롯을 더 이상 사용하지 않는다면(예를 들어 Geo를 더 이상 활성화하지 않는 경우) 해당 Geo 사이트를 제거하는 단계 를 따릅니다. 메시지: WARNING: oldest xmin is far in the past 및 pg_wal 크기 증가 # 복제 슬롯이 비활성 상태이면 해당 슬롯의 pg_wal 로그가 영구적으로 (또는 슬롯이 다시 활성화될 때까지) 보존됩니다. 이로 인해 디스크 사용량이 계속 증가하고 PostgreSQL 로그 에 다음 메시지가 반복해서 나타납니다. WARNING: oldest xmin is far in the past HINT: Close open transactions soon to avoid wraparound problems. You might also need to commit or roll back old prepared transactions, or drop st