MySQL 서비스를 다시 시작하지 않고 my.cnf를 다시로드하십시오.


26

복제 마스터 역할을하도록 MySQL 서버를 구성해야합니다.

바이너리 로그를 활성화하기 위해 my.cnf를 수정했지만 이제 구성을 다시로드하려면로 ​​서비스를 다시로드해야합니다 /etc/init.d/mysqld restart. 문제는 서버가 초당 여러 개의 쿼리를 수신하고 그 동안 도달 할 수있는 모든 데이터를 잃고 싶지 않다는 것입니다.

서비스를 다시 시작하지 않고 구성 파일 my.cnf를 다시로드하는 방법이 있습니까?


3
/etc/init.d/restart전체 호스트를 다시 시작합니다. 당신은 아마 생각하고 있습니다/etc/init.d/mysqld restart
Kevin M

예, mysqld를 다시 시작합니다. 편집했습니다. 고마워!
David Espart

답변:


28

MySQL 전용 :
my.cnf의 옵션은 시스템 변수 입니다. 이 변수는 동적이거나 런타임에 변경 될 수 있습니다. 동적 인 것은 런타임에 SET 변수 구문을 사용하여 변경할 수 있습니다. 로 변수를 볼 수 있습니다 SHOW VARIABLES;. 그러나 manual의이 링크에 따르면 이진 로그 옵션은 동적이 아닙니다. 다시 시작해야 할 것 같습니다. 그러나 mysql을 아는 사람이 나보다 조금 더 나은 것을 기다리는 것이 좋습니다.

일반적인 데몬 :
Linux에서 /etc/init.d/는 데몬 (서비스)을 시작 및 중지하는 스크립트를 보유합니다. 이것들은 스크립트이기 때문에 텍스트 편집기로 볼 수 있습니다. 이러한 스크립트 중 다수는 다시로드 인수를 사용합니다. mysql 스크립트를 보면 인수로 다시로드하면 mysqladmin 명령이 사용됩니다. 따라서 재로드중인 mysqladmin 매뉴얼은 다음과 같이 말합니다.

새로 고침

Reload the grant tables.

일반적으로, 이것은 구성 변경이 아니라 특권의 변경을위한 것입니다 (동일한 flush 특권 명령일까요?).


2
이봐, 아주 좋은 설명이야 그래도 다시 시작하지 않고 할 수있는 방법이없는 것 같습니다. 아무도 해결책이나 해결 방법에 대답하지 않으면 귀하의 질문에 동의합니다. 고맙습니다.
David Espart

귀하의 링크에 따르면 SET GLOBAL binlog_format = 'STATEMENT'; 트릭을 할 것인가?
Kyle Smith

다른 Kyle : 그 것처럼 보이지만, 바이너리 로깅은 이미 무엇이든 할 수 있고 이미 설정되어 있어야합니다. 이 변수는 mysql의 현재 5.0.x 버전보다 늦게 소개되었으므로 테스트 할 수 없습니다.
Kyle Brandt

SET 명령 구문을 검색해야했습니다. 다음은 다른 사람이 필요로하는 경우에 대한 링크입니다. dev.mysql.com/doc/refman/5.1/en/set-option.html
Mark McDonald

4
MySQL 버전에 따라 어떤 변수가 동적 변경인지 언급 할 가치가 있습니다. 예를 들어 5.x에서는 느린 쿼리 로그를 즉석에서 활성화 할 수 있지만 4.x에서는 어제 발견 한 것처럼 할 수 없습니다.
Coops

1

나는 이것에 대한 해결책을 찾고 있었지만 내가 찾은 제한된 도움으로 만족하지 못했습니다. 한 녀석은 kill-HUP ..를 제공하지 않았다.

내가 한 것은 아파치 인스턴스를 일시 중지 한 다음 나중에 계속하는 것입니다. 초당 평균 25 건의 활성 요청이있는 서버에서 매력처럼 작동했습니다.

sudo로 (명확하게) pkill -STOP httpd && /etc/init.d/mysqld restart && pkill -CONT httpd

물론 아파치 프로세스 이름 및 / 또는 mysql 재시작 스크립트는 내 것과 다를 수 있지만 아이디어는 맞습니다!

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