17.1.1.4 복제 마스터 바이너리 로그 좌표 취득
마스터 바이너리 로그의 마스터의 현재 좌표를 주목하십시오. 이 정보는 현재 시점에서 복제 프로세스를 시작하도록 슬레이브를 구성하기 위해 필요합니다.
복제 프로세스를 시작하기 전에 슬레이브에서 동기화하는 기존의 데이터가 마스터에있는 경우 마스터가 문 실행을 계속하도록 허용하기 전에 마스터의 문 처리를 중지하고, 현재 바이너리 로그 좌표를 취득하고 그 데이터를 덤프해야합니다. 문 실행을 중지하지 않을 경우 사용할 데이터 덤프 및 마스터 상태 정보가 일치하지 않고, 슬레이브 데이터베이스가 일관성을 잃거나 손상되거나합니다.
마스터 바이너리 로그 좌표를 얻으려면 다음 단계를 따르십시오.
명령 행 클라이언트에서 마스터에 접속하여 마스터에서 세션을 시작하고
FLUSH TABLES WITH READ LOCK
문을 실행하여 모든 테이블을 플러시하고 쓰기 문을 차단합니다.mysql>
FLUSH TABLES WITH READ LOCK;
InnoDB
테이블의 경우,FLUSH TABLES WITH READ LOCK
은COMMIT
조작도 차단합니다.경고읽기 잠금 기능을 활성 상태로하기 위해
FLUSH TABLES
문을 발행 한 클라이언트를 실행중인 상태로하십시오. 클라이언트를 종료하면 잠금이 해제됩니다.마스터의 다른 세션에서
SHOW MASTER STATUS
명령문을 사용하여 현재 바이너리 로그 파일의 이름과 위치를 확인합니다.mysql >
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 73 | test | manual,mysql | +------------------+----------+--------------+------------------+File
컬럼은 로그 파일의 이름이고,Position
은 파일의 위치를 나타냅니다. 이 예제에서는 바이너리 로그 파일은mysql-bin.000003
에서 위치는 73입니다. 이 값을 기록합니다. 이들은 나중에 슬레이브를 설정할 때 필요합니다. 그들은 슬레이브가 마스터에서 새로운 업데이트 프로세스를 시작해야 복제 좌표를 나타냅니다.바이너리 로깅을 사용하지 않고 마스터가 이미 작동하지 않으면
SHOW MASTER STATUS
또는 mysqldump --master-data를 표시하는 로그 파일의 이름과 위치의 값은 비어 있습니다. 이 경우 나중에 슬레이브 로그 파일 위치를 지정할 때 사용할 필요가있는 값은 빈 문자열 (''
)와4
입니다.
이제 슬레이브가 복제를 시작하는 적절한 위치로 바이너리 로그에서 읽기를 시작하는 데 필요한 정보를 입수했습니다.
복제를 시작하기 전에 슬레이브와 동기화 할 필요가있는 기존 데이터가있는 경우, 잠금이 적절하게 유지되도록 클라이언트를 실행 한 상태로 다음 섹션 17.1.1.5 "mysqldump를 사용하여 데이터 스냅 샷 만들기 " 또는 섹션 17.1.1.6 "로우 데이터 파일을 사용하여 데이터 스냅 샷 만들기" 로 이동합니다. 여기서의 의도는 슬레이브에 복사 된 데이터가 마스터와 동기화 된 상태 인 것처럼 더 이상 변경을 피하는 것입니다.
완전히 새로운 마스터와 슬레이브 복제 그룹을 설치하는 경우 첫 번째 세션을 종료하고 읽기 잠금을 해제 할 수 있습니다.