HQbird Replication
HQbird Enterprise의 네이티브 마스터-슬레이브 복제: DML 및 DDL, 트리거 불필요, 복제 테이블에 고유 키 또는 기본 키. 100% Firebird 2.5-5.0 호환 - 백업/복원 없이 바이너리 전환 가능. 라이선스 1개는 마스터 1개와 복제본 1개를 포함하며, 추가 복제본은 별도 판매됩니다.
비동기 vs 동기
비동기가 일반적으로 올바른 프로덕션 선택입니다.
비동기(권장)
마스터는 커밋된 변경 사항을 세그먼트 파일에 저널링하고, 복제본은 백그라운드에서 이를 가져와 적용합니다. 기본 플러시는 90초입니다(종종 15-30초로 설정). 복제본은 온라인으로 재생성할 수 있으며, 마스터를 중지할 필요가 없습니다. 클라우드 또는 고지연 링크에 적합합니다. 부하가 높으면 지연이 늘어날 수 있습니다.
동기
마스터는 커밋된 변경 사항을 복제본에 직접 기록합니다. 지연 약 1-2초, 안정적인 ~1Gbps 경로가 필요합니다. 복제본은 읽기 전용입니다(주의 사항 있음). 복제본 재생성에는 마스터 중지가 필요합니다. 사용자 지정 장애 조치(3개 이상 노드), 읽기 부하 분산 또는 비동기와 혼합하여 사용합니다.
설치
마스터와 복제본에 Firebird가 포함된 HQbird Server를 설치합니다. Windows: HQbirdServer2024.exe (2.5-5.0). 관리 도구는 복제에 선택 사항입니다. Linux: 설치 가이드. 평가판 또는 정식 라이선스로 등록합니다. 사용자 가이드 §2는 서버 설정을 다룹니다.
Firebird 2.5: HQbird는 SuperClassic을 설치합니다. 데이터베이스 헤더에 큰 페이지 버퍼 수가 있으면 성능이 저하될 수 있습니다. 버퍼를 0으로 설정하여 firebird.conf가 적용되도록 합니다:
gfix -buff 0 -user SYSDBA -pass masterkey disk:\path\database.fdb
단계 - 비동기 복제
- 데이터베이스를 마스터로 구성합니다.
- 복제본 파일을 생성합니다(
nbackup또는 "복제 데이터베이스 재초기화"). - 복제 서버를 구성합니다.
1단계 - 마스터
http://127.0.0.1:8082를 엽니다(포트는 구성 가능). admin / 강력한 비밀번호로 로그인합니다. Active server 위젯에 Firebird 2.5/3.0/4.0/5.0 HQbird가 표시되는지 확인합니다.
데이터베이스 추가: 닉네임과 파일 경로(별칭 아님) - 별칭은 복제되지 않습니다.
데이터베이스 헤더 아이콘에서 복제를 엽니다. 마스터 → 비동기 → 저장을 선택합니다. 첫 연결 시 매개변수가 로드되도록 Firebird(또는 모든 Classic 연결)를 다시 시작합니다.
- 로그 디렉터리 - 운영 세그먼트, 기본값
${db.default-directory}\ReplicationLog. 엔진 관리 대상이므로 그대로 둡니다. - 로그 아카이브 디렉터리 - 보관된 세그먼트, 기본값은 데이터베이스 옆의
${db.path}.LogArch입니다. - 로그 아카이브 명령 재정의 - 비워 둡니다.
- 커밋된 데이터 강제 플러시 - 기본 90초.
쓰기 직후 로그 디렉터리에 회전 파일이 표시되고, 커밋/시간 초과 후 보관된 세그먼트가 표시됩니다. 운영 세그먼트는 건드리지 마십시오. 아카이브를 복제본으로 복사: 네트워크 공유 또는 FTP/SSH.
2단계 - 초기 복제본 파일
HQbird 2018 R2부터 복제 데이터베이스 재초기화는 마스터 옆에 employee30.fdb.17-Apr-2018_142507.4replica와 같은 이름의 복사본을 생성합니다. 또는 마스터를 중지하지 않고 nbackup을 사용할 수 있습니다.
3단계 - 복제 서버
복제본에 복제 GUID가 생성된 후에 FBDataGuard에 복제본을 등록합니다. 필수 설정은 보관된 세그먼트의 폴더입니다. 저장 후 Firebird를 다시 시작합니다. 기본값은 복제본 옆의 폴더에서 가져오며, 처리된 세그먼트는 삭제됩니다. 한 폴더에 서로 다른 데이터베이스의 아카이브를 혼합하지 마십시오.
단계 - 동기식 복제
- Firebird를 중지합니다.
- 마스터 파일을 복사하고, 복제 모드로 전환한 다음, 복제 서버로 복사합니다.
- FBDataGuard에서 복제 서버를 구성합니다.
- 마스터 보다 먼저 복제 서버를 시작합니다.
- 마스터를 구성한 다음 마스터를 시작합니다.
비동기식보다 다운타임이 더 큽니다: 마스터가 시작되기 전에 복제 서버가 온라인 상태여야 합니다. 원격 복제 서버 예시: 서버 replicaserver, 경로 /data/test2.fdb. 복제 서버에서는 해당 복사본 외에 gfix -replica {master-guid}만 실행하면 충분합니다.
프로덕션 시스템에서 테스트
복제 오류가 발생하면 복제가 꺼지고 마스터가 계속 서비스를 제공하도록 disable_on_error를 true로 설정합니다. 오류를 수정한 후 깨끗한 로그에서 다시 초기화합니다. 오류 및 경고를 위해 FBDataGuard에서 Replication log 작업을 활성화합니다.
nbackup으로 복제본 만들기
마스터를 중지하지 않고 비동기식(및 추가 복제본)에 대해 온라인으로 작동합니다. 또는 Firebird를 중지하고 파일을 복사합니다.
nbackup -l database_path_name -user SYSDBA -pass masterkey
copy database_path_name replica_path_name
nbackup -n database_path_name -user SYSDBA -pass masterkey
nbackup -f replica_path_name
gfix replica_path_name -replica {DATABASEGUID} -user SYSDBA -pass masterkey
DATABASEGUID는 gstat -h에서 얻은 마스터의 고유 ID입니다. 누락된 경우 HQbird의 Firebird 바이너리로 한 번 연결한 후 gstat -h를 다시 실행합니다.
gfix disk:\path\mydatabase.fdb -replica {guid} -user SYSDBA -pass masterkey
gfix disk:\path\mydatabase.fdb -replica {} -user SYSDBA -pass masterkey
빈 {}는 파일을 일반(읽기-쓰기) 모드로 되돌립니다. 복제 서버에서는 읽기 전용 작업(SELECT)을 실행할 수 있습니다. 데이터나 메타데이터는 변경하지 마십시오.