17.1.1.9 기존 복제 환경에 추가 슬레이브의 도입
기존 복제 구성에 다른 슬레이브를 추가하려면 마스터를 중지하지 않고 실행할 수 있습니다. 대신 기존의 슬레이브의 카피를 작성하는 것으로 새로운 슬레이브를 설정하지만, 새로운 슬레이브는 다른 server-id
값으로 구성합니다.
기존의 슬레이브를 복제하려면 다음과 같이합니다.
기존의 슬레이브를 종료합니다.
shell>
mysqladmin shutdown
기존 슬레이브에서 새로운 슬레이브 데이터 디렉토리를 복사합니다. 이렇게에는 tar 또는
WinZip
을 사용하여 아카이브를 만들거나 cp, rsync 등의 도구를 사용하여 직접 복사를 실행합니다. 로그 파일 및 릴레이 로그 파일을 안정적으로 복사하십시오.새로운 리플리케이션을 추가 할 때 직면하는 일반적인 문제는 다음과 같은 일련의 경고 또는 오류 메시지에 새로운 슬레이브가 실패하는 것입니다.
071118 16:44:10 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=
new_slave_hostname
-relay-bin' to avoid this problem. 071118 16:44:10 [ERROR] Failed to open the relay log './old_slave_hostname
-relay-bin.003525' (relay_log_pos 22940879) 071118 16:44:10 [ERROR] Could not find target log during relay log initialization 071118 16:44:10 [ERROR] Failed to initialize the master info structure이것은
--relay-log
옵션이 지정되어 있지 않은 경우, 릴레이 로그 파일에 그 파일 이름의 일부로 호스트 이름이 포함되어 있기 때문입니다. (이것은--relay-log-index
옵션을 사용하지 않으면 릴레이 로그 인덱스 파일에 적용됩니다. 이러한 옵션에 대한 자세한 내용은 섹션 17.1.4 "복제 및 바이너리 로깅 옵션과 변수" 를 참조하십시오.이 문제를 해결하려면 새 슬레이브
--relay-log
에 기존의 슬레이브에서 사용 된 것과 동일한 값을 사용합니다. (이 옵션이 기존 슬레이브로 명시 적으로 설정되지 않은 경우
을 사용합니다.) 이렇게 할 수없는 경우 기존의 슬레이브의 릴레이 로그 인덱스 파일을 새 슬레이브에 복사하여 새 슬레이브existing_slave_hostname
-relay-bin--relay-log-index
옵션을 기존의 슬레이브로 사용 된 것으로 설정합니다. (이 옵션이 기존 슬레이브로 명시 적으로 설정되지 않은 경우
를 사용합니다.) 또한 이미 새로운 슬레이브를 시작하려고 (이 섹션의 나머지 단계에 따라 뒤에) 앞에서 설명한 것과 유사한 오류가 발생한 경우 다음 단계를 수행합니다.existing_slave_hostname
-relay-bin.index아직 그렇게하지 않으면 새로운 슬레이브에서
STOP SLAVE
를 발행합니다.이미 기존의 슬레이브를 다시 시작하면 기존의 슬레이브로
STOP SLAVE
를 발행합니다.기존 슬레이브의 릴레이 로그 인덱스 파일의 내용을 새로운 슬레이브 릴레이 로그 인덱스 파일에 복사하여 확실하게 파일의 기존 내용을 덮어 씁니다.
이 섹션의 나머지 단계를 계속합니다.
마스터 정보 및 릴레이 로그 정보 저장소를 기존의 슬레이브에서 새로운 슬레이브에 복사합니다 ( 섹션 17.2.2 "복제 릴레이 및 상태 로그" 를 참조하십시오). 이들은 마스터의 바이너리 로그와 슬레이브의 릴레이 로그의 현재 로그 좌표를 보유하고 있습니다.
기존의 슬레이브를 시작합니다.
새로운 슬레이브로 구성을 편집하여 마스터 또는 기존의 슬레이브 중 하나에서 사용되지 않는 고유
server-id
를 새로운 슬레이브에 할당합니다.새로운 슬레이브를 시작합니다. 슬레이브는 자신의 주인 정보 저장소의 정보를 사용하여 복제 프로세스를 시작합니다.