MySQL 연구 노트. MySQL 로그 사용

mysql 로그 개요

MySQL 로그는 데이터베이스의 일상적인 작업 및 오류 정보를 기록합니다. MySQL에는 오류 로그, 바이너리 로그, 쿼리 로그 및 느린 쿼리 로그의 네 가지 범주로 나뉘어있는 다양한 유형의 로그 파일이 있습니다. 사용자는 로그에서 MySQL의 실행 상태, 작동 또는 오류 기록을 쿼리하여 문제를 해결할 수 있습니다.
물론 로그 기능을 시작하면 MySQL 데이터베이스의 성능도 저하됩니다. 예를 들어 매우 번거로운 쿼리가있는 MySQL 데이터베이스 시스템에서 일반 쿼리 로그와 느린 쿼리 로그를 켜면 MySQL 데이터베이스는 로그를 기록하는 데 많은 시간이 걸리므로 많은 시간이 소요됩니다.

오류 기록

MySQL 서비스가 서비스를 시작, 실행 또는 중지 할 때 발생하는 문제를 기록합니다. mysql의 오류 로그는 매우 유용하며, MySQL을 시작하거나 중지 할 때 오류가 발생하면 오류 로그가 기록되므로 오류 로그를 확인하면 문제의 핵심을 찾을 수 있습니다.

시작 및 구성 오류 로그

기본적으로 오류 로그는 데이터베이스의 데이터 디렉토리에 기록됩니다. 구성 파일 이름이없는 경우 파일 이름은 기본적으로 호스트 이름으로 설정됩니다. err
check my
여기에 사진 설명 삽입
computer name is YING-huo520
다음 명령을 통해 변수 표시 like'log_error % ';보기

mysql> show variables like 'log_error';
+---------------+----------------------------------------------------------------------+
| Variable_name | Value                                                                |
+---------------+----------------------------------------------------------------------+
| log_error     | E:\software\phpstudy_pro\Extensions\MySQL5.1.60\data\YING-huo520.err |
+---------------+----------------------------------------------------------------------+
1 row in set (0.00 sec)

내 파일 디렉터리를 찾아 파일을 엽니 다
여기에 사진 설명 삽입
. 오류 로그의 시작 및 중지와 지정된 파일 이름은 my.ini 파일에서 수정할 수 있습니다.
오류 로그의 구성 항목은 log-error입니다. 오류 로그를 시작하려면 [mysqld]에서 log-error를 구성하십시오.

[mysqld]
log-error=[path/[file_name]]

여기서 path는 로그가있는 디렉토리 경로이고 file_name은 로그 파일의 이름이며 수정 후 MySQL 서비스를 다시 시작해야합니다.

오류 로그 삭제

mysql 오류 로그는 텍스트 형식으로 파일 시스템에 저장되며 직접 삭제할 수 있습니다.

mysql5.5.7 이전 버전의 플러시 로그의 경우 오류 로그 파일의 이름을 filename.err_old로 변경하고 새 로그 파일을 만들 수 있지만 mysql5.5.7 이후에는 로그 파일을 다시 열고 로그 백업 및 생성을 수행하지 않습니다.
클라이언트의 mysql 데이터베이스에 로그인하고 플러시 로그를 실행하여 오류 로그를 삭제합니다.

바이너리 로그

바이너리 로그는 주로 모든 업데이트 된 데이터 또는 잠재적으로 업데이트 된 데이터를 포함하여 MySQL 데이터베이스의 변경 사항을 기록하고 데이터베이스를 업데이트하는 각 문의 실행 시간에 대한 정보도 포함하지만 데이터를 수정하지 않은 명령문은 포함하지 않습니다. 바이너리 로그를 사용하는 주된 목적은 가능한 한 데이터베이스를 복구하는 것입니다.

바이너리 로그 시작 및 구성

기본적으로 바이너리 로그는 켜져 있으며 mysql 설정 파일을 수정하여 바이너리 로그를 시작하고 설정할 수 있습니다.
my.ini 파일은 다음과 같이 수정됩니다.

