ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
Designed by Tistory.