- 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
- 에러메세지 관련
'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 |