log-bin=path/filename

path는 로그 경로, filename은 파일 이름입니다.
expire_logs_days는 MySQL이 지난 날을 지우는 시간, 즉 바이너리 로그가 자동으로 삭제되는 일 수를 정의하며 기본값은 0입니다.
max_binlog_size는 단일 파일의 크기 제한을 정의하며 바이너리 로그에 기록 된 내용이 지정된 값을 초과하면 현재 파일이 닫히고 새 로그 파일이 다시 열립니다.
my.ini 구성의 MySQLd 그룹 아래에 추가

[mysqld]
log-bin
expire_logs_days=10
max_binlog_size=100M

수정 후 mysql을 다시 시작하십시오.
명령을 사용하여 바이너리 로그가 활성화되었는지 확인합니다. log_bin이 켜져 있고 켜져 있음을 알 수 있습니다.

mysql> show variables like 'log_%';
+---------------------------------+----------------------------------------------------------------------+
| Variable_name                   | Value                                                                |
+---------------------------------+----------------------------------------------------------------------+
| log_bin                         | ON                                                                   |
| log_bin_trust_function_creators | OFF                                                                  |
| log_bin_trust_routine_creators  | OFF                                                                  |
| log_error                       | E:\software\phpstudy_pro\Extensions\MySQL5.1.60\data\YING-huo520.err |
| log_output                      | FILE                                                                 |
| log_queries_not_using_indexes   | OFF                                                                  |
| log_slave_updates               | OFF                                                                  |
| log_slow_queries                | OFF                                                                  |
| log_warnings                    | 1                                                                    |
+---------------------------------+----------------------------------------------------------------------+
9 rows in set (0.00 sec)

바이너리 로그보기

show binary logs를 사용하여 바이너리 파일
수를 볼 수 있으며 mysqlbinlog를 사용하여 그 내용을 볼 수도 있습니다.

C:\Users\acer>mysqlbinlog E:/software/phpstudy_pro/Extensions/MySQL5.1.60\data/mysql-bin.000001
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
# at 4
#201031 14:32:16 server id 1  end_log_pos 106   Start: binlog v 4, server v 5.1.60-community-log created 201031 14:32:16 at startup
# Warning: this binlog was not closed properly. Most probably mysqld crashed writing it.
ROLLBACK;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

바이너리 로그 삭제

1. RESET MASTER 문을 사용하여 모든 바이너리 파일을 삭제
구문 형식 : RESET MASTER;
이 문을 실행하면 모든 바이너리 로그가 삭제되고 바이너리 로그가 다시 생성되며 새 로그 파일은 000001부터 번호가 지정됩니다.
2. PURGE MASTER LOGS 문을 사용하여 지정된 로그 파일을 삭제합니다
구문 형식 : PURGE{MASTER|BINARY} LOGS TO 'log_name
PURGE{MASTER|BINARY} LOGS BEFORE 'date'
첫 번째는 파일 이름을 지정하고 지정된 파일 이름보다 작은 지정된 이진 로그를 삭제하고 두 번째는 지정된 파일 이름보다 먼저 이진 파일을 삭제하는 것입니다. 데이트

mysql> PURGE MASTER LOGS TO "mysql-bin.000030";
Query OK, 0 rows affected (2.23 sec)

mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000030 |       106 |
| mysql-bin.000031 |       106 |
| mysql-bin.000032 |       106 |
| mysql-bin.000033 |       106 |
| mysql-bin.000034 |       106 |
| mysql-bin.000035 |       106 |
| mysql-bin.000036 |       106 |
| mysql-bin.000037 |       106 |
| mysql-bin.000038 |       106 |
| mysql-bin.000039 |       106 |
| mysql-bin.000040 |       106 |
| mysql-bin.000041 |       149 |
| mysql-bin.000042 |       149 |
| mysql-bin.000043 |       149 |
| mysql-bin.000044 |       149 |
| mysql-bin.000045 |       106 |
| mysql-bin.000046 |       106 |
| mysql-bin.000047 |       106 |
| mysql-bin.000048 |       106 |
| mysql-bin.000049 |       106 |
| mysql-bin.000050 |       106 |
+------------------+-----------+
21 rows in set (0.00 sec)
mysql> PURGE MASTER LOGS BEFORE "20201110";
Query OK, 0 rows affected (0.00 sec)

