MySQL 시리즈 의 11 로그 기록

시리즈 강좌
MySQL 시리즈 의 시작 MySQL 관계 형 데이터베이스 기초 개념
MySQL 시리즈 중 하나 인 MariaDB-server 설치
MySQL 시리즈 의 두 번 째 인 스 턴 스 설정
MySQL 시리즈 의 3 가지 기초 편
MySQL 시리즈 의 4 SQL 문법
MySQL 시리즈 의 다섯 가지 보기,저장 함수,저장 과정,트리거
MySQL 시리즈 의 6 사용자 및 권한 부여
MySQL 시리즈 7 MySQL 저장 엔진
MySQL 시리즈 8 MySQL 서버 변수
MySQL 시리즈 의 9 my sql 캐 시 및 색인 조회
MySQL 시리즈 의 10 MySQL 사무 격 리 병행 제어 실현
MySQL 시리즈 의 11 로그 기록
MySQL 시리즈 의 12 백업 및 복구
MySQL 시리즈 13 MySQL 복사
MySQL 시리즈 의 14 MySQL 의 높 은 사용 가능 한 구현
MySQL 시리즈 의 15 MySQL 상용 설정 및 성능 압력 테스트
SQL 명령 기록~/.mysql_history  my sql 에서 실 행 된 명령 의 역 사 를 기록 하 였 습 니 다.
트 랜 잭 션 로그
transaction log:사무 형 저장 엔진 자체 관리 및 사용
트 랜 잭 션 을 제출 한 후 디스크 에 저장 되 지 않 은 상태 에서 트 랜 잭 션 로그 에 기록 합 니 다.이 럴 때 시스템 이 끊 기 면 다시 시작 하면 제출 한 트 랜 잭 션 을 자동 으로 다시 시작 합 니 다(redo log).트 랜 잭 션 이 제출 되 지 않 은 상태 에서 전기 가 끊 기 면 재 부팅 후 취소 작업 을 수행 합 니 다(undo log)
상관 변수

