본문 바로가기
Database

MySQL Replication(미러링)

by 전재훈 2014. 5. 9.
반응형

 - 필요성 - 

서버 운영중에 발생하는 예기치 못한 서비스 중단에 대해 최신 자료의 복구를 위해


- REPLICATION 란? - 

Master DB를 복제하는 Slave DB를 만들어 데이터 백업, 복구, 부하 분산 등에 이용하는 것 


- Mysql Replication 의 특징 - 

1. 마스터-> 슬레이브로의 일방향 복제기능. 

2. 바이너리 로그(binlog)를 이용한 미러링. 

3. 쿼리에 의한 부하 분산. 

4. 다수의 슬레이브 서버를 이용한 부하 분산. 


- REPLICATION 설정 방법 - 

1. Master DB와 Slave DB에 Mysql 을 설치 

2. Master DB와 Slave DB의 Mysql 의 데이터를 일치시킴. (mysqldump 등을 이용)


3. Master DB와 Slave DB의 my.cnf(보통 /etc/my.cnf에 존재) 수정


<<<Master DB>>>

[mysqld] 

log-bin 

server-id=1 


<<<Slave DB>>>

[mysqld] 

master-host=마스터의 IP/도메인 주소 

master-user=아이디 

master-password=패스워드 

master-port=3306 (마스터 Mysql 포트번호) 

server-id=2 


마스터에 슬레이브가 접근 가능하도록 권한 수정

GRANT FILE ON *.* TO 'ID'@"%" IDENTIFIED BY 'password'; 

(이걸 빠뜨린다면 아래와 같은 오류가 발생할 수 있다)

  • error connecting to master 'repl@192.168.0.22:3306' - retry-time: 60  retries: 86400


여기서 '%'는 모든 ip주소를 의미하고 특정 ip만 접근가능하도록 하기 위해서는 '%' 대신에 ip주소를 적어도 된다 


만일 여러 대의 슬레이브 서버를 구축하는 경우, server-id 라는 고유넘버를 달리하여 슬레이브 설정과 같이 해 주면 된다. 


이제 모든 설정이 완료되면 마스터와 슬레이브 서버를 재시작한다. (mysql.server restart)



- REPLICATION 작동 확인 방법 - 


설정과 Mysql 재시작이 완료되면 Replication 작동 상태를 확인한다. 

먼저 마스터의 Mysql Shell로 로그인 하여 


> show master status ; 


를 하여 다음과 같은 메시지가 나온다면 정상이다. 


+-------------+----------+--------------+------------------+ 

| File | Position | Binlog_do_db | Binlog_ignore_db | 

+-------------+----------+--------------+------------------+ 

| sim-bin.002 | 73 | | | 

+-------------+----------+--------------+------------------+ 


다음으로 슬레이브의 Mysql Shell로 로그인 하여 작동 상태를 확인한다. 


> show slave status; 


를 하여 다음과 같은 메시지가 나온다면 정상적이다. 


+--------------+-------------+-------------+---------------+--------- 

----+-----+ 

| Master_Host | Master_User | Master_Port | Connect_retry | Log_File 

| Pos | Slave_Running | 

+--------------+-------------+-------------+---------------+--------- 

----+-----+ 

| sim.tt.co.kr | chodong | 3306 | 60 | sim-bin.002 | 73 | Yes | 

+--------------+-------------+-------------+---------------+--------- 

----+-----+ 



또한 show processlist; 명령을 통해 각각의 프로세스 정보를 확인하는 방 

법도 있다. 

마스터 서버에서 show processlist ; 를 한 결과이다. 

Id User Host db Command Time State Info 

1 chodong 211.47.65.106 Binlog Dump 336959 Slave connection: waiting 

for binlog update 


위와 같이 슬레이브 서버의 접속 상태와 접속시간 등의 정보를 볼 수 있 

다. 

슬레이브에서 show processlist ; 한 결과이다. 

Id User Host db Command Time State Info 

57 system user none Connect 502778 Reading master update 


마찬가지로 마스터 서버에 대한 접속 상태와 접속시간 등을 알 수 있다. 






반응형

댓글