본문 바로가기

리눅스

MySQL 리플리케이션(mysql replication) 설정 방법

728x90

MySQL 리플리케이션(mysql replication) 설정 방법

MySQL Replication은 MySQL 서버를 여러 개 사용하여 데이터베이스의 복제 및 분산처리를 할 수 있는 기능입니다. 이 기능을 사용하면 하나의 마스터 MySQL 서버에서 변경된 데이터를 여러 개의 슬레이브 MySQL 서버에 자동으로 전달할 수 있습니다. 이를 통해 데이터의 안정성을 높일 수 있고, 부하 분산과 데이터 분석 등의 다양한 용도로 활용할 수 있습니다.

 

이번 게시글에서는 MySQL Replication 설정 방법을 안내하겠습니다.

1. 마스터 MySQL 서버 설정

MySQL Replication을 사용하기 위해서는 먼저 마스터 MySQL 서버를 설정해야 합니다. 마스터 MySQL 서버에서는 변경된 데이터를 슬레이브 MySQL 서버로 전송할 준비를 합니다.

 

1-1. MySQL 설정 파일 수정

MySQL 설정 파일(my.cnf 또는 my.ini)을 수정하여 Replication을 사용할 준비를 합니다.

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=mydb
  • server-id : 마스터 MySQL 서버를 구분하기 위한 고유한 번호입니다. 서버마다 유일한 번호를 부여합니다.
  • log-bin : 마스터 MySQL 서버에서 변경된 데이터를 로그 파일에 기록하는 설정입니다.
  • binlog-do-db : 로그 파일에 기록할 데이터베이스 이름을 지정합니다.

1-2. MySQL 사용자 추가

MySQL 사용자를 추가하여 슬레이브 MySQL 서버가 마스터 MySQL 서버에 접속할 수 있도록 합니다.

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
  • 'repl'@'%' : 접속을 허용할 IP 주소를 지정합니다. %는 모든 IP 주소를 허용하는 것을 의미합니다.
  • password : 사용자 비밀번호를 지정합니다.

1-3. MySQL 재시작

MySQL 서비스를 재시작하여 변경된 설정을 적용합니다.

sudo systemctl restart mysql

2. 슬레이브 MySQL 서버 설정

마스터 MySQL 서버에서 변경된 데이터를 받아들이기 위해 슬레이브 MySQL 서버를 설정합니다.

728x90

2-1. MySQL 설정 파일 수정

MySQL 설정 파일(my.cnf 또는 my.ini)을 수정하여 Replication을 사용할 준비를 합니다.

[mysqld]
server-id=2
relay-log=mysql-relay-bin
log-slave-updates
  • server-id : 슬레이브 MySQL 서버를 구분하기 위한 고유한 번호입니다. 마스터 MySQL 서버의 server-id와 겹치지 않도록 유일한 번호를 부여합니다.
  • relay-log : 마스터 MySQL 서버로부터 변경된 데이터를 로그 파일에 기록하는 설정입니다.
  • log-slave-updates : 슬레이브 MySQL 서버에서 변경된 데이터도 로그 파일에 기록하도록 합니다.

2-2. MySQL 재시작

MySQL 서비스를 재시작하여 변경된 설정을 적용합니다.

sudo systemctl restart mysql

2-3. 슬레이브 MySQL 서버 설정

슬레이브 MySQL 서버를 마스터 MySQL 서버에 연결하여 Replication을 시작합니다.

CHANGE MASTER TO
-> MASTER_HOST='master_ip_address',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=123;
START SLAVE;
  • MASTER_HOST : 마스터 MySQL 서버의 IP 주소를 지정합니다.
  • MASTER_USER : 마스터 MySQL 서버에 접속할 사용자 이름을 지정합니다.
  • MASTER_PASSWORD : 사용자 비밀번호를 지정합니다.
  • MASTER_LOG_FILE : 마스터 MySQL 서버에서 변경된 데이터가 기록된 로그 파일 이름을 지정합니다.
  • MASTER_LOG_POS : 마스터 MySQL 서버에서 변경된 데이터가 기록된 로그 파일 내에서의 위치를 지정합니다.

3. Replication 상태 확인

Replication이 정상적으로 동작하는지 확인합니다.

SHOW SLAVE STATUS\G

위 명령어를 실행하면 슬레이브 MySQL 서버의 Replication 상태를 확인할 수 있습니다. Slave_IO_Running과 Slave_SQL_Running이 Yes로 표시되면 정상적으로 Replication이 동작하고 있다는 의미입니다.

 

이상으로 MySQL Replication 설정 방법을 설명하였습니다. Replication을 사용하면 데이터베이스의 안정성을 높이고, 부하 분산 및 데이터 분석 등에 유용하게 활용할 수 있습니다.

 

참고URL

- mysql 5.7 replication 설정 : https://scbyun.com/1091

- mysql 리플리케이션(replication) 설정 : https://scbyun.com/749

- MySQL Replication 설정 : https://scbyun.com/429

 

728x90