728x90
DB replication이란?
DB replication은 데이터베이스 시스템에서 사용되는 기술로, 마스터 데이터베이스(DB)의 변경 내용을 하나 이상의 슬레이브(DB)에 복제하는 과정을 말합니다.
이를 통해 데이터의 안정성, 가용성, 성능을 향상시킬 수 있습니다.
Master DB vs SlaveDB
1. Master DB
- 마스터 디비는 데이터베이스 시스템에서 기본 데이터 저장소 역할을 합니다.
- 읽기와 쓰기 작업에 대한 모든 데이터 변경 작업(INSERT, UPDATE, DELETE)을 처리합니다.
- 마스터 디비에 수행된 변경 작업은 슬레이브 디비에 자동으로 복제됩니다.
- 데이터의 일관성과 무결성을 유지하는 중요한 역할을 수행합니다.
2. Slave DB
- 슬레이브 디비는 마스터 디비의 복제본으로 작동합니다.
- 주로 읽기 작업을 처리하는데 사용됩니다.
- 마스터 디비에서 변경된 데이터를 주기적으로 가져와 슬레이브 디비를 업데이트합니다.
- 슬레이브 디비는 읽기 작업을 처리하는 주 서버로 사용되어 응답 시간을 최적화하고 부하를 분산시킵니다.
- 슬레이브 디비는 마스터 디비의 장애 발생 시에도 작동하여 데이터 손실을 최소화합니다.
mysql 설정
1. 마스터 디비 설정
# my.cnf 또는 my.ini 파일을 열어서 [mysqld] 섹션 아래 추가
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=database_name
여기서 database_name은 복제할 데이터베이스의 이름입니다.
설정 후 mysql 재시작
2. 슬래이브 디비 설정
# my.cnf 또는 my.ini 파일을 열어서 [mysqld] 섹션 아래 추가
[mysqld]
server-id=2
3. 계정 생성 및 권한 부여
CREATE USER 'replication_user'@'slave_ip' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'slave_ip';
FLUSH PRIVILEGES;
마스터 디비에 접속하고, 아래 쿼리를 실행하여 복제에 사용할 계정을 생성합니다:
4. 슬레이브 디비에서 복제 설정
STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.XXXXXX', MASTER_LOG_POS=XXX;
START SLAVE;
슬레이브 디비에 접속하고, 아래 쿼리를 실행하여 복제를 설정합니다
mysql-bin.XXXXXX과 XXX는 마스터 디비의 SHOW MASTER STATUS; 결과에서 확인할 수 있는 파일 이름과 위치입니다.
5. 복제상태 확인
슬레이브 디비에서 SHOW SLAVE STATUS; 쿼리를 실행하여 복제 상태를 확인할 수 있습니다.
Slave_IO_Running과 Slave_SQL_Running이 Yes로 표시되어야 합니다.
다음 글에서는 설정한 replication을 spring boot에 적용 해보는 방법에 대해서 작성하겠습니다.
'인프라' 카테고리의 다른 글
AWS - 파라미터 스토어, parameter store (0) | 2024.08.16 |
---|---|
nestjs + docker + minikube + kubectl로 쿠버네티스 찍먹하기 (0) | 2024.04.02 |