17.3.1.3 Master 또는 Slave를 읽기 전용으로 백업하기
글로벌 읽기 잠금을 획득하고 read_only
시스템 변수를 조작하여 백업 서버의 상태를 읽기 전용으로 변경하여 복제 설정에서 마스터 또는 슬레이브 서버를 백업 할 수 있습니다.
서버를 읽기 전용으로 설정합니다 (검색 만 처리되고 업데이트는 차단됩니다).
백업을 실행합니다.
서버를 일반 읽기 / 쓰기 상태로 되돌립니다.
이 섹션의 절차는 백업 서버를 서버에서 데이터를 검색하는 백업 방식 (mysqldump)에 안전한 상태로 변환합니다 ( 섹션 4.5.4 "mysqldump - 데이터베이스 백업 프로그램" 을 참조하십시오) . 바이너리 백업을 만들려면 파일을 직접 복사하는 방법으로 이러한 절차의 사용을 시도해서는 안됩니다 (서버가 변경된 데이터를 아직 메모리에 캐시하고 디스크로 플러시하지 않을 수 이 때문에).
이후 단계에서는 마스터 서버와 슬레이브 서버에 이렇게하는 방법을 설명합니다. 여기에 설명 된 두 시나리오에서는 다음 복제 설정을 가정합니다.
마스터 서버 M1
마스터로 M1을 가진 슬레이브 서버 S1
M1에 연결된 클라이언트 C1
S1에 연결된 클라이언트 C2
두 시나리오에서도 글로벌 읽기 잠금을 획득 read_only
변수를 조작하는 문은 백업 서버에서 실행되고 서버의 슬레이브에 전달되지 않습니다.
시나리오 1 : 읽기 전용 마스터의 백업
이 문을 마스터 M1에서 실행하여이를 읽기 전용 상태로합니다.
mysql>FLUSH TABLES WITH READ LOCK;
mysql>SET GLOBAL read_only = ON;
M1이 읽기 전용 상태 일 때 다음 속성이 true가됩니다.
C1에 의해 M1에 보내지는 갱신 요청은 서버가 읽기 전용 모드이기 때문에 차단됩니다.
C1에 의해 M1에 보내진 쿼리 결과 요청이 성공합니다.
M1에서 백업하는 것이 안전합니다.
S1으로 백업하는 것은 안전하지 않습니다. 이 서버는 아직 실행 중이고 바이너리 로그를 처리 중이거나 클라이언트 C2에서 들어오는 요청을 업데이트 할 수 있습니다.
M1이 읽기 전용의 경우 백업을 실행하십시오. 예를 들어, mysqldump를 사용할 수 있습니다.
M1에서 백업 작업이 완료된 후 이러한 문을 실행하여 M1을 정상 작동 상태로 복원합니다.
mysql>SET GLOBAL read_only = OFF;
mysql>UNLOCK TABLES;
M1에서 백업을 수행하는 것은 안전하지만 (백업에 관한 한) 성능에 적합하지 않습니다 (M1 클라이언트가 업데이트 실행을 차단하기 때문에).
이 방법은 복제 설치 마스터 서버의 백업에 적용되지만, 비 복제 설치 단일 서버에 사용할 수 있습니다.
시나리오 2 : 읽기 전용 슬레이브로 백업
이 문을 슬레이브 S1에서 실행하여이를 읽기 전용 상태로합니다.
mysql>FLUSH TABLES WITH READ LOCK;
mysql>SET GLOBAL read_only = ON;
S1이 읽기 전용 상태 일 때 다음 속성이 true가됩니다.
마스터 M1이 동작을 계속하고 있기 때문에 마스터에서 백업하는 것이 안전하지 않습니다.
슬레이브 S1이 정지하고 있기 때문에 슬레이브 S1에서 백업하는 것이 안전합니다.
이러한 특성은 일반적인 백업 시나리오의 기초를 제공합니다. 슬레이브가 잠시 백업으로 바쁜에도 문제가 없습니다. 전체 네트워크에 영향을주지 않고 시스템은 백업 중에도 작동하고 있기 때문입니다. 특히 클라이언트는 계속 마스터 서버에서 업데이트를 수행 할 여전히 슬레이브에서 백업 활동에 의한 영향을받지 않습니다.
S1이 읽기 전용의 경우 백업을 실행하십시오. 예를 들어, mysqldump를 사용할 수 있습니다.
S1에서 백업 작업이 완료된 후 이러한 문을 실행하여 S1을 정상 작동 상태로 복원합니다.
mysql>SET GLOBAL read_only = OFF;
mysql>UNLOCK TABLES;
슬레이브는 정상 작동 상태로 돌아온 뒤에 마스터의 바이너리 로그에서 처리되지 않은 갱신을 따라 잡을으로 다시 마스터에 동기화됩니다.