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에 적용 해보는 방법에 대해서 작성하겠습니다.

+ Recent posts