자동 교체 방식은 수동 교체 방식에 비해 좀 더 빠르고 편리하게 슬레이브 데이터베이스를 마스터 데이터베이스로 교체할 수 있는 방법이다. 교체 작업은 repl_check_sync와 repl_change_master 유틸리티를 사용하여 진행한다. 슬레이브 데이터베이스의 복제 파라미터 옵션 중 for_recovery가 'Y'로 설정된 것만 자동 교체가 가능하다.
슬레이브 데이터베이스를 만들 때 모든 클래스의 소유권이 복제 사용자로 변경된다. 따라서 for_recovery에서도 권한 변경은 복제되지 않고, 사용자 추가 및 삭제 그리고 그룹 추가 및 삭제 등만 복제된다. 슬레이브 데이터베이스를 마스터 데이터베이스로 교체한 후 사용자별 권한은 DBA가 설정해야 한다. 트리거 역시 일괄적으로 슬레이브 데이터베이스에서 비활성화 되어 있으므로, 마스터 데이터베이스로 교체 후 DBA가 활성화시켜 주어야 한다.
마스터 데이터베이스에 장애가 발생하면 슬레이브 데이터베이스 중 하나를 마스터 데이터베이스로 교체해야 한다. 이 때 가장 우선 해야 할 일은 모든 슬레이브 데이터베이스 간의 동기화 상태와 동기화가 완료되었는지를 점검하는 것이다. repl_check_sync 유틸리티는 현재 구성된 슬레이브 데이터베이스의 동기화 상태를 점검한다.
repl_check_sync dist_db_name.config [–p passwd]
192.168.2.100 5627
192.168.2.200 5627
실행 결과는 슬레이브 데이터베이스별로 최종 반영된 로그 번호를 출력한다.
결과:
agent_ip status log number last_updated_time
1.1.1.1
A 1234/110
15:30:30
1.1.1.2
A
1234/123 15:29:30
1.1.1.3
A
1234/123 15:28:30
1.1.1.4
A
1234/123 15:27:30
1.1.1.5
A
1234/123 15:26:30
출력 결과 중 status는 다음과 같은 정보로 구성된다.
A : Active(복제 진행 중)
F : First(처음 복제 시작)
I : Idle(휴식 - 복제 내용 없음)
repl_check_sync 유틸리티를 통해 최종 동기화 상태를 확인한 후 슬레이브 데이터베이스를 마스터 데이터베이스로 교체하기 위해서 트리거, 계정 정보 등을 원본과 동일하게 변경해야 한다. repl_change_master 유틸리티는 배포 데이터베이스의 마스터 데이터베이스에 대한 정보를 기준으로 지정된 슬레이브 데이터베이스를 마스터 데이터베이스로 변환시킨다.
repl_change_master servers_info_file
distdb1 192.168.2.100
admin
distdb2 192.168.2.200
admin