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'를 찾습니다.

변경 MASTER에MASTER_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.