MySQL 이전 슬레이브를 마스터로 변경하고 슬레이브 상태 정보를 제거하는 방법은 무엇입니까?


10

마스터가 실패한 마스터-> 슬레이브 구성이 있습니다. 나는 노예를 주인으로, 노예를 노예로 재설정 할 수있었습니다. 좋아.

내가 할 수없는 것은 이제 새로운 마스터 인 오래된 노예의 마스터 정보를 제거하는 것입니다. 내가 참조:

mysql> show slave status \G
*************************** 1. row ***************************
           Slave_IO_State: 
              Master_Host: 10.1.2.101
              Master_User: replicationSlave
              Master_Port: 3306
              ...
              Slave_IO_Running: No
              Slave_SQL_Running: No

많은 MySQL 설명서를 읽었 지만 여전히 새로운 마스터에서 슬레이브 정보를 지우는 방법을 찾지 못했습니다. 난 노력 했어:

  1. RESET SLAVE해당 설정을 지우지 않는 것 같습니다. [[실제로는 master.info파일을 제거 하지만 메모리 설정 은 제거하지 않습니다. 아래를 참조하십시오.]]
  2. CHANGE MASTER TO MASTER_HOST='' 최근에 더 이상 사용되지 않으므로 오류가 발생합니다.
  3. my.cnf프로그래밍 방식으로 추가 된 마스터 정보가없는 정보 확인
  4. RESET MASTER일부 mysql 문서가 권장하기 때문입니다. 바이너리 로그 만 재설정합니다.
  5. 내부 MySQL 테이블을 살펴보고 삭제할 필드를 찾을 수 있는지 확인하십시오.

MySQL ~ 5.5.9 에서이 작업을 수행하는 올바른 방법은 무엇입니까? 도움을 주셔서 감사합니다.


편집하다:

@RolandoMySQLDBA가 암시하는 것처럼 파일 을 RESET SLAVE제거하는 master.info것으로 나타났습니다. 그러나 슬레이브 정보를 제거하기 전에 서버를 다시 시작해야합니다.

mysqld를 재시작 하지 않고이 슬레이브 정보를 제거 할 수있는 방법이 있습니까?


답변:


10

MySQL은 5.5.16 이상에서, 당신이 사용할 수있는 RESET SLAVE ALL모든 것을 할 RESET SLAVE수행을 하고 , 메모리에서이 mysqld를 재시작을 필요로하지 않습니다 이런 식으로 연결 매개 변수를 재설정합니다.


6

MySQL 인스턴스에서 슬레이브 정보를 지우는 가장 빠르고 더러운 방법

  • skip-slave-start아래의 /etc/my.cnf에 추가[mysqld]
  • service mysql stop
  • rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
  • service mysql start
  • skip-slave-start/etc/my.cnf에서 제거

그게 당신을 위해해야합니다!

다음에 대한 MySQL 설명서에RESET SLAVE 따르면 필요 합니다 .

MySQL 5.5 및 그 이전 버전과 달리 MySQL 5.5에서 RESET SLAVE는 메모리에 유지되는 마스터 호스트, 마스터 포트, 마스터 사용자 또는 마스터 비밀번호와 같은 복제 연결 매개 변수를 변경하지 않습니다. 이는 RESET SLAVE 다음에 CHANGE MASTER TO 문을 요구하지 않고 START SLAVE를 발행 할 수 있음을 의미합니다.

따라서 복제 정보는 여전히 메모리에 있습니다. mysql 재시작은 유일한 방법입니다.


@Rolando에게 감사합니다. +1 나는 그것을 보았지만 시도하지 않았다. 이 문제를 해결하기 위해 mysqld를 다시 시작할 필요 가 없습니다 .
회색-

또한 master.info파일 이 없습니다 . 항상 "마스터"또는 "노예"에 있습니까?
회색-

master.info는 항상 슬레이브 서버에 있습니다.
압둘 마나프

5

RESET SLAVEphpmyadmin에 관한 한 재시작은 슬레이브 정보를 지우지 않습니다. 또한 설정해야합니다 CHANGE MASTER TO MASTER_HOST=''.


3

마스터-슬레이브 데이터의 오버라이드를 피하기 위해 'mysqld'아래의 설정 파일 ( '/etc/my.cnf')에서 skip-slave-start 명령을 유지하는 것이 좋습니다. 클라우드 환경에서 작업 할 때 예를 들기 위해 이전 마스터가 충돌 한 다음 공급자가 문제를 해결하면 성공적으로 다시 시작한다고 가정합니다. 이전 슬레이브 (현재 새 마스터)는 이전 마스터에서 복제하여 이전 데이터를 재정의합니다. DBA는 이것을 깨달을 기회가 있습니다.

BTW, 이는 비 클라우드 환경과도 관련이 있습니다. 예를 들어 다른 관리자가 조정없이 이전 마스터를 불러옵니다. 또한 자동 복제가없는 슬레이브 인 경우에도 'skip-slave-start'명령을 유지하는 것이 좋은 아이디어 인 또 다른 문제로, 예측할 수없는 결과를 방지 할 수있는 제어 기능이 향상되었습니다. :)


답변 @Lena에 감사드립니다. 좋은 생각이야. 내가 살펴볼 게
악의를 멈춤
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.