mysql 5.0.x Replication 작업 진행 내용 Server EDIT

이번에 회사에서 디비 부하 분산 차원에서 mysql 에서 지원하는 Replication 기능을 이용해서


디비 분산을 하게 되었네요..


복습하는 차원에서 관련 내용을 작성합니다..


mysql 5.x 이전버전은 모르겠고 저희 회사에서 사용하고 있는 5.x 버전을 기준으로 작성합니다.


일단 바이너리 로그를 기록하게 세팅되어져 있는지가 가장 중요합니다..


Replication 기능은 바이너리 로그를 기준으로 내용을 복사하게 되기 때문에 반드시 필수로 세팅되어야 합니다..


작업진행 순서

1. 마스터 역활을 할 디비서버에 Replication 기능을 위한 사용자를 추가 했습니다.

 => grant replication slave on *.* to username@111.111.111.111 identified by '패스워드';

 => username 부분에 Replication 기능을 이용할 사용자명을 적어주시고 패스워드 부분에 그 사용자의 패스워드를 적어주시면 됩니다.

 => ip 부분에는 마스터 서버로 접속하는 클라이언트 디비서버의 IP를 적어주시면 됩니다.

 => 특정 디비에만 접근이 가능하게 세팅하시려면 *.* 부분을 적당히 수정해주시면 됩니다.


2. 마스터로 사용할 서버 my.cnf 파일을 열고 [mysqld] 항목 아래에 아래와 같이 내용을 추가했습니다.

[mysqld]
log-bin = mysql-bin  <== 바이너리 로그 기록 관련 세팅
server-id = 1 <== 동기화를 위해서 세팅해주는 유니크 아이디 입니다. 복제기능을 하는 구성원끼리는 중복되는 값을 가지면 안됩니다.
binlog-do-db = mycompnaydb  <== 여기에 다른 서버로 복제를 할 디비명을 적어 줍니다.
binlog-ignore-db = mysql  <== binlog-ignore-db 항목에는 동기화 기능을 사용하지 않을 디비명을 적어주면 됩니다.
binlog-ignore-db = information_schema
binlog-ignore-db = test
relay-log = master-relay-bin 


3. 슬레이브로 사용할 서버 my.cnf 파일을 열고 [mysqld] 항목 아래에 아래와 같이 내용을 추가했습니다.

[mysqld]
log-bin = mysql-bin   <== 바이너리 로그 기록 관련 세팅
server-id = 2   <== 동기화를 위해서 세팅해주는 유니크 아이디 입니다. 복제기능을 하는 구성원끼리는 중복되는 값을 가지면 안됩니다.
master-host = 222.222.222.222   <== 마스터로 사용하는 디비서버의 IP를 적어주시면 됩니다.
master-user = username   <== 마스터 서버에 세팅한 Replication 기능을 사용할 사용자 명을 적어주시면 됩니다.
master-password = password   <==  마스터 서버에 세팅한 Replication 기능을 사용할 사용자의 패스워드를 적어주시면 됩니다.
master-port = 3306  
master-connect-retry = 5   <== 재시도 횟수(접속 실패 또는 먼가의 오류가 발생할 경우의 재시도 횟수 입니다)
replicate-do-db = mycompanydb  <== 동기화시 복제할 디비명을 적어주시면 됩니다.
relay-log = slave-relay-bin


일단 기본적인 세팅은 위와 같이 했고 저 같은 경우 회사에 슬레이브로 사용할 서버가 5대로 세팅이 된 상황이라

슬레이브 디비 서버 my.cnf 파일에 server-id 만 번호를 다르게 해서 세팅을 해주고

마스터쪽에도 슬레이브 서버에서 접근가능하도록 ip별로 계정을 따로 세팅해주는걸로 작업을 마무리 했습니다..


위와 같이 전부 세팅을 완료한 상황에서 마스터 서버의 데이터베이스 서비스를 재시작 해주고 

슬레이브 서버의 데이터베이스 서비스들을 차례로 재시작을 해주고 나서 슬레이브 서버들에 접속을 해서

복제가 정상적으로 이루어 지고 있는지 확인을 하시면 됩니다..


슬레이브 서버가 정상적으로 작동이 이루어 지고 있는지 확인을 하시려면

슬레이브 서버에서 mysql 콘솔로 들어가신 후에 show slave status\G 라고 입력을 하시면 관련된 내용이 나오게 되는데


참고해서 보셔야 할 부분은 Slave_IO_State, Slave_IO_Running, Slave_SQL_Running  이 세개의 항목입니다..

정상적으로 작동하고 있을 경우

Slave_IO_State : Waiting for master to send event

Slave_IO_Running : Yes

Slave_SQL_Running : Yes 

위와 같이 나와있다면 정상적으로 동작하고 있다고 보시면 됩니다. 


혹시라도 위에 있는 항목은 정상적으로 표시되고있는데

Last_Error 항목에 먼가 에러메시지가 표시 되어있다면 그 내용을 보시고 관련 내용을 수정해주시면 됩니다..


혹시라도 master -> slave 이런 내용 뿐만 아니라 master <-> slave 이런 내용을 알고 싶으시다면

http://www.howtoforge.com/mysql5_master_master_replication_debian_etch 를 참고하시기 바랍니다..


참고로 이글은 제가 작업한 내용을 기록 차원에서 작성한 글이므로 다른 상황에서 위의 내용하고 똑같이 했을때 정상작동을 할거라고

말씀드릴수는 없으므로 참고만 하시기 바랍니다.

Share
이 글과 관련된 글
  1. [2012/01/31] [MySQL] 관리자 root 의 password 재세팅 by 곰이아빠 (44)
  2. [2012/01/31] [Linux] Admin Part II - FTP & DB 유저생성,권한설정 by 곰이아빠 (45)
  3. [2011/09/15] mysql 5.5.14 버전 설치방법 및 설치후 발생 오류해결과정 by 진짜친구 (1942, 2)
  4. [2011/09/07] mysql replication 도중 slave 문제로 복구할때 master중지 없이 slave 복구하기 by 진짜친구 (1083, 4)
  5. [2011/05/20] mysql 5.5 설치 by 난다날아 (2021)
tags

Leave Comments



T-NAVI