독까의 이야기

리눅스 서버와 윈도우 서버에 mysql 을 설치 했으니, 이중화를 구성하려고 한다.

MS-SQL 이중화와는 방식이 다르긴 하지만 뭐, 그냥 저냥 해보면 될 것 같다. 


1.  Master 와 Slave 할당


검색을 통해서 알아보니깐 DB 버전이 완전히 같을 필요는 없지만, Slave 가 버전이 높아야 한다고 한다. 


그래서 Master 는 리눅스 mysql 5.1 을, Slave 는 윈도우 mysql 5.6 으로 정했다. 


M : Linux / mysql 5.1 / 192.168.1.10

S : Window / mysql 5.6 / 192.168.1.20




2.  M 의 my.cnf 설정 추가


[mysqld] 하단에 아래의 구문 추가


log-bin=mysql-bin

server-id = 1


mysqld 서비스 재시작


# service mysqld restart




3.  M 의 mysql 에 S 에서 접속할 사용자 계정 생성


mysql> use mysql;

mysql> grant replication slave on *.* to 'repluser'@'192.168.1.20' identified by 'password';




4.  S 의 my.ini 설정 추가


[mysqld] 하단에 아래의 구문 추가


log-bin=mysql-bin

server-id = 2


윈도우 서비스에서 mysql 재시작




5.  S 에서 M 에 접속하는 정보 등록


my.ini 에 아래와 같이 구문을 추가 하고, 서비스 재시작 했더니 구동 실패가 발생했다.


[mysqld] 

master-host=192.168.1.10

master-user=repluser

master-password=password

master-port=3306


mysql 에서 직접 M 의 접속 정보 입력을 진행 했다. 


mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.10',MASTER_USER='repluser',MASTER_PASSWORD='password', MASTER_PORT=3306, MASTER_CONNECT_RETRY=30;

mysql > start slave;


하고 나면, my.ini 에 해당 설정이 추가 되는게 아니라  C:\ProgramData\MySQL\MySQL Server 5.5\data\master.info 파일이 생성되어 저장 된다. 


윈도우 환경이라서 다른 것일 수도 있다. (리눅스 끼리 연동 후 확인 필요)




6.  M 의 mysql 에서 replication 작동 상태 확인


mysql> show master status;




7.  S 의 mysql 에서 replication 작동 상태 확인


mysql> show slave status;




8.  M 의 mysql 에 접속하여 테이블 생성 및 데이타 입력


mysql> use test;

mysql> create table gunnm ( no int(5), date int(10), text char(50), primary key(no) );

mysql> insert into gunnm values ('1', '20180321', 'replication test success, gunnm.tistory.com');

mysql> select * from gunnm;




9.  S 의 mysql 에 접속하여 gunnm 테이블 조회


mysql> use test;

mysql> select * from gunnm;




10.  결과

MS-SQL 의 미러링을 구성하는 Slave 서버에서는 대부분의 기능이 제한적인데 반해, mysql 에서는 slave 이지만 데이타값 조회가 가능한 것을 확인했다. 

그래서 slave 에서 데이타를 입력하면 master 에도 반영이 되는가를 테스트 해보았는데, 결과는 


master 의 테이블에는 slave 에서 입력한 데이타값 저장이 되지 않았다. 



결과적으로 Master 로 부터 데이타를 가져와서 저장을 하지만, 양방향 동기화가 되는 것은 아니다. 

즉, Master 에서 Slave 로의 데이타 백업만 진행되는 것을 확인 했다. 

구성 방식을 바꾸면 가능한지를 확인해 봐야겠다. 


OS 가 상이하여도 (리눅스 + 윈도우), mysql 을 DBMS 로 사용 한다면 이중화 구성이 가능함을 확인했다.