개요
- 서버가 예기치 않게 정지·재기동되는 상황에 대비하여, 이중화 환경에서 Logpresso와 MariaDB(Galera Cluster)의 상황별 기동·정지 절차를 정리한 가이드입니다.
- MariaDB(Galera)는 한 대만 재기동되는 경우 일반 기동으로 클러스터에 재합류하지만, 두 대가 동시에 정지되는 경우 Galera 구조상 수동 부트스트랩이 반드시 필요합니다.
주의 사항
- 전체 정지 후 기동 시 반드시 seqno가 가장 높은(마지막까지 살아 있던) 노드에서 부트스트랩해야 합니다. 낮은 노드에서 부트스트랩하면 최신 트랜잭션이 유실됩니다.
- Logpresso 기동은 항상 동일한 OS 계정으로 수행합니다. 기동 계정이 바뀌면 파일 소유권 문제로 Permission denied가 발생할 수 있습니다.
- MariaDB 노드 간 3306 / 4444 / 4567 / 4568 포트 통신이 가능해야 합니다. (SST/IST 동기화용)
적용 대상
- 제품: Logpresso Sonar (SNR)
- 대상 환경:
- 분석서버 2식 이중화 (Active / Standby)
- MariaDB Galera Cluster 2노드
- systemd 기반 Linux (RHEL, Rocky 등)
기준 경로
-
본 가이드의 명령어는 아래 경로를 기준으로 작성되었습니다.
구분 경로 패키지(package) /opt/logpressoMariaDB 데이터(grastate.dat) /var/lib/mysql
상황별 대응 요약
| 상황 | 대응 |
|---|---|
| 한 대만 재기동 | 재기동된 노드에서 MariaDB 일반 기동 → 동기화 확인 → Logpresso 기동 |
| 계획된 전체 정지·기동 | 정지: Standby → Active 순 / 기동: 마지막 정지 노드에서 부트스트랩 |
| 두 대 동시 비정상 정지 (정전 등) | seqno가 높은 노드 확인 후 해당 노드에서 부트스트랩 |
- 각 상황별 상세 절차는 아래 상세 절차 1) ~ 3) 을 참고합니다.
상세 절차
1) 한 대만 재기동된 경우
반대편 노드가 정상 동작 중인 경우입니다. 재기동된 노드에서만 아래 순서로 기동하며, 이때 부트스트랩(
galera_new_cluster)이 아닌 일반 기동을 사용합니다.
- MariaDB 기동
- 살아 있는 노드에 자동으로 합류(IST/SST)합니다.
systemctl start mariadb
- 클러스터 동기화 상태 확인
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" # 결과: 2
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_local_state_comment'" # 결과: Synced
- Logpresso 기동
cd /opt/logpresso
./logpresso start
2) 계획된 전체 정지·기동 절차
작업 등으로 두 노드를 모두 정지해야 하는 경우입니다. 마지막에 정지한 노드를 반드시 기록합니다.
[정지 순서]
- Logpresso 정지 (양 노드)
cd /opt/logpresso
./logpresso stop
- MariaDB 정지 (Standby 먼저 → Active 마지막)
systemctl stop mariadb
[기동 순서]
- 마지막에 정지한 노드에서 부트스트랩
grastate.dat에서safe_to_bootstrap: 1확인 후 기동합니다.
cat /var/lib/mysql/grastate.dat
galera_new_cluster
- 반대 노드 MariaDB 기동
systemctl start mariadb
- 클러스터 상태 확인 후 Logpresso 기동 (양 노드, 순서 무관)
cd /opt/logpresso
./logpresso start
3) 두 대가 동시에 비정상 정지된 경우 (수동 복구 필수)
정전 등으로 양 노드가 동시에 정지되면 양쪽 모두
safe_to_bootstrap: 0상태가 되어 일반 기동이 거부됩니다. 아래 절차로 수동 복구합니다.
- 양 노드에서 grastate.dat 확인
- 양 노드 모두
seqno가 정상 기록되어 있으면 값을 비교해 높은 노드를 확인하고, 2번은 건너뜁니다.
cat /var/lib/mysql/grastate.dat
- 마지막 커밋 위치(seqno) 확인 — seqno가
-1인 경우에만 수행 (해당 노드 각각)
- 비정상 정지된 노드는
seqno가-1로 남으므로, MariaDB에 기본 포함된galera_recovery스크립트로 InnoDB 로그에서 마지막 커밋 위치를 확인합니다. (DB가 기동되지는 않습니다.)
galera_recovery
# 출력 예시 → Recovered position: <uuid>:<seqno>
- 스크립트가 없는 환경(바이너리 설치 등)에서는
mariadbd --wsrep-recover실행 후 로그의Recovered position라인을 확인합니다.
- seqno가 더 높은 노드에서 부트스트랩
- 해당 노드의
grastate.dat에서safe_to_bootstrap값을 1로 수정 후 기동합니다.
vi /var/lib/mysql/grastate.dat
# safe_to_bootstrap: 0 → 1
galera_new_cluster
- 나머지 노드 기동
- 전체 동기화(SST)가 발생할 수 있으며, 데이터 용량에 따라 시간이 소요될 수 있습니다.
systemctl start mariadb
- 클러스터 상태 확인 후 Logpresso 기동 (양 노드)
cd /opt/logpresso
./logpresso start
검증
- MariaDB 클러스터 상태 확인
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" # 결과: 2
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_local_state_comment'" # 결과: Synced
- Logpresso 프로세스 확인
ps -ef | grep araqne
- 기동 로그 확인
tail -f /opt/logpresso/log/araqne.log
- 웹 콘솔 접속 및 로그 수집·적재 현황 확인