원본-복제본 1:1 로 구성되어 있는 경우 GTID를 적용하기 위한 방법은 아래와 같다. 

1. 서버 동기화 

- GTID를 사용하지 않고 복제 구성이 되어 있는 경우에만 필요

- 신규 서버의 경우 3단계부터 진행 

- 각 서버를 읽기 전용으로 설정 

mysql> SET @@GLOBAL.read_only = ON;

- 진행중인 모든 트랜잭션이 커밋 또는 롤백 될때까지 기다린다. 

  복제본에 모든 트랜잭션이 적용되었느지 확인한다. 

 

2. 두 서버 중지 

- mysqladmin 을 사용하여 각 서버를 중지한다.

  그런데 mysqladmin 으로 서버 내려본적이 없네 ㅋㅋㅋ 

shell> mysqladmin -uusername -p shutdown

 

3. GTID 에 필요한 옵션을 적용하여 서버 구동 

gtid_mode=ON
enforce-gtid-consistency=ON

- 복제 설정을 구성하기전에 --skip-slave-start 옵션을 사용하여 복제본을 시작한다. 

  --skip-slave-start 옵션 적용시 복제본이 시작될때 복제시작을 하지 않는다. 

- 복제 구성을 위해서 원본서버는 바이너리 로그가 활성화되어 있어야한다. 복제본은 바이너리 로그 없이 GTID를 사용할수 있다. 복제본 서버에서 바이너리 로그를 비활성화 해야되는 경우 --skip-log-bin, --log-slave-updates=OFF옵션을 지정하여 바이너리 로그ㄹ르 비활성화할 수 있다.

 

4. GTID 기반의 자동 위치 지젖을 사용하도록 복제본 구성 

mysql> CHANGE MASTER TO
     >     MASTER_HOST = host,
     >     MASTER_PORT = port,
     >     MASTER_USER = user,
     >     MASTER_PASSWORD = password,
     >     MASTER_AUTO_POSITION = 1;

Or from MySQL 8.0.23:

mysql> CHANGE REPLICATION SOURCE TO
     >     SOURCE_HOST = host,
     >     SOURCE_PORT = port,
     >     SOURCE_USER = user,
     >     SOURCE_PASSWORD = password,
     >     SOURCE_AUTO_POSITION = 1;

- 원본서버의 호스트 이름 또는 IP, 포트 번호에 적절한 값을 지정하여 원본서버에 연결하는데 사용할 수 있는 복제 사용자 계정의 사용자 이름과 암호를 지정해야 한다. 

 

5. GTID가 적용된 백업 생성 

- GTID 를 적용하기전에 생성된 백업은 GTID가 적용된 서버에 사용할 수 없기 때문에 이시점에서 새로운 백업을 한다. 

 

6. 복제를 시작하고 읽기 전용 모드 해제

mysql> START SLAVE;
Or from MySQL 8.0.22:
mysql> START REPLICA;

- 1단계에서 서버를 읽기 전용으로 구성한 경우 서버가 업데이트를 적용할 수 있도록 다음 명령문을 실행한다. 

mysql> SET @@GLOBAL.read_only = OFF;

 

참고

https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-howto.html

'MySQL' 카테고리의 다른 글

GTID 복제 상태 확인  (0) 2021.06.12
GTID 사용시 복제본 복구  (0) 2021.06.10
GTID  (0) 2021.06.09
MySQL InnoDB Row 형식  (0) 2021.06.04
online ddl 알고리즘  (0) 2021.05.27

+ Recent posts