17.1.3.2 GTID를 사용한 복제 설정
이 섹션에서는 MySQL 5.6에서 GTID 기반 복제를 구성 및 시작하는 과정에 대해 설명합니다. 이것은 복제 마스터를 처음 시작하거나 중지 할 것을 전제로하는 '콜드 스타트'단계입니다. 실행중인 마스터에서 GTID를 사용한 복제 슬레이브의 제공 내용은 섹션 17.1.3.3 "페일 오버 및 확장에 GTID 사용" 을 참조하십시오.
최대한 간단한 GTID 복제 토폴로지 (1 개의 마스터와 1 개의 슬레이브로 구성)를 시작하는이 과정의 주요 단계는 다음과 같습니다.
복제가 이미 실행중인 경우 두 서버를 읽기 전용으로하여 그들을 동기화합니다.
두 서버를 중지합니다.
GTID 바이너리 로깅 및 슬레이브 업데이트 로깅을 활성화하고 GTID 기반 복제에 안전하지 않은 문을 해제 한 상태에서 두 서버를 다시 시작합니다. 또한 서버는 읽기 전용 모드로 부팅 슬레이브 SQL 및 I / O 스레드가 슬레이브로 시작되지 않도록하십시오.
설명 서버를 시작하는 데 필요한 mysqld 옵션 내용은이 섹션 뒷부분의 예에서 설명합니다.
마스터 복제 데이터 소스로 사용하여 자동 포지셔닝을 사용하도록 슬레이브에 지시하고 슬레이브를 시작합니다.
이 단계의 수행에 필요한 SQL 문이 섹션 뒷부분의 예에서 설명합니다.
업데이트를 다시받을 수 있도록 두 서버의 읽기 전용 모드를 해제합니다.
다음 예제에서는 두 개의 서버가 MySQL의 "클래식"파일 기반 복제 프로토콜을 사용하여 마스터 및 슬레이브로 이미 작동하고 있습니다.
이후 대부분의 절차는 SUPER
권한을 가진 MySQL root
계정이나 다른 MySQL 사용자 계정을 사용해야합니다. mysqladmin shutdown
는 SUPER
권한 또는 SHUTDOWN
권한이 있어야합니다.
1 단계 : 서버를 동기화합니다 서버를 읽기 전용으로 설정합니다. 이렇게하려면 다음 문을 두 서버에서 실행하여 read_only
시스템 변수를 사용합니다.
mysql> SET @@global.read_only = ON;
그러면 슬레이브는 마스터에 유지할 수 있습니다. 계속하기 전에 슬레이브가 모든 업데이트를 처리 한 것을 확인하는 것이 매우 중요합니다.
2 단계 : 두 서버를 중지합니다. 여기에서 같이 mysqladmin을 사용하여 각 서버를 중지합니다. 여기서 username
은 서버를 종료하는 데 충분한 권한이있는 MySQL 사용자 이름입니다.
shell> mysqladmin -u username
-p shutdown
다음 프롬프트에이 사용자의 암호를 지정합니다.
3 단계 : GTID을 활성화 한 상태에서 두 서버를 다시 시작합니다 글로벌 트랜잭션 식별자 바이너리 로깅을 활성화하려면 GTID 모드 바이너리 로깅 및 슬레이브 업데이트 로깅을 활성화하고 GTID 기반 복제에 안전 아니다 문을 해제 한 상태에서 각 서버를 시작해야합니다. 또한 읽기 전용 모드로 두 서버를 시작함으로써 불필요하거나 예기치 않은 업데이트가 어느 서버에서 실행되지 않도록하십시오. 이것은 두 서버는 (적어도) 다음 mysqld_safe 호출에 표시된 옵션에서 시작해야한다는 것을 의미합니다.
shell> mysqld_safe --gtid_mode=ON --log-bin --log-slave-updates --enforce-gtid-consistency &
MySQL 5.6.9 이전에서는 --enforce-gtid-consistency
의 이름은 --disable-gtid-unsafe-statements
이었습니다.
또한 여기에 예제에 지정된 다른 서버 옵션과 --skip-slave-start
옵션으로 슬레이브를 시작하십시오.
--gtid-mode
는 boolean이 아닌 열거입니다. 이 옵션을 설정하면 값 ON
또는 OFF
중 하나만을 사용합니다. 0과 1 등의 수치를 사용하면 예기치 않은 결과가 발생할 수 있습니다.
--gtid-mode
및 --enforce-gtid-consistency
서버 옵션에 대한 자세한 내용은 섹션 17.1.4.5 "글로벌 트랜잭션 ID 옵션과 변수" 를 참조하십시오.
구성에 따라 mysqld_safe 또는 다른 mysqld 시작 스크립트에 추가 옵션을 지정합니다.
4 단계 : 마스터를 사용하도록 슬레이브에 지시합니다 마스터 복제 데이터 소스로 사용하여 파일 기반 포지셔닝이 아니라 GTID 기반 자동 포지셔닝을 사용하도록 슬레이브에 지시합니다. 트랜잭션이 GTID로 식별되는 것을 슬레이브에 전달 MASTER_AUTO_POSITION
옵션을 사용하여 슬레이브로 CHANGE MASTER TO
문을 실행합니다.
마스터의 호스트 이름과 포트 번호 및 마스터에 연결 슬레이브가 사용할 수있는 복제 사용자 계정의 사용자 이름과 암호를 적절한 값을 지정해야하는 경우도 있습니다. 이들이 1 단계 이전에 이미 설정되어 있고, 변경할 필요가없는 경우 해당 옵션을 여기에 표시된 문에서 안전하게 생략 할 수 있습니다.
mysql>CHANGE MASTER TO
>MASTER_HOST =
>host
,MASTER_PORT =
>port
,MASTER_USER =
>user
,MASTER_PASSWORD =
>password
,MASTER_AUTO_POSITION = 1;
MASTER_LOG_FILE
옵션과 MASTER_LOG_POS
옵션은 MASTER_AUTO_POSITION
가 1로 설정되어있는 경우 사용할 수없는 경우가 있습니다. 그렇게하려고하면 CHANGE MASTER TO
문은 오류로 실패합니다. (GTID 기반 복제에서 파일 및 위치 기반 복제로 돌아갈 필요가있는 경우, CHANGE MASTER TO
문 MASTER_AUTO_POSITION = 0
과 함께 이러한 옵션 중 하나 또는 모두를 사용할 필요가 있습니다.)
CHANGE MASTER TO
문이 성공했음을 전제로 이같이 슬레이브를 시작할 수 있습니다.
mysql> START SLAVE;
5 단계 : 읽기 전용 모드를 비활성화합니다 다음 문을 실행하여 마스터 업데이트의 접수를 다시 시작할 수 있습니다.
mysql> SET @@global.read_only = OFF;
이제 GTID 기반 복제 작동 중입니다 마스터에서 예전처럼 활동을 시작 (또는 재개) 할 수 있습니다. 섹션 17.1.3.3 "페일 오버 및 확장에 GTID 사용" 에서는 GTID 사용시의 새로운 노예를 만드는 방법을 설명합니다.