Overview
이 페이지는 Bucardo가 무엇이고 어떻게 작동하는지 간략하게 설명한다. 자세한 내용은 Bucardo 페이지와 Wiki의 나머지 페이지를 참조하고 자주 묻는 질문 페이지를 확인 하십시오.
Bucardo는 원격 데이터베이스에 연결하고 데이터를 앞뒤로 복사함으로써 NOTIFY 요청을 듣고 그것을 수행하는 Perl 데몬이다. 데몬이 필요로 하는 모든 특정 정보는 복제에 관련된 모든 데이터베이스 목록 및 데이터베이스 접근 방법, 복제할 모든 테이블 및 각 데이터 복제 방법을 포함하여 메인 Bucardo 데이터베이스에 저장된다.
Bucardo를 실행하는 첫 번째 단계는 두 개 이상의 데이터베이스를 메인 Bucardo 데이터베이스에 추가하는 것이다. 이 작업이 완료 되면, 복제될 테이블에 대한 정보와 모든 테이블 그룹이 추가 된다. 그런 다음 동기화가 추가된다. 동기화는 한 서버에서 다른 서버 또는 서버 그룹으로 특정 테이블 세트를 복사하여 복제 작업 이름을 지정한다.
일단 Bucardo가 세팅되면, 트리거는 모든 관심있는 테이블에 어떤 행이 변경 되었는지에 대한 정보를 저장하기 시작한다.
교체 동기화(multi-master)의 경우, 프로세스는 다음과 같다.
1. 테이블이 변경되고 bucardo_delta 테이블에 기록된다.
2. 메인 Bucardo 데몬에게 테이블이 변경되었음을 알려준다.
3. 데몬은 컨트롤러에게 동기화를 알려주고 listening로 돌아간다.
4. 컨트롤러는 복제를 처리하기 위해 "kid"를 생성하거나 기존에 있는 것에 신호를 보낸다.
5. kid는 새로운 트랜잭션을 시작하고 해당 테이블에 대한 트리거와 규칙을 비활성 한다.
6. 마지막 복제 이후 변경된 행이 목록을 수집한 다음, 이 둘을 비교하여 수행해야할 작업을 파악한다.
7. 충돌이 발생하면, 표준 충돌 처리기 또는 테이블당 설정된 사용자 정의 충돌기가 실행되어 항목을 정렬한다.
8. 트리거와 규칙이 다시 활성화되고 트랜잭션이 처리된다.
9. 트랜잭션이 실패하면, 사용자 예외 처리기가 실행된다.
10. 자식은 끝났다고 컨트롤러에게 신호를 보낸다.
'DataBase > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] DB 이중화 - Pgpool -II - 설치 (0) | 2019.01.10 |
---|---|
[PostgreSQL] DB 이중화 - Pgpool -II 란? (0) | 2019.01.10 |
[PostgreSQL] DB 이중화 - Bucardo(비동기 방식) Installation (0) | 2019.01.08 |
[PostgreSQL] DB 이중화 - Bucardo(비동기 방식) FAQ (0) | 2019.01.08 |
[PostgreSQL] DB 이중화 - BDR 정리 (0) | 2019.01.07 |