MySQL 로깅을 활성화하는 방법은 무엇입니까?


36

OS X 10.6.1에서 MySQL 5.0.45를 실행 중이며 MySQL에서 아무것도 기록하지 못합니다. 응용 프로그램을 디버깅 중이며 모든 쿼리와 오류를 확인해야합니다.

etc / my.cnf에 추가했습니다.

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

sudo를 사용하여 두 개의 로그 파일을 만들고 권한을 644로 설정 한 다음 MySQL을 다시 시작했습니다.

내가 언급 OS X에 내 MySQL의 로그 어디? 문제를 해결하기 위해.

달리는:

ps auxww|grep [m]ysqld

보고:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

그리고 달리기 :

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

보고:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

달리는:

mysql> show variables like '%log%';

보고:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

MySQL을 로그에 기록하는 방법에 대한 도움이 필요하십니까?

답변:


23

를 사용했지만 chmod 644mysql이 로그의 소유자인지 확인하십시오.

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

그런 다음 mysqld를 다시 시작하십시오.

그런 다음 mysql에 로그인하여 다음을 실행하십시오.

mysql> show variables like '%log%';

의 값 봐 general_log, general_log_file, log, log_error, 등

필요에 따라 스위치를 켜고 필요에 따라 mysqladmin flushlogs 를 실행하십시오 .


이제 로깅 중입니다. 소유권 감독이어야합니다. 그러나 " '% log %'와 같은 변수 표시"쿼리 결과에 대해서는 편집 된 질문을 참조하십시오. MySQL이 /var/log/mysql.log에 로깅하고 있는데 왜 표시되지 않습니까?
RyOnLife

13

로그 파일을 활성화하려면 다음 지시문 중 하나 이상이 [mysqld]mysql 서버의 기본 구성 파일 섹션에 있는지 확인해야합니다 /etc/my.cnf.

[mysqld]
log-bin
log
log-error
log-slow-queries

기본적으로 로그는 데이터베이스 서브 디렉토리 자체를 보유하는 동일한 데이터 디렉토리 (일반적으로 /var/lib/mysql)에 작성되며, 로그 파일 이름은 기본적으로 호스트 이름으로 지정되고 접두어는 위의 지시문 이름과 일치합니다 (예 : -bin, -slow) -쿼리 등).

로그를 다른 경로에 유지하거나 다른 파일 이름을 사용하려면 log=지시문 뒤에 기본 이름 과 원하는 경로 및 파일 이름을 지정하십시오 .

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

이러한 변경 사항을 적용하려면 mysqld를 다시 시작해야합니다.


5

이전 답변은 구식입니다. 구성 파일은 /etc/my.cnf창 에서 또는 창 에서 볼 수 있습니다 ./mysql/my.ini.

[mysqld]섹션 추가

log_bin
general_log
log_error

Windows 설명서에는 로그가에 저장되어 있다고 나와 ProgramData/MySQL/MySQL Server 5.6/있습니다. 거짓말이기 때문에 무시하십시오.

또한 권장 log옵션이 감가 상각되어 오류가 발생합니다

ambiguous option '--log' (log-bin, log_slave_updates)

로그인 ./mysql/data/host.err하고 데몬이 자동으로 종료됩니다. 올바른 설정은 general-log입니다.

또한 log-slow-queries유효하지 않으며 오류가 발생했습니다

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

따라서 그 거리를 멀리하십시오.


감사합니다! 나는 log=옵션으로 서버를 시작할 수 없었고 내 인생에서 이유를 알아낼 수있었습니다. 마지막으로 답을 가진 사람. general-log
jiveturkey

2

super 권한으로 mysql 명령 행을 입력하고 다음을 수행하십시오.

SET GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

필자의 경우이 변수가 이미 동일한 값으로 설정되어 있는지는 중요하지 않습니다! 또한 다른 게시물에서 언급했듯이 파일의 권한과 소유자를 변경했습니다.


1

my.cnf에서 다른 로그 설정을 시도하십시오. 제 경우에는 다음이 필요했습니다.

general_log = on

general_log_file=/var/log/mysql/mysql.log
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.