백엔드 개발에서 데이터베이스 리플리케이션은 고가용성과 데이터 안정성을 보장하기 위해 필수적인 기술입니다. 이번 글에서는 MySQL을 사용하여 데이터베이스 리플리케이션을 구축하는 단계별 튜토리얼을 제공하겠습니다. 이 튜토리얼에서는 마스터-슬레이브 구조를 사용해 데이터베이스 복제를 설정하는 방법을 소개합니다.
1단계: MySQL 설치
먼저, MySQL 서버를 두 대 설치해야 합니다. 한 서버는 마스터 역할을 하고, 다른 서버는 슬레이브 역할을 합니다. 각 서버에서 다음 명령어를 실행하여 MySQL을 설치합니다.
sudo apt update
sudo apt install mysql-server
설치가 완료되면 MySQL 서비스를 시작합니다.
sudo systemctl start mysql
sudo systemctl enable mysql
2단계: 마스터 서버 설정
마스터 서버에서 리플리케이션을 위해 몇 가지 설정을 해야 합니다. MySQL의 설정 파일인 my.cnf를 수정합니다. 이 파일은 일반적으로 /etc/mysql/my.cnf 또는 /etc/my.cnf에 위치합니다.
sudo nano /etc/mysql/my.cnf
설정 파일에 다음 내용을 추가합니다.
[mysqld]
log-bin=mysql-bin
server-id=1
log-bin: 바이너리 로그 기능을 활성화합니다.server-id: 서버의 고유 ID를 설정합니다. 마스터 서버는 1로 설정합니다.
설정을 저장한 후 MySQL 서비스를 재시작합니다.
sudo systemctl restart mysql
3단계: 마스터 서버에서 사용자 생성
슬레이브 서버가 마스터 서버에 접속할 수 있도록 전용 사용자와 권한을 생성합니다. MySQL에 접속하여 다음 명령어를 실행합니다.
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON . TO 'replica_user'@'%';
FLUSH PRIVILEGES;
위의 SQL 문에서 replica_user와 password를 원하는 값으로 변경합니다.
4단계: 데이터베이스 백업
슬레이브 서버에서 데이터베이스를 복제하기 위해 마스터 서버의 데이터를 백업합니다. 다음 명령어를 사용하여 백업을 생성합니다.
mysqldump -u root -p --all-databases --master-data > backup.sql
이 명령어는 모든 데이터베이스를 백업하고, 리플리케이션을 위한 메타데이터를 포함합니다.
5단계: 슬레이브 서버 설정
슬레이브 서버에서 MySQL을 설정합니다. 슬레이브 서버의 my.cnf 파일을 수정하여 서버 ID를 설정합니다.
sudo nano /etc/mysql/my.cnf
다음 내용을 추가합니다.
[mysqld]
server-id=2
설정을 저장한 후 MySQL 서비스를 재시작합니다.
sudo systemctl restart mysql
6단계: 슬레이브 서버 데이터 복원
슬레이브 서버에서 방금 백업한 SQL 파일을 사용하여 데이터를 복원합니다.
mysql -u root -p < backup.sql
7단계: 슬레이브 서버에서 리플리케이션 설정
슬레이브 서버에서 마스터 서버와의 연결을 설정합니다. MySQL에 접속하여 다음 명령어를 실행합니다.
CHANGE MASTER TO
MASTER_HOST='마스터서버_IP',
MASTER_USER='replica_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', -- 백업 파일에서 확인한 바이너리 로그 파일 이름
MASTER_LOG_POS=기록된_포지션; -- 백업 파일에서 확인한 위치
이때 마스터서버_IP, password, mysql-bin.000001, 기록된_포지션을 실제 값으로 변경합니다.
8단계: 슬레이브 서버 시작
리플리케이션을 시작합니다.
START SLAVE;
상태를 확인하여 슬레이브가 정상적으로 작동하는지 확인합니다.
SHOW SLAVE STATUS\G
여기서 Slave_IO_Running과 Slave_SQL_Running이 모두 "Yes"로 나타나면 리플리케이션이 성공적으로 설정된 것입니다.
마무리
이번 튜토리얼에서는 MySQL을 이용하여 마스터-슬레이브 리플리케이션을 단계별로 설정하는 방법을 알아보았습니다. 데이터베이스 리플리케이션은 애플리케이션의 데이터 가용성을 높이는 중요한 기술입니다. 이 과정을 통해 데이터 안정성을 확보하고, 장애 발생 시 빠른 복구가 가능해지며, 읽기 성능 향상에도 기여할 수 있습니다. 실제 운영 환경에서 이 기술을 활용하여 더 나은 서비스를 제공할 수 있기를 바랍니다.