본문 바로가기

Database/mysql

[mysql] 이중화 설정 방법 (replication)

반응형

두 개의 리눅스 서버의 sql을 같은 DB처럼 사용하는 것이 이중화입니다.

오늘 설명할 이중화 설정 방법은 mysql에서 사용합니다.

Master -> slave  (1 -> 2) 단방향으로 동작하는 방식입니다. 

 

 

1. 설치 된 두 개의 mysql을 준비합니다.

 

준비한 mysql 서버 버전은 5.5.57, 5.5.44로,

OS는 CentOS 6로 준비하였습니다.

웬만하면 같은 버전으로 준비하는 것이 좋으나, 세부 버전 정도는 달러도 무방합니다.

 

두개의 mysql 서버

 

 

 

2. 양 쪽 서버에서 mysql 설정 파일을 열어줍니다.

bash
# vi /etc/my.cnf

 

mysql 설정파일

 

 

3. 각 서버의 mysql에 서버 번호를 부여합니다.

[mysqld] 아래 server-id='번호' 외의 다른 옵션은 무시하셔도 됩니다.

/etc/my.cnf
(1번 서버)
[mysqld]
server-id=1
slave-skip-errors=all          -> slave 서버에서 오류가 발생 시 무시하고 넘기는 옵션
                                        무결성이 최 우선일 경우 생략 가능이나, 이중화가 해제 될 가능성 존재함

(2번 서버)
[mysqld]
server-id=2
slave-skip-errors=all

 

my.cnf 아래 서버번호 부여

 

 

4. mysql 서비스를 재 시작합니다.

bash
# service mysql restart

설정 값 적용을 위해 mysql 재 시작

 

 

5. 이중화를 할 수 있는 계정 생성과 권한을 부여합니다.

권한 부여를 위해 mysql 서버로 접속합니다.

bash
# mysql -u root -p

 

mysql
mysql > GRANT REPLICATION SLAVE ON *.* TO 'replicationuser'@'%' IDENTIFIED BY 'krujy1234!';
mysql > FLUSH PRIVILEGES;
mysql > show grants for 'replicationuser'@'%';

grant replication slave on [데이터베이스 명].[테이블 명] to '[이중화 계정]'@'[접속 IP 정보]' identified by '[비밀번호]';

※ 이중화 계정은 없을 시 생성됩니다.

※ 반드시 두 서버 모두에 적용해야 합니다.

 

mysql replicationuser 에 대해 이중화 권한 부여

 

 

6. Slave(2번) 서버에서 이중화 명령어를 입력합니다.

Master (1번) 서버에서 정보를 확인합니다.

로그 파일 명과, 현재 입력하고 있는 위치를 알아야 합니다.

mysql (master)
mysql > show master status;

 

master의 로그 파일 정보

 

mysql (slave)
mysql > stop slave;
mysql > reset slave;
mysql > change master to master_host='192.168.99.252', master_user='replicationuser', master_port=3306, master_password='krujy1234!', master_log_file='mysql-bin.000078', master_log_pos=9720519;
mysql > start slave;

master_log_file, master_log_pos의 경우에는 위에서 확인했던

Master 서버의 File (mysql-bin.000078)과 Position (9720519)를 입력해주면 됩니다.

 

문구 의미
master_host Master 서버의 IP
master_user Master 서버의 이중화 계정
master_port Master 서버의 mysql port 번호
master_password Master 서버의 이중화 계정 비밀번호
master_log_file Master 서버의 mysql 로그 파일 명
master_log_pos Master 서버의 mysql 로그 파일 내 작성 위치

slave 서버 replication 설정

 

 

7. 정상적으로 이중화가 설정되었는지 확인합니다.

 

6번을 마지막으로 이중화 설정이 정상적으로 완료되었습니다.

이중화가 정상적으로 작동 중인지 확인합니다.

 

mysql (slave)
mysql > show slave status\G;

※ 마지막에 붙은 \G라는 옵션은 내용을 더 깔끔하게 볼 수 있게 해주는 옵션입니다.

 

mysql replication(이중화)의 현재 상태 정보

 

Master_Host : 192.168.99.252

위와 같이 Master의 IP가 맞는지 다시 한번 확인합니다.

 

Slave_IO_State :  Waiting for master to send event

Slave_IO_Running : Yes

Slave_SQL_Running : Yes

 

세 개의 상태가 위와 같이 표기가 되어 있다면 정상적으로 이중화가 완료된 것입니다.

반응형