log_bin 변수로 MySQL 이진 로깅 비활성화


35

APT를 사용하여 일부 데비안 패키지로 설치 한 기본 MySQL 구성 파일 /etc/mysql/my.cnf는 종종 log_bin 변수를 설정하므로 binlog가 활성화됩니다.

log_bin = /var/log/mysql/mysql-bin.log

이러한 설치에서 이진 로깅을 비활성화하려면 물론 my.cnf의 줄을 주석 처리하십시오. 그러나 debian 스타일에서 명시 적으로 log_bin을 OFF로 설정하여 이진 로깅을 비활성화하는 방법이 있는지 궁금합니다. /etc/mysql/conf.d/myCustomFile.cnf와 같은 포함 된 파일이므로 기본 my.cnf는 변경되지 않으며 필요한 경우 apt로 쉽게 업데이트 할 수 있습니다.

"log_bin = 0", "log_bin = OFF"또는 "log_bin ="을 시도했지만 작동하지 않습니다 ...

답변:


42

이것은 오래된 질문이지만 올바른 옵션 이름에 대한 기억을 잃어 버렸을 때 검색에서 나왔으므로 이제 세부 정보를 추가하고 있습니다.

질문의 핵심은 다음과 같습니다.

나는 /etc/mysql/conf.d/myCustomFile.cnf와 같은 포함 된 파일을 의미합니다.

옵션을 사용하여 포함 된 옵션 파일에서이 작업을 수행 할 수 있습니다 skip-log-bin. 예를 /etc/mysql/conf.d/disable_binary_log.cnf들어 다음 내용으로 만들 수 있습니다 .

[mysqld]
skip-log-bin

skip-다른 옵션에 접두사를 추가 하여이 방법으로 비활성화 할 수도 있습니다.


1
내가 기대했던 것과 정확히 일치합니다. 그것은 적어도 MariaDB 10.0에서 잘 작동합니다. 고마워
Nicolas Payart


5

다음과 같이 알 수 있습니다. log_bin은 매개 변수를 허용하지 않아야합니다.

log_bin

부울 매개 변수이므로 전혀 아무것도 없습니다.

그러나 값이 설정되면 로그가 사용 가능하고 값이 binlog 기본 이름으로 해석됩니다.

로그 옵션은 너무 직관적이지 않고 형식을 버전에서 버전으로 변경 한 이력이 있습니다 (저는 당신을보고 있습니다, 느린 로그).


MariaDB에서는 작동하지 않습니다
MechanTOurS

MariaDB를 사용하고 구성에 똑같은 줄이 있다고 가정하면 작동한다고 확신합니다.
jynus

4

복제하지 않는 경우 my.ini 또는 my.cnf 파일을 변경하여 binlogging을 비활성화 할 수 있습니다. my.ini 또는 /etc/my.cnf(/etc/mysql/my.cnf)를 열고 다음을 입력하십시오.

# vi /etc/my.cnf

"log_bin"이라는 행을 찾아서 다음과 같이 제거하거나 주석 처리하십시오.

#log_bin = /var/log/mysql/mysql-bin.log

또한 다음 줄을 제거하거나 주석 처리해야합니다.

#expire_logs_days = 10

#max_binlog_size = 100M

파일을 닫고 저장하십시오. 마지막으로 mysql 서버를 다시 시작하십시오.

# service mysql restart


1
OP가 이것을 이해한다고 생각합니다. "/etc/mysql/conf.d/myCustomFile.cnf와 같은 포함 된 파일에 기본 my.cnf가 변경되지 않았 음을 의미합니다."
Peter V. Mørch

1

로부터 수동 MariaDB에 대한 ( https://mariadb.com/kb/en/library/activating-the-binary-log/ )

선택적으로 절대 경로를 포함 할 수있는 이름을 제공하지 않으면 기본값은 datadir / log-basename-bin, datadir / mysql-bin 또는 datadir / mariadb-bin입니다.

하나,

SUPER 권한이있는 클라이언트는 sql_log_bin 변수를 설정하여 현재 세션에 대한 이진 로그를 비활성화하고 다시 활성화 할 수 있습니다.

SET sql_log_bin = 0;

SET sql_log_bin = 1;

그러나 설치 중에 기본적으로 활성화되었다고하면 my.cnf 파일에서 줄을 제거한 후 mysqld를 다시 시작하여 비활성화해야합니다. 이진 데이터를 제거 할 수도 있습니다 ( https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html )

PURGE BINARY LOGS

마지막으로, 다른 포스터의 답변에서 언급했듯이 MySQL 8 에는 구성 파일 의 [mysqld] 섹션에있는 --skip-log-bin또는 --disable-log-bin옵션을 사용하여 구성 파일에서 이진 로깅을 명시 적으로 해제하는 옵션이 있습니다.

이진 로깅을 비활성화하려면 시작할 때 --skip-log-bin또는 --disable-log-bin옵션을 지정할 수 있습니다 . 이러한 옵션 중 하나가 지정되고 --log-bin지정된 경우 나중에 지정된 옵션이 우선합니다. 이진 로깅이 비활성화되면 log_bin 시스템 변수가 OFF로 설정됩니다.


0

패키지를 업데이트 한 후 알고 있듯이 구성 파일은 이전 파일이어야하므로 업데이트 후에는 동일한 구성 파일이 있습니다. 그렇지 않으면 $ MYSQL_HOME / my.cnf 경로에 두 번째 구성 파일을 작성할 수 있습니다. 이것은 서버 특정 옵션을위한 것이며 전역 /etc/my.cnf의 설정을 덮어 씁니다.


1
예, 데비안 기본 정책은 / etc의 설정 파일을 덮어 쓰지 않습니다. 그러나 내 질문은 /etc/mysql/my.cnf의 줄을 주석 처리하지 않고 log_bin 설정을 "null value"로 덮어 쓰는 방법이었습니다.
Nicolas Payart

skip-log-bin이 다른 곳에서 설정된 부울을 끕니다
santiago arizti
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.