바이너리 로그를 사용하여 데이터베이스 복원

이 복구 방법은 매우 효과적이며 실수로 데이터 테이블이 삭제 된 경우이 방법을 사용하여 특정 시간에 데이터를 복구 할 수 있습니다.
구문 형식 : mysqlbinlog option filename |mysql -uuser -ppass
옵션 매개 변수는 다음과 같습니다. –start-date, –stop-date, –start-position, –stop-position,
예 :mysqlbinlog --stop-date="2020-11-10 18:16:35 filename |mysql -uuser -ppass

바이너리 로그를 일시적으로 중지

mysql이 바이너리 로그를 열면 mysql은 바이너리 로그를 계속 기록합니다.이 기능을 중지하는 방법은 무엇입니까? 마찬가지로 구성 파일을 수정하여 중지 할 수 있지만 다시 시작해야하며 이진 로그는 SET_LOG_BIN 문으로 일시적으로 중지하거나 시작할 수 있습니다.

SET sql_log_bin=0	停止
SET sql_log_bin=1	开启

일반 쿼리 로그

이 로그는 서비스 시작 및 닫기, 쿼리 실행 및 기타 명령문을 포함한 모든 사용자 작업을 기록합니다.
MySQL은 기본적으로 로그를 열지 않습니다. '% general %'와 같은 표시 변수를 사용하면 로그 상태를 볼 수 있습니다.

쿼리 로그 시작

mysql> show variables like '%general%';
+------------------+----------------------------------------------------------------------+
| Variable_name    | Value                                                                |
+------------------+----------------------------------------------------------------------+
| general_log      | OFF                                                                  |
| general_log_file | E:\software\phpstudy_pro\Extensions\MySQL5.1.60\data\YING-huo520.log |
+------------------+----------------------------------------------------------------------+
2 rows in set (0.00 sec)

로그 구문을 켜십시오. set @@ global.general_log = 1;

mysql> set @@global.general_log=1;
Query OK, 0 rows affected (0.07 sec)

mysql> show variables like '%general%';
+------------------+----------------------------------------------------------------------+
| Variable_name    | Value                                                                |
+------------------+----------------------------------------------------------------------+
| general_log      | ON                                                                   |
| general_log_file | E:\software\phpstudy_pro\Extensions\MySQL5.1.60\data\YING-huo520.log |
+------------------+----------------------------------------------------------------------+
2 rows in set (0.00 sec)

열려 있습니다. 로그를 닫으려면 1을 0으로 변경하십시오.

쿼리 로그보기

E : \ software \ phpstudy_pro \ Extensions \ MySQL5.1.60 \ data \ YING-huo520.log 파일을 엽니 다.
여기에 사진 설명 삽입

쿼리 로그 삭제

디렉터리를 찾아 접미사가 .log 인 파일을 삭제 한 다음 명령 줄에서 새 쿼리 로그 파일을 만듭니다.

mysqladmin -u root -p flush-logs

느린 쿼리 로그

느린 쿼리 로그는 지정된 시간을 초과 한 쿼리 시간을 기록하는 로그로, 실행 시간이 길고 실행 효율이 낮은 문장을 찾는데 편리하여 후속 최적화에 편리합니다.

느린 쿼리 로그 활성화

기본적으로 동일하게 닫히고 my.ini 구성을 수정하여 엽니 다.

[mysqld]
log-slow-queries=path/filename
long_query_time=n

n은 시간 (초)이고 기본값은 10 초입니다.

느린 쿼리 로그 삭제

삭제 방법은 일반 쿼리 로그를 삭제하는 방법과 동일합니다. 먼저 파일을 삭제 한 다음 동일한 명령을 사용하여 새 로그 파일을 다시 작성합니다.

추천

출처blog.csdn.net/qq_44862120/article/details/109621836