목차
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 초입니다.
느린 쿼리 로그 삭제
삭제 방법은 일반 쿼리 로그를 삭제하는 방법과 동일합니다. 먼저 파일을 삭제 한 다음 동일한 명령을 사용하여 새 로그 파일을 다시 작성합니다.