* 개요
: 마리아 DB의 레플리케이션 상태를 모니터링 하기 위한 쉘 프로그램으로, 커스터마이징을 통해 필요한 지표를 모니터링 할 수 있다.
* 소스코드
: 소스코드 내 개행문자(^M)는 [Ctrl + V --> 엔터키] 로 입력 한다. 이거 몰라서 한참 고생했다. ㅠ_ ㅠ
#!/bin/bash
LOGFILE='repl_log_'$(date +%Y%m%d%H%M%S)'.log'
## MySOL로 접속하고, 표준 출력 내용을 로그 파일로 저장하도록 파이프로 전달한다.
docker exec -it maria_higenie mysql -uroot -pP@ssw0rd -e "show slave status \G" > $LOGFILE
## IO 스레드 상태를 찾아 IO_THREAD 변수로 저장한다.
IO_THREAD=`/bin/cat $LOGFILE | /bin/grep 'Slave_IO_Running:' | awk -F ':' '{print $2}' | sed 's/ //g' | sed 's/^M//g'`
# slL 스레드 상태를 찾아 SOL_THREAD 변수로 저장한다.
SQL_THREAD=`/bin/cat $LOGFILE | /bin/grep 'Slave_SQL_Running:' | awk -F ':' '{print $2}' | sed 's/ //g' | sed 's/^M//g'`
## Seconds_Behind_Master 항목을 SEC_BEHIND_MASTER 변수로 저장한다.
SEC_BEHIND_MASTER=`/bin/cat $LOGFILE | /bin/grep 'Seconds_Behind_Master:' | awk -F ':' '{print $2}' | sed 's/ //g' | sed 's/^M//g'`
##저장한 각 변수의 값이 Ves일 경우 상태 값을 "D'으로, Yes가 아닐 경우 'X'로 저장한다.
if [ $IO_THREAD = "Yes" ]
then
IO_THREAD_STATUS='O'
else
IO_THREAD_STATUS='X'
fi
if [ $SQL_THREAD = "Yes" ]
then
SQL_THREAD_STATUS='O'
else
SQL_THREAD_STATUS='X'
fi
if [ $SEC_BEHIND_MASTER -eq 0 ]
then
SEC_BEHIND_MASTER_STATUS='O'
elif [ $SEC_BEHIND_MASTER -gt 0 ]
then
SEC_BEHIND_MASTER STATUS='D'
else
SEC_BEHIND MASTER STATUS='X'
fi
# 최종 결과를 표준 출력으로 출력한다.
echo "Replication Status : $IO_THREAD_STATUS", "$SQL_THREAD_STATUS", "$SEC_BEHIND_MASTER_STATUS"
'Database' 카테고리의 다른 글
[MariaDB] General log 설정 (0) | 2023.10.23 |
---|---|
[MariaDB] Event Scheduler (1) | 2023.04.19 |
[MSSQL] 백업 및 로그 파일 축소 (0) | 2023.02.28 |
[MariaDB] Slow query 수집 (0) | 2023.01.27 |
[MariaDB] MariaDB sqldump로 배치(Cron) 만들기 (0) | 2023.01.26 |