-
[docker] master slave DB 구조 만들기 (Replication)공부 이야기 2024. 2. 15. 12:49
master slave 구조를 만드는데 다음 두 가지 방식을 찾음
1. MASTER_LOG_FILE, MASTER_LOG_POS 정보를 이용한 방식
참고) https://jane096.github.io/project/mysql-master-slave-replication/
부하 분산을 위해 MySQL을 Master/Slave로 이중화를 구성해 본 이야기
mysql을 master, slave로 분리하여 읽기와 쓰기의 기능을 분리해 부하를 분산시켜 본 이야기
jane096.github.io
2. GTID를 이용한 방식
참고) https://hoing.io/archives/18445
MySQL GTID 를 사용한 Replication(복제) 설정
hoing.io
1) MASTER DB에서 해야할 일
# 1. 복제용 계정 생성 및 권한 부여
create user 'repl_user'@'%' IDENTIFIED WITH caching_sha2_password BY '1234'; grant replication slave, replication client on *.* to 'repl_user'@'%'; flush privileges;
(계정, 비밀번호는 자유롭게~)
# 2. 설정 정보 변경 (/etc/my.cnf)
[root]# vi /etc/my.cnf# master [mysqld] server-id=1 log-bin=binlog gtid-mode=ON enforce-gtid-consistency=ON log_slave_updates=ON
2) SLAVE DB에서 해야할 일
# 1. 설정 정보 변경 (/etc/my.cnf)
[root]# vi /etc/my.cnf# server [mysqld] server-id=2 log-bin=binlog gtid-mode=ON enforce-gtid-consistency=ON log_slave_updates=ON
server id를 master와 동일하게 할 경우 에러남;
# 2. MASTER DB에서 생성한 복제용 계정과 연동
# 복제 설정 mysql> CHANGE MASTER TO MASTER_HOST="mysql_master", MASTER_USER='repl_user', MASTER_PASSWORD='1234', MASTER_AUTO_POSITION=1; # 복제 시작 및 확인 mysql> start slave; mysql> show slave status\G
3) 참고1. 기본적으로 MASTER_HOST에는 ip 주소를 추가해야 함
-> Bridge Network로 DB들을 묶어주면 호스트명을 추가할 수 있음
2. slave 백그라운드가 stop된 상태이어야만 CHANGE MASTER 가능함
3. MASTER DB의 복제할 SLAVE DB의 스키마(데이터베이스, 테이블)이 모두 일치해야함
4) 퀴즈
1 - STOP SLAVE 상태일 때, MASTER DB에서 insert 작업이 발생한 경우, SLAVE DB 상태는 어떻게 될까?
2 - 다시 START SLAVE를 재개했을 때, 해당 DB의 상태는?
'공부 이야기' 카테고리의 다른 글