MySQL 복제를 완전히 비활성화하는 방법


64

이중 마스터 MySQL 복제를 실행 중이며 이제 복제없이 단일 데이터베이스로 이동하려고합니다. 두 데이터베이스에서 복제를 완전히 비활성화하려면 어떻게합니까?

답변:


81

마스터 마스터 설정으로 복제를 완전히 비활성화하려면 각 슬레이브에서 다음을 수행해야합니다.

  1. STOP SLAVE;
  2. RESET SLAVE;( RESET SLAVE ALL;MySQL 5.5.16 이상에서 사용 )
  3. my.cnf를 편집하고 "master -..."또는 "replicate -..."옵션을 나타내는 정보 (있는 경우)를 제거하십시오. 복제도 동적으로 설정할 수 있으므로 my.cnf에 아무 것도 없을 수 있습니다.
  4. mysqld를 다시 시작하십시오.

복제가 동적으로 설정되면 1 단계와 2 단계이면 충분합니다.
tanyehzheng 2013

4
MySQL이 다시 시작될 때까지 명령이 제공된 SLAVE STATUS후에도 쿼리 에 대한 이전 복제 정보를보고합니다 RESET SLAVE. 모니터링 또는 원격 구성 관리 도구에 대해 알아야합니다. CentOS 6.5에서 MySQL 5.5.38의 동작이 확인되었습니다.
Chris Laskey

나는 단계를 수행하지만 왜 비활성 슬레이브가 여전히 mtop 명령 목록에 있습니까? 목록에서 제거하는 방법?
Scott Chu

18

나는 이것이 오래된 질문이라는 것을 알고 있지만 슬레이브 변수도 재설정해야한다는 것을 알았습니다. 제안 된대로 "blah"를 사용하면 서버는 시작시 서버 'blah'를 찾습니다.

변경 MASTERMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

머신이 더 이상 슬레이브가 아닌지 확인할 수 있습니다

SHOW SLAVE STATUS \G;

5
더 이상 작동하지 않습니다. 설정하면 CHANGE MASTER TO MASTER_HOST=''이제 오류가 발생합니다.
회색

ERROR 1210 (HY000) : 잘못된 인수 MASTER_HOST합니다
Kazimieras Aliulis

이 SHOW SLAVE STATUS가 빈 세트를 반환 한 후 CentOS 6 (MySQL 5.1)에서 나를 위해 작동하지만 RESET SLAVE 후에도 여전히 마스터 정보가 표시되었습니다.
Martijn

이 답변은 여전히 ​​MySQL 5.1 사용자에게 유효합니다 (아직도있을 수 있습니다).
RolandoMySQLDBA

12

슬레이브 서버에서 :

  1. "중지 중지"를 실행하여 복제를 중지하십시오.
  2. "슬레이브 재설정"을 실행하여 슬레이브 서버가 마스터 서버에서 검색된 이진 로그에서의 위치를 ​​잊어 버리도록 지시하십시오.
  3. MySQL을 다시 시작할 때 복제가 시작되지 않도록 my.cnf에 "skip-slave-start"를 추가하십시오.

마스터 또는 슬레이브에서 MySQL을 다시 시작할 필요가 없습니다. 완전한 문서는 MySQL Reference Manual 의 섹션 19에서 찾을 수 있습니다 .

이전 구성으로 되돌리려면 나머지 복제 설정을 그대로 두는 것이 좋습니다. 이렇게하면 설정 전체를 다시 만드는 대신 데이터를 밀어 넣고 슬레이브 위치를 재설정해야합니다 (스킵 슬레이브 시작을 제거하는 것을 잊지 마십시오).


7

MySQL 버전에 관계없이 가장 완벽한 방법은 다음과 같습니다.

cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start

MySQL 5.5의 복제 설정은 여전히 ​​RAM에 남아 있기 때문에 최신 버전에서 작동해야합니다.

방금이 주제에 대해 비슷한 질문에 대답했습니다 : MySQL 이전 슬레이브를 마스터로 변경하고 슬레이브 상태 정보를 제거하는 방법은 무엇입니까?


6

my.cnf 파일 만 편집하면 복제를 비활성화 할 수 없습니다. 사실, 더 이상 권장되는 방법이 아닙니다. my.cnf 파일에 항목을 넣는 것은 다음 시작시에만 유효하며 mysql 클라이언트에 명령을 입력 한 것처럼 작동합니다.

mysql> master를 master_host = 'blah'로 변경, master_user = 'blah', master_password = 'blah'...;

이 두 가지 방법 모두 master.info 라는 데이터 디렉토리에 파일을 작성합니다 . 이 파일이 존재하는 한 서버는 세부 정보를 사용하여 복제를 시도합니다. "슬레이브 리셋;" 첫 번째 답변에 나열된 명령은 master.info 파일과 relay-log.info 파일을 제거 합니다. 첫 번째 답변에서 언급했듯이 my.cnf 파일에 해당 구성 정보가 없어야합니다. 그렇지 않으면 다음에 서버를 다시 시작할 때 로깅이 다시 활성화됩니다.


5

한 가지 대답은 다음과 같습니다.

http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm

* MySQL 구성 파일 /etc/my.cnf를 편집하고 [mysqld] 섹션에서 다음 7 줄을 제거하십시오.

port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*

MySQL을 다시 시작하십시오.


4

이것을 Harrison Fisk의 답변에 추가하고 있습니다.

사용한 RESET SLAVE ALL;경우 다시 시작할 필요가 없습니다.

또한 슬레이브에서 비활성화 된 이벤트를 활성화 할 수 있습니다.

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

그들 각각에 대해 :

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