- my.cnf 기준 필요한 설정값.

  -  현재 원본 서버는 구동되는 상태이므로, 원본 서버에 my.cnf 를 복하여 server-id만 변경해서 복제본에서 사용

gtid-mode = on
enforce-gtid-consistency=on
binlog-checksum=NONE
log-slave-updates=on
server-id = 1234  # 복제를 구성하는 서버간의 값이 달라야함

 

- 복제용 계정, 원본서버에 생성 

CREATE USER 'repl'@'복제본서버 IP' IDENTIFIED BY '패스워드';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'복제본서버 IP';

-  슬레이브 장비에서 마스터 서버를 대상으로 아래의 복제 설정을 추가.

change master to
master_host = '원본 서버 IP',
master_port =원본 서버 Port,
MASTER_USER='repl',
MASTER_PASSWORD='패스워드',
MASTER_AUTO_POSITION =1; 

-  원본 서버에서 백업 수행.

  -  gtid사용시 --all-databases --triggers --routines --events  옵션 권장

  - 개별 디비 백업 시 경고 발생. (개별 디비 백업 수행 대신 디비 전체 백업을 사용)

mysqldump --default-character-set=utf8mb4 -u아이디 -p패스워드 --single-transaction --all-databases --triggers --routines --events -S "mysql.sock 파일위치" | gzip > backup.sql.gz

- 슬레이브에서 백업 데이터 임포트 전 gtid관련 정보 퍼지.

show global variables like 'gtid_executed';
+-----------------+-------------------------------------------------------+
| Variable_name   | Value                                                 |
+-----------------+-------------------------------------------------------+
| gtid_executed   | 027f123c-51b5-22ef-eeb3-225056ac2425:1-1322           |
+-----------------+-------------------------------------------------------+
1 row in set (0.01 sec)

show global variables like 'gtid_purged';
+-----------------+-------------------------------------------------------+
| Variable_name   | Value                                                 |
+-----------------+-------------------------------------------------------+
| gtid_purged     | 019f728c-52b5-11ea-aeb3-005056ac2425:1-1520           |
+-----------------+-------------------------------------------------------+

reset master;

show global variables like 'gtid_executed';
+-----------------+-------------+
| Variable_name   | Value       |
+-----------------+-------------+
| gtid_executed   |             |
+-----------------+-------------+
1 row in set (0.00 sec)

show global variables like 'gtid_purged';
+-----------------+-------------+
| Variable_name   | Value       |
+-----------------+-------------+
| gtid_purged     |             |
+-----------------+-------------+
1 row in set (0.00 sec)

 

- 백업 데이터 임포트

mysql --default-character-set=utf8mb4 -u아이디 -p패스워드 -S "mysql.sock 파일위치" < backup.sql

- 복제 시작 설정

start slave;

- 정상상태 확인

  - 원본, 복제본 비교

show global variables like 'gtid_executed';
show global variables like 'gtid_purged';

 

  - 복제 상태 확인 (Slave_IO_Running, Slave_SQL_Running 이 Yes 인지 확인)

show slave status\G

- 원본 서버에서 테스트 DB 생성후 복제본 DB에 생성되는지 확인 

create database test_db;

 

 

참고

- slave장비 붙이기

https://minsugamin.tistory.com/entry/MySQL-57-GTID

- 에러메세지 관련

https://www.percona.com/blog/2013/02/08/how-to-createrestore-a-slave-using-gtid-replication-in-mysql-5-6/

'MySQL' 카테고리의 다른 글

GTID - 트랜잭션 건너뛰기  (0) 2021.06.13
GTID 복제 상태 확인  (0) 2021.06.12
GTID를 사용한 복제구성  (0) 2021.06.09
GTID  (0) 2021.06.09
MySQL InnoDB Row 형식  (0) 2021.06.04

+ Recent posts