MariaDB [school]> SHOW VARIABLES LIKE 'innodb_log%';
+---------------------------+------------+
| Variable_name             | Value      |
+---------------------------+------------+
| innodb_log_block_size     | 512        | --    
| innodb_log_buffer_size    | 8388608    | --     
| innodb_log_file_size      | 1073741824 | --         
| innodb_log_files_in_group | 3          | --        ,        
| innodb_log_group_home_dir | ./         | --       ,       
+---------------------------+------------+
innodb_log_file_size 기본 크기 는 5M,innodblog_files_in_group 개수 기본 2 개;이 두 값 을 늘 릴 것 을 강력 히 건의 합 니 다.
트 랜 잭 션 의 데이터 가 트 랜 잭 션 로그 파일 의 전체 크기 보다 크 면 ROLLBACK 을 실행 할 때 취소 할 수 있 지만 데이터 파일 이 점용 되 므 로 OPTIMIZE TABLE 명령 을 사용 하여 데이터 공간 을 방출 해 야 합 니 다.
TRUNCATE 를 사용 하여 표 기록 을 삭제 하면 사용 공간 을 줄 일 수 있 습 니 다.DELETE 명령 은 디스크 공간 을 방출 하지 않 습 니 다.방출 이 필요 하 다 면 OPTIMIZE 명령 을 사용 하여 조각 을 새로 정리 해서 공간 을 방출 합 니 다.
메모:innodb 수정log_file_size 시 원래 로그 파일 을 삭제 해 야 합 니 다.
오류 로그
오류 로그 에 기 록 된 항목:
  • mysqld 시작 및 종료 과정 에서 출력 된 이벤트 정보
  • my sqld 실행 중 발생 하 는 오류 정보
  • 이벤트 scheduler 가 이 벤트 를 실행 할 때 발생 하 는 로그 정보
  • 메 인 복사 구조 에서 서버 에서 서버 스 레 드 를 시작 할 때 발생 하 는 정보
  • 상관 변수
    
    MariaDB [school]> SHOW GLOBAL VARIABLES LIKE 'log_error';  #         
    +---------------+------------------------------+
    | Variable_name | Value                        |
    +---------------+------------------------------+
    | log_error     | /var/log/mariadb/mariadb.log |
    +---------------+------------------------------+
    log_warnings=1|0 기본 값 1(예):오류 로그 파일 에 경고 메 시 지 를 기록 할 지 여부
    조회 로그
    사용자 의 작업 로 그 를 기록 합 니 다.일반적으로 사용 하 는 것 을 권장 하지 않 습 니 다.
    
    MariaDB [school]> SHOW VARIABLES LIKE 'general_log%';
    +------------------+-------------+
    | Variable_name    | Value       |
    +------------------+-------------+
    | general_log      | OFF         | --         ,    
    | general_log_file | centos7.log | --           ,/var/lib/mysql/HOSTNAME.log
    +------------------+-------------+
    
    MariaDB [school]> SHOW VARIABLES LIKE 'log_output';  
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_output    | FILE  | --          ,(TABLE|FILE|NONE)
    +---------------+-------+
    mysql.general_log:표 는 조회 로 그 를 저장 합 니 다.전 제 는 표 로 저장 합 니 다.
    5.느 린 조회 로그
    조회 시간 이 지정 한 시간 을 초과 한 동작 을 기록 합 니 다.
    1.느 린 조회 관련 변수
    
    MariaDB [school]> SHOW VARIABLES LIKE 'slow_query%';    
    +---------------------+------------------+
    | Variable_name       | Value            |
    +---------------------+------------------+
    | slow_query_log      | OFF              | --           
    | slow_query_log_file | centos7-slow.log | --        
    +---------------------+------------------+
    MariaDB [school]> SHOW VARIABLES LIKE 'long_query_time';
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 | --       ,   ,      10         
    +-----------------+-----------+
    MariaDB [school]> SHOW VARIABLES LIKE 'log_slow%';
    +---------------------+-------+
    | Variable_name       | Value |
    +---------------------+-------+
    | log_slow_rate_limit | 1     | --         ,mariadb  
    | log_slow_verbosity  |       | --          (Query_plan,explain)
    +---------------------+-------+
    MariaDB [school]> SHOW VARIABLES LIKE 'log_queries_not_using_indexes';
    +-------------------------------+-------+
    | Variable_name                 | Value |
    +-------------------------------+-------+
    | log_queries_not_using_indexes | OFF   | --           ,          ;    ,    
    +-------------------------------+-------+
    log_slow_filter :검색 결과 에 따라 필터 링
  • admin
  • filesort
  • filesort_on_disk
  • full_join
  • full_scan
  • query_cache
  • query_cache_miss
  • tmp_table
  • tmp_table_on_disk
  • 2.보충: profiling 검색 어 를 추적 하 는 데 사용 되 는 상세 한 시간
    
    MariaDB [school]> SHOW VARIABLES LIKE 'profiling';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | profiling     | OFF   | --      ,    
    +---------------+-------+
    MariaDB [school]> SET profiling=ON;  #          
    MariaDB [school]> SHOW profiles;  #           
    +----------+------------+------------------------------------------------------------+
    | Query_ID | Duration   | Query                                                      |
    +----------+------------+------------------------------------------------------------+
    |        1 | 0.00024497 | SELECT * FROM students                                     |
    |        2 | 0.00038528 | SELECT stuid,name,age FROM students WHERE stuid = 2        |
    +----------+------------+------------------------------------------------------------+
    
    MariaDB [school]> SHOW profile FOR query 2;  #       SQL         
    +----------------------+----------+
    | Status               | Duration |
    +----------------------+----------+
    | starting             | 0.000035 |
    | Opening tables       | 0.000003 |
    | After opening tables | 0.000006 |
    | query end            | 0.000003 |
    | closing tables       | 0.000002 |
    | freeing items        | 0.000011 |
    | updating status      | 0.000006 |
    | cleaning up          | 0.000001 |
    +----------------------+----------+
    6,2 진 로그
    제출 한 트 랜 잭 션 으로 인해 데이터 가 바 뀌 거나 잠재 적 으로 데이터 가 바 뀌 는 SQL 문 구 를 기록 하고 로그 파일 의 이 벤트 를'리 셋'하여 데이터 사본 을 생 성 하 며 저장 엔진 형식 에 의존 하지 않 습 니 다.
    바 이 너 리 로 그 를 엽 니 다.기본적으로 닫 혔 습 니 다.바 이 너 리 로그 와 데 이 터 를 분리 해서 저장 합 니 다.
    기록 바 이 너 리 파일 열기 기능:my.cnf 의[my sqld]에 log_bin[=/path/somefile]을 추가 합 니 다.
    기본 바 이 너 리 로 그 는 데이터베이스 디 렉 터 리 에 있 습 니 다.mariadb-bin.000001 바 이 너 리 로그 데이터 파일 입 니 다.mariadb-bin.index 바 이 너 리 로그 인덱스 파일
    1.바 이 너 리 로 그 를 기록 하 는 세 가지 방법:
  • 문장의 기록 방식 을 바탕 으로 모든 데 이 터 를 바 꾸 는 문 구 는 하나의 문장 으로 기록 하고 공간 을 절약 하 며 시스템 은 이 모델 을 기본 으로 하지만 사용 하 는 것 을 추천 하지 않 으 면 숨겨 진 위험 이 있다
  • .
  • 줄 의 기록 방식 을 바탕 으로 모든 줄 의 변 화 는 변 경 된 문 구 를 하나의 문구 로 기록 하고 로 그 량 이 많 지만 데이터 에 대한 안전 보호 가 매우 높다
  • .
  • 혼합 모델:mixed,시스템 이 어떤 방식 으로 진행 해 야 하 는 지 스스로 판단 하도록 합 니 다
  • 
    MariaDB [(none)]> SHOW VARIABLES LIKE 'binlog_format';  
    +---------------+-----------+
    | Variable_name | Value     |
    +---------------+-----------+
    | binlog_format | STATEMENT | --     ,          
    +---------------+-----------+
    
    SET binlog_format='ROW|STATEMENT|MIXED'; --            
    2.바 이 너 리 로그 의 관련 변수
    
    MariaDB [(none)]> SHOW MASTER|BINARY LOGS; --   mariadb                 
    +--------------------+-----------+
    | Log_name           | File_size |
    +--------------------+-----------+
    | mariadb-bin.000002 |       290 |
    | mariadb-bin.000003 |       264 |
    | mariadb-bin.000004 |    529038 |
    | mariadb-bin.000005 |       245 |
    +--------------------+-----------+
    MariaDB [(none)]> SHOW MASTER STATUS; --              
    +--------------------+----------+--------------+------------------+
    | File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +--------------------+----------+--------------+------------------+
    | mariadb-bin.000005 |      245 |              |                  |
    +--------------------+----------+--------------+------------------+
    MariaDB [(none)]> SHOW BINLOG EVENTS IN 'mariadb-bin.000004' FROM 1 LIMIT 2,3\G --              
    
    MariaDB [(none)]> SHOW VARIABLES LIKE 'sql_log_bin'; --          ,  ON
    MariaDB [(none)]> SHOW VARIABLES LIKE 'log_bin'; --       ;  OFF,            ,         
    MariaDB [(none)]> SHOW VARIABLES LIKE 'max_binlog_size';
    +-----------------+------------+
    | Variable_name   | Value      |
    +-----------------+------------+
    | max_binlog_size | 1073741824 | --               ,          ,   1G
    +-----------------+------------+
    MariaDB [(none)]> SHOW VARIABLES LIKE 'sync_binlog';    
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | sync_binlog   | 0     | --                    ,  0,              
    +---------------+-------+
    MariaDB [(none)]> SHOW VARIABLES LIKE 'expire_logs_days';
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | expire_logs_days | 0     | --               。    0,      
    +------------------+-------+
    3.mysqlbinlog 명령
  • 바 이 너 리 로그 의 클 라 이언 트 명령 도구
  • --start-position=\#시작 위치 지정
  • --stop-position=\#종료 위치 지정
  • --start-datetime=(YYYY-MM-DD hh:mm:ss)시작 시간 지정
  • --stop-datetime=(YYYY-MM-DD hh:mm:ss)종료 시간 지정
  • --base64-output=decode-row
  • -v|-v|-vvv|-vvvv 상세 정보 표시
  • 
    [root@centos7 mysql]# mysqlbinlog --start-position=528864 --stop-position=529019 mariadb-bin.000004 --base64-output=decode-row -v
    # at 528864
    #180611 20:59:46 server id 1  end_log_pos 528992        Query   thread_id=29    exec_time=0     error_code=0
    use `school`/*!*/;
    SET TIMESTAMP=1528721986/*!*/;
    INSERT students(StuID,Name,Age,Gender) VALUES (26,'Tom',22,'M')  #     SQL  
    /*!*/;
    
              :180611 20:59:46
              :server id 1
           :end_log_pos 528992
         :Query
                       ID:thread_id=29
                         :exec_time=0
        :error_code=0
        : 
    GTID:Global Transaction ID,mysql5.6 mariadb10        :GTID
    mysqlbinlog mariadb-bin.000001 > file.sql명령 을 사용 하여 SQL 파일 로 재 설정 하고mysql -uroot -p < file.sql명령 을 사용 하면 데 이 터 를 직접 가 져 올 수 있 으 며 백업 복원 기능 을 실현 합 니 다.
    4.바 이 너 리 로그 관리
    
    MariaDB [(none)]> PURGE BINARY LOGS TO 'mariadb.000002'; --    02,  :02   
    MariaDB [(none)]> PURGE BINARY LOGS BEFORE '2018-01-23'; --   2018-01-23     
    MariaDB [(none)]> PURGE BINARY LOGS BEFORE '2017-03-22 09:25:30';
    MariaDB [(none)]> RESET MASTER; --          ,index      
    MariaDB [(none)]> FLUSH LOGS; --         
    중계 일지relay log:메 인 복사 구조 에서 서버 에서 메 인 서버 의 바 이 너 리 로그 에서 읽 은 이 벤트 를 저장 하 는 데 사 용 됩 니 다.
    총결산
    이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 기 를 바 랍 니 다!

    좋은 웹페이지 즐겨찾기