17.1.1.8 기존 데이터에 의한 복제 설정
기존 데이터 복제를 설치하는 경우 복제 서비스를 시작하기 전에 마스터에서 데이터를 슬레이브로 얻을 수있는 최선의 방법을 결정해야합니다.
기존의 데이터 복제를 설정하는 기본 과정은 다음과 같습니다.
MySQL 마스터가 동작하고있는 상태에서 복제 중에 마스터에 연결할 때 슬레이브가 사용하는 사용자를 만듭니다. 섹션 17.1.1.3 "복제 사용자 만들기" 를 참조하십시오.
아직
server-id
를 구성하지 않고 마스터 서버에서 바이너리 로깅을 활성화하지 않는 경우이 옵션을 구성하려면 서버를 종료해야합니다. 섹션 17.1.1.1 "복제 마스터 구성 설정" 을 참조하십시오.마스터 서버를 종료해야하는 경우 해당 데이터베이스의 스냅 샷을 만들 수있는 좋은 기회입니다. 마스터를 중지하고 구성을 업데이트하고 스냅 샷을 만들기 전에 마스터의 상태를 취득합니다 ( 섹션 17.1.1.4 "복제 마스터 바이너리 로그 좌표 얻기" 를 참조하십시오). 로우 데이터 파일을 사용하여 스냅 샷을 만드는 방법은 섹션 17.1.1.6 "로우 데이터 파일을 사용하여 데이터 스냅 샷 만들기" 를 참조하십시오.
마스터 서버가 이미 올바르게 구성되어있는 경우 그 상태를 취득하고 나서 ( 섹션 17.1.1.4 "복제 마스터 바이너리 로그 좌표 얻기" 를 참조하십시오) mysqldump를 사용하여 스냅 샷을 만들거나 ( 섹션 17.1.1.5 "mysqldump를 사용하여 데이터 스냅 샷 만들기" 를 참조하십시오) 섹션 17.1.1.6 "로우 데이터 파일을 사용하여 데이터 스냅 샷 만들기" 가이드를 사용하여 라이브 서버의 로우 스냅 샷을 만듭니다.
슬레이브 구성을 업데이트합니다. 섹션 17.1.1.2 "리플리케이션 슬레이브 구성 설정" 을 참조하십시오.
데이터의 스냅 샷을 마스터에 어떻게 작성했는지에 따라 다음과 같이 다릅니다.
mysqldump를 사용하는 경우 :
복제가 시작되지 않도록
--skip-slave-start
옵션을 사용하여 슬레이브를 시작합니다.덤프 파일을 가져옵니다.
shell>
mysql < fulldb.dump
로우 데이터 파일에서 스냅 샷을 만든 경우 :
슬레이브 데이터 디렉토리에 데이터 파일을 추출합니다. 예 :
shell>
tar xvf dbdump.tar
슬레이브 서버가 파일에 액세스하고 수정할 수 있도록 그들에게 권한과 소유권을 설정해야하는 경우가 있습니다.
복제가 시작되지 않도록
--skip-slave-start
옵션을 사용하여 슬레이브를 시작합니다.
마스터에서 복제 좌표를 사용하여 슬레이브를 구성합니다. 이것은 바이너리 로그 파일과 파일 내에서 복제를 시작해야하는 위치를 슬레이브에 전달합니다. 또한 마스터의 로그인 자격 증명 및 호스트 이름을 사용하여 슬레이브를 구성합니다. 필요한
CHANGE MASTER TO
문 자세한 내용은 섹션 17.1.1.10 "슬레이브에서 마스터 구성 설정" 을 참조하십시오.슬레이브 쓰레드를 시작합니다.
mysql>
START SLAVE;
이 절차를 수행 한 후 슬레이브는 마스터에 연결하고 스냅 샷 생성 이후에 발생한 업데이트를 반영하는 것입니다.
마스터에 server-id
옵션을 설정하는 것을 잊었을 경우, 슬레이브는 그것에 연결할 수 없습니다.
슬레이브에 server-id
옵션을 설정하는 것을 잊었을 경우, 슬레이브의 오류 로그에 다음에 같은 오류가 발생합니다.
Warning: You should set server-id to a non-0 value if master_host is set; we will force server id to 2, but this MySQL server will not act as a slave.
어떤 이유로 복제 할 수없는 경우도 노예의 오류 로그에 오류 메시지를 가져옵니다.
슬레이브가 마스터 정보 저장소에 저장된 정보를 사용하여 마스터의 바이너리 로그가 얼마나 처리되었는지를 추적합니다. 저장소는 파일 또는 테이블 형식으로 --master-info-repository
값 세트에 의해 결정됩니다. 슬레이브가 --master-info-repository=FILE
에서 동작하는 경우 데이터 디렉토리 안에 이름이 master.info
와 relay-log.info
두 파일을 찾을 수 있습니다. 대신 --master-info-repository=TABLE
인 경우,이 정보는 mysql
데이터베이스 테이블 master_slave_info
에 저장됩니다. 어떠한 경우에도 우리가 무엇을하고 있는지 정확히 알 그 영향을 충분히 이해하고있는 경우를 제외하고 파일 또는 테이블을 삭제하거나 편집하지 마십시오. 그 경우에도 CHANGE MASTER TO
문을 사용하여 복제 매개 변수를 변경하는 것이 좋습니다. 노예 문에 지정된 값을 사용하여 상태 파일을 자동으로 업데이트 할 수 있습니다. 자세한 내용은 섹션 17.2.2 "복제 릴레이 및 상태 로그" 를 참조하십시오.
마스터 정보 저장소의 내용은 명령 행 또는 my.cnf
에서 지정된 일부 서버 옵션을 재정의합니다. 자세한 내용은 섹션 17.1.4 "복제 및 바이너리 로깅 옵션과 변수" 를 참조하십시오.
복수의 슬레이브로 마스터의 단일 스냅 샷으로 충분합니다. 추가 슬레이브를 설치하는 경우에는 같은 마스터 스냅 샷을 사용하여 앞서의 단계 슬레이브 부분에 따릅니다.