이중 마스터 MySQL 복제를 실행 중이며 이제 복제없이 단일 데이터베이스로 이동하려고합니다. 두 데이터베이스에서 복제를 완전히 비활성화하려면 어떻게합니까?
이중 마스터 MySQL 복제를 실행 중이며 이제 복제없이 단일 데이터베이스로 이동하려고합니다. 두 데이터베이스에서 복제를 완전히 비활성화하려면 어떻게합니까?
답변:
마스터 마스터 설정으로 복제를 완전히 비활성화하려면 각 슬레이브에서 다음을 수행해야합니다.
STOP SLAVE;
RESET SLAVE;
( RESET SLAVE ALL;
MySQL 5.5.16 이상에서 사용 )SLAVE STATUS
후에도 쿼리 에 대한 이전 복제 정보를보고합니다 RESET SLAVE
. 모니터링 또는 원격 구성 관리 도구에 대해 알아야합니다. CentOS 6.5에서 MySQL 5.5.38의 동작이 확인되었습니다.
나는 이것이 오래된 질문이라는 것을 알고 있지만 슬레이브 변수도 재설정해야한다는 것을 알았습니다. 제안 된대로 "blah"를 사용하면 서버는 시작시 서버 'blah'를 찾습니다.
변경
MASTER
에MASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';
머신이 더 이상 슬레이브가 아닌지 확인할 수 있습니다
SHOW SLAVE STATUS \G;
CHANGE MASTER TO MASTER_HOST=''
이제 오류가 발생합니다.
슬레이브 서버에서 :
마스터 또는 슬레이브에서 MySQL을 다시 시작할 필요가 없습니다. 완전한 문서는 MySQL Reference Manual 의 섹션 19에서 찾을 수 있습니다 .
이전 구성으로 되돌리려면 나머지 복제 설정을 그대로 두는 것이 좋습니다. 이렇게하면 설정 전체를 다시 만드는 대신 데이터를 밀어 넣고 슬레이브 위치를 재설정해야합니다 (스킵 슬레이브 시작을 제거하는 것을 잊지 마십시오).
MySQL 버전에 관계없이 가장 완벽한 방법은 다음과 같습니다.
cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start
MySQL 5.5의 복제 설정은 여전히 RAM에 남아 있기 때문에 최신 버전에서 작동해야합니다.
방금이 주제에 대해 비슷한 질문에 대답했습니다 : MySQL 이전 슬레이브를 마스터로 변경하고 슬레이브 상태 정보를 제거하는 방법은 무엇입니까?
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 파일에 해당 구성 정보가 없어야합니다. 그렇지 않으면 다음에 서버를 다시 시작할 때 로깅이 다시 활성화됩니다.
한 가지 대답은 다음과 같습니다.
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을 다시 시작하십시오.
이것을 Harrison Fisk의 답변에 추가하고 있습니다.
사용한 RESET SLAVE ALL;
경우 다시 시작할 필요가 없습니다.
또한 슬레이브에서 비활성화 된 이벤트를 활성화 할 수 있습니다.
select * from information_schema.events where status = 'SLAVESIDE_DISABLED';
그들 각각에 대해 :
alter event <event_name> enable;