데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      MariaDB, 바이너리로그 관리에 대해서 소개합니다.(feat. bin log)

      매직 21.09.15
      13,508 4 0

      블로그 목적

      • MariaDB 로그 관련 바이너리로그(binary log)관리에 대해서 공부및 정리후 나만의 노하우와 지식을 공유한다.

      ​

      블로그 요약

      • MariaDB bin log 의 주기를 확인하는 방법에 대해서 알아본다.
      • MariaDB bin log 의 주기를 세팅하는 방법에 대해서 알아본다.
      • MariaDB bin log를 삭제하는 방법에 대해서 알아본다.

       

      블로그 상세 내용

      우선, 바이너리로그에 대해서 간단히 알아보면 아래와 같습니다.

      • MariaDB 의 바이너리로그의 내용및 활용은 아래와 같습니다.
        • MariaDB는 바이너리로그라는 파일에 DB 에서 발생한 변경내역을 저장한다.
        • 해당 로그의 역할및 활용에는 여러가지가 존재하지만 가장 중요한 부분은 바로 복제/복구의 활용이다.
      • 아무튼, 해당 블로그를 작성한 이유는 제가 담당하던 서비스가 MariaDB를 사용하는데요.
      • 금일 해당 MariaDB 서버에서 디스크가 모자란다는 알람이 와서 확인해보니, 해당 바이너리 로그가 관리없이 많이 쌓여있음을 확인할 수 있었습니다.
      • 그래서 해당 블로그에서 말하고 싶은 내용은 해당 바이너리 로그(bin log) 를 어떻게 관리및 삭제하는지에 대한 부분을 말씀드리려고 합니다.

       

      ​먼저, MariaDB bin log 의 주기를 확인하는 방법에 대해서 알아보겠습니다.

      • 아래와 같이 해당 MariaDB 이 설치된 디렉토리를 확인해보니 bin log 가 많이 쌓여있음을 확인할 수 있었습니다.

      • 아무튼, 우선 root 계정으로 접속해서 bin 로그를 확인해보겠습니다.

      root@magic01:/># mysql -u root -p****
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 2175974
      Server version: 5.5.56-MariaDB MariaDB Server
      
      Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
      
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
      MariaDB [(none)]> show binary logs;
      +------------------+------------+
      | Log_name         | File_size  |
      +------------------+------------+
      | mysql-bin.001053 | 1073742172 |
      | mysql-bin.001054 | 1075783074 |
      | mysql-bin.001055 | 1073743192 |
      | mysql-bin.001056 | 1073742537 |
      | mysql-bin.001057 | 1073745245 |
      | mysql-bin.001058 |  142485535 |
      | mysql-bin.001059 | 1073742579 |
      | mysql-bin.001060 | 1073741946 |
      | mysql-bin.001061 | 1073742045 |
      | mysql-bin.001062 | 1073742518 |
      | mysql-bin.001063 | 1073744313 |
      | mysql-bin.001064 | 1073742239 |
      | mysql-bin.001065 | 1073742997 |
      | mysql-bin.001066 | 1073742046 |
      | mysql-bin.001067 | 1073745739 |
      | mysql-bin.001068 | 1073744518 |
      | mysql-bin.001069 | 1073745517 |
      | mysql-bin.001070 | 1073742263 |
      | mysql-bin.001071 | 1073742406 |
      | mysql-bin.001072 | 1073742386 |
      | mysql-bin.001073 | 1073742055 |
      | mysql-bin.001074 | 1073742081 |
      | mysql-bin.001075 | 1073744681 |
      | mysql-bin.001076 | 1073747052 |
      | mysql-bin.001077 | 1073743710 |
      | mysql-bin.001078 | 1073742244 |
      | mysql-bin.001079 | 1073742915 |
      | mysql-bin.001080 | 1073741935 |
      | mysql-bin.001081 | 1073742697 |
      | mysql-bin.001082 | 1073743203 |
      | mysql-bin.001083 | 1073742068 |
      | mysql-bin.001084 | 1073742451 |
      | mysql-bin.001085 | 1073742550 |
      | mysql-bin.001086 | 1073746090 |
      | mysql-bin.001087 | 1073742003 |
      | mysql-bin.001088 |  423993152 |
      +------------------+------------+
      36 rows in set (0.02 sec)
      • 그럼, 해당 bin 로그의 삭제주기를 확인해보겠습니다.
      MariaDB [(none)]> show variables like "%expire_logs_days%"
          -> ;
      +------------------+-------+
      | Variable_name    | Value |
      +------------------+-------+
      | expire_logs_days | 0     |
      +------------------+-------+
      1 row in set (0.00 sec)
      
      • bin 로그의 삭제주기는 MariaDB 의 환경설정중 expire_logs_days 를 확인하면 됩니다.

        • 확인결과 현재는 기본값인 0 으로 세팅되어 있는것을 확인할 수 있었습니다.

        • 참고로 0의 의미는 "bin log 를 삭제하지 않는다" 입니다.

          • 결과적으로 expire_logs_days 가 세팅되어 있지 않아서 bin log 가 쌓이고 있었던거죠..

      • 그리고, 환경설정을 잠시 보자면, 아래 파일을 확인하면 됩니다.

      • /etc/my.cnf

      root@magic01:/etc># ll my.cnf
      -rw-r--r-- 1 root root 20751  8월 26 14:12 my.cnf
      root@magic01:/etc># cat my.cnf | more
      #BEGIN CONFIG INFO
      #DESCR: 4GB RAM, InnoDB only, ACID, few connections, heavy queries
      #TYPE: SYSTEM
      #END CONFIG INFO
      
      #
      # This is a MariaDB example config file for systems with 4GB of memory
      # running mostly MariaDB using InnoDB only tables and performing complex
      # queries with few connections.
      # 
      # MariaDB programs look for option files in a set of
      # locations which depend on the deployment platform.
      # You can copy this option file to one of those
      # locations. For information about these locations, do:
      # 'my_print_defaults --help' and see what is printed under
      # Default options are read from the following files in the given order:
      # More information at: http://dev.mysql.com/doc/mysql/en/option-files.html
      #
      # In this file, you can use all long options that a program supports.
      # If you want to know which options a program supports, run the program
      # with the "--help" option.
      #
      # More detailed information about the individual options can also be
      • 아래와 같이 설정을 하면 grep 으로 확인할 수 있습니다.
      root@magic01:/etc># cat my.cnf | grep expire
      expire_logs_days=7
      root@magic01:/etc># 
      • 물론, 해당 환경설정파일에 저장을 하면, MariaDB 를 재기동 할때 적용이 됩니다.

       

      다음으로 MariaDB bin log 의 주기를 세팅하는 방법에 대해서 알아 보겠습니다.

      • 위와 같이 환경설정파일에서 환경변수를 입력시키면, 실시간적용이 안되기때문에 실시간으로 적용하는 방법을 말씀드리겠습니다.

        • 아래와 같이 세팅하시면 됩니다.

      MariaDB [(none)]> set global expire_logs_days=7;
      Query OK, 0 rows affected (0.02 sec)
      • 그럼, 정상적으로 세팅되었는지 확인해볼까요?

      • show variables like 명령을 사용하면 됩니다.

      MariaDB [(none)]> show variables like "%expire_logs_days%";
      +------------------+-------+
      | Variable_name    | Value |
      +------------------+-------+
      | expire_logs_days | 7     |
      +------------------+-------+
      1 row in set (0.00 sec)
      • 위와 같이 정상적으로 7일로 세팅되었음을 확인할 수 있습니다.

       

      마지막으로 MariaDB bin log 를 삭제하는 방법에 대해서 알아보겠습니다.

      • MariaDB bin log 를 삭제하려면,

      • 아래와 같이 purge binary logs to 명령어를 사용하면 됩니다.

      MariaDB [(none)]> purge binary logs to 'mysql-bin.001080';
      Query OK, 0 rows affected (1.13 sec)
      • 그럼 결과를 조회해 보면 아래와 같이 삭제되었음을 확인할 수 있습니다.

      • AS-IS

      root@magic01:/># mysql -u root -p****
      Welcome to the MariaDB monitor.  Commands end with ; or \g.
      Your MariaDB connection id is 2175974
      Server version: 5.5.56-MariaDB MariaDB Server
      
      Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
      
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
      MariaDB [(none)]> show binary logs;
      +------------------+------------+
      | Log_name         | File_size  |
      +------------------+------------+
      | mysql-bin.001053 | 1073742172 |
      | mysql-bin.001054 | 1075783074 |
      | mysql-bin.001055 | 1073743192 |
      | mysql-bin.001056 | 1073742537 |
      | mysql-bin.001057 | 1073745245 |
      | mysql-bin.001058 |  142485535 |
      | mysql-bin.001059 | 1073742579 |
      | mysql-bin.001060 | 1073741946 |
      | mysql-bin.001061 | 1073742045 |
      | mysql-bin.001062 | 1073742518 |
      | mysql-bin.001063 | 1073744313 |
      | mysql-bin.001064 | 1073742239 |
      | mysql-bin.001065 | 1073742997 |
      | mysql-bin.001066 | 1073742046 |
      | mysql-bin.001067 | 1073745739 |
      | mysql-bin.001068 | 1073744518 |
      | mysql-bin.001069 | 1073745517 |
      | mysql-bin.001070 | 1073742263 |
      | mysql-bin.001071 | 1073742406 |
      | mysql-bin.001072 | 1073742386 |
      | mysql-bin.001073 | 1073742055 |
      | mysql-bin.001074 | 1073742081 |
      | mysql-bin.001075 | 1073744681 |
      | mysql-bin.001076 | 1073747052 |
      | mysql-bin.001077 | 1073743710 |
      | mysql-bin.001078 | 1073742244 |
      | mysql-bin.001079 | 1073742915 |
      | mysql-bin.001080 | 1073741935 |
      | mysql-bin.001081 | 1073742697 |
      | mysql-bin.001082 | 1073743203 |
      | mysql-bin.001083 | 1073742068 |
      | mysql-bin.001084 | 1073742451 |
      | mysql-bin.001085 | 1073742550 |
      | mysql-bin.001086 | 1073746090 |
      | mysql-bin.001087 | 1073742003 |
      | mysql-bin.001088 |  423993152 |
      +------------------+------------+
      36 rows in set (0.02 sec)
      • TO-BE
      MariaDB [(none)]> show binary logs;
      +------------------+------------+
      | Log_name         | File_size  |
      +------------------+------------+
      | mysql-bin.001080 | 1073741935 |
      | mysql-bin.001081 | 1073742697 |
      | mysql-bin.001082 | 1073743203 |
      | mysql-bin.001083 | 1073742068 |
      | mysql-bin.001084 | 1073742451 |
      | mysql-bin.001085 | 1073742550 |
      | mysql-bin.001086 | 1073746090 |
      | mysql-bin.001087 | 1073742003 |
      | mysql-bin.001088 |  433079778 |
      +------------------+------------+
      9 rows in set (0.00 sec)
      
      MariaDB [(none)]>

       

       

      결론

      • 하나, MariaDB는 바이너리로그라는 파일에 DB 에서 발생한 변경내역을 저장한다.
        • 해당 로그의 역할및 활용에는 여러가지가 존재하지만 가장 중요한 부분은 바로 복제/복구의 활용이다.
      • 둘, MariaDB 의 환경설정중 expire_logs_days 를 변경함으로써 삭제주기를 조절할 수 있다.
      • 셋, MariaDB bin log 를 삭제하려면, purge binary logs to 명령어를 사용하면됨.
      • 오늘도 마지막까지 제 글을 끝까지 읽어주셔서 진심으로 감사드리고, 제 글이 조금이라도 여러분의 각자의 삶을 살아가시는데 도움이 되셨길 기원합니다.
      • 앞으로도 더욱 좋은 블로그를 남기는 제가 되도록 노력하겠습니다.

       


       

      나의 목표 및 다짐을 항상 내곁에 두기

      • 목표
        • 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
        • 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기
        • 나는 블로그 생태계에서 IT 테크관련 파워블로거가 반드시 된다!
      • 목표를 이루기 위한 실천방안
        • 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.
        • 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.
          • "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."
        • 기기일약 불능십보(騏驥一躍 不能十步) / 노마십가 공재불사(駑馬十駕 功在不舍)
          • 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.
        • 모든 실수에는 마술이 숨어 있다. 따라서 나는 실수하면 실수할수록, 그런 실수에서 더 많이 배울수록 삶에서 더 많은 마술을 갖는다.

      ​

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      매직 님의 최신 블로그

      더보기
      동영상 기고하기