원본-복제본 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 |