-
[MariaDB] MariaDB 레플리케이션 모니터링 쉘프로그램 (on Docker)Database 2023. 3. 8. 14:15
* 개요
: 마리아 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