본문 바로가기
Database

데이터베이스 이중화 구현: 마스터-슬레이브 복제 구축

by kmkhm 2025. 4. 25.

이번 포스팅에서는 온프레미스 환경에서 데이터베이스 이중화의 개념, 장단점, 그리고 직접 구현해 본 경험을 공유하겠습니다.

데이터베이스 이중화란?

데이터베이스 이중화는 동일한 데이터를 여러 데이터베이스 서버에 복제하여 저장하는 기술입니다. 주로 마스터-슬레이브 구조로 구현되며, 마스터 서버에서 이루어진 변경사항(INSERT, UPDATE, DELETE 등)이 자동으로 슬레이브 서버에 복제됩니다.

 

데이터베이스 이중화의 장단점

장점

  • 고가용성: 마스터 서버에 장애가 발생해도 서비스 연속성 보장
  • 부하 분산: 읽기 작업을 슬레이브 서버로 분산하여 성능 향상
  • 데이터 안전성: 여러 서버에 데이터를 분산 저장하여 손실 위험 감소
  • 확장성: 필요에 따라 슬레이브 서버 추가 가능

단점

  • 설정 복잡성: 초기 설정과 유지 관리가 복잡
  • 복제 지연: 마스터에서 슬레이브로의 복제 시 약간의 시간 지연 발생
  • 자원 사용 증가: 여러 서버 운영에 따른 자원 소비
  • 비용 증가: 추가 서버 구매 및 관리 비용 발생

구현

이론을 실제로 적용해보기 위해 온프레미스 환경에서 MariaDB를 사용한 마스터-슬레이브 복제 시스템을 구축했습니다. 이 과정에서 발견한 주요 주의사항과 구현 방법을 소개하겠습니다.

 

구현 환경

 

  • OS: Rocky Linux 9
  • DB: MariaDB
  • 서버 구성: 라우터 서버 1대, DB 서버 3대(마스터 1, 슬레이브 2)

 

1. 먼저 마스터 서버에서 바이너링 로깅을 활성해주고, 복제에 사용할 사용자를 생성해야 합니다.

[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
binlog_do_db = netflix  # 복제할 데이터베이스 이름



# 바이너리 로그 디렉토리 생성
sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql

 

복제에 사용할 사용자의 경우, 간단하게 생성하시면 됩니다.

CREATE USER 'netflix_user'@'%' IDENTIFIED BY '복제비밀번호';
GRANT REPLICATION SLAVE ON *.* TO 'netflix_user'@'%';
FLUSH PRIVILEGES;

 

다음으로 바이너리 로그의 정보가 필요한데, 이 로그 정보 기준으로 Slave가 접근할 수 있습니다.

# File, Position
SHOW MASTER STATUS;

 

2. 다음으로 슬레이브 서버에 대한 설정을 해줘야 합니다.

슬레이브 서버도 마스터 서버처럼 설정 파일을 따로 변경해줘야 합니다.

[mysqld]
server-id = 2  # 두 번째 슬레이브는 3으로 설정
replicate_do_db = netflix  # 복제할 데이터베이스 이름

servier-id의 경우, 유일한 값으로 지정해줘야 하는데, 저의 경우 슬레이브가 2개여서 각각 2, 3을 부여했습니다.

 

마스터 연결을 위한 설정을 DB에 접속한 후 해줘야 합니다.

STOP SLAVE;
CHANGE MASTER TO 
  MASTER_HOST='192.168.0.2',  # 마스터 서버 IP
  MASTER_USER='replication_user',
  MASTER_PASSWORD='복제비밀번호',
  MASTER_LOG_FILE='mysql-bin.000001',  # 마스터에서 확인한 File 값
  MASTER_LOG_POS=123;  # 마스터에서 확인한 Position 값
START SLAVE;


SHOW SLAVE STATUS\G

위처럼 설정해주고, STATUS를 확인하였을 때, Slave_IO_Running과 Slave_SQL_Running이 모두 "Yes"로 표시되면 복제가 정상적으로 작동하는 것입니다.

 

한 가지 주의사항으로 복제 설정 전에 마스터와 슬레이브 서버에 동일한 데이터베이스와 테이블 구조가 있어야 합니다.

예를 들어, 마스터에 netflix 데이터베이스와 user 테이블이 있다면, 슬레이브에도 동일한 구조가 필요합니다.

또, 복제 설정 전에 마스터에 이미 존재하는 데이터는 자동으로 복제되지 않습니다. 복제는 설정 시점 이후의 변경사항만 적용됩니다.

 

결론

데이터베이스 이중화는 데이터의 안정성과 시스템 가용성을 높이는 중요한 기술입니다. 이번 온프레미스 환경에서의 구현을 통해 MariaDB 마스터-슬레이브 복제 설정과 주의사항에 대해 실제적인 경험을 얻었습니다. 데이터베이스 이중화를 구현하려는 다른 분들에게도 도움이 되길 바랍니다.

댓글