Skip to content

조회 수 9732 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

말그대로 MySQL 데이타를 복제하는 시스템이다. 마스터서버 문제가있어서 다운시 슬래이브 서버로 바꿔서 신속히 장애복구가 가능하다.

 

MySQL 버전이 서로 다를 경우, 높은 버전은 Slave만 가능하다.

테스트 시스템은 둘다 컴파일설치

Master MySQL 5.0.27         IP : 192.168.0.10    마스터에는 기존에 돌아가던 db 데이타가 몇개 있다고 가정.

Slave MySQL 5.1.34           IP : 192.168.0.20    슬래이브는 완전 새로설치 했다고 가정.

▶마스터 서버  설정

우선 my.cnf 파일을 복사하고 편집한다.

cp /usr/local/mysql/share/mysql/my-small.cnf /etc/my.cnf

vi /etc/my.cnf

----------------------------------------------------------------------------------------------------

server-id       = 1                                  1로 셋팅해준다.
log-bin=mysql-bin                                원래 앞에 주석(#) 처리가 되어있는데 주석을 삭제한다. 로깅파일명 설정

----------------------------------------------------------------------------------------------------

 

mysql 접속후 그리고 슬레이브에서 접속할 계정을 만들어준다.

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY '비번';

(%대신 IP주소를 넣으면 그 IP로부터 접속하는 slave에 대해서만 접속을 허용하겠다는 의미)

 

mysql>FLUSH TABLES WITH READ LOCK;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 |       98 |              |                  |                  
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

 

마스터 서버의 db데이타를 덤프한다.

/usr/local/mysql/bin/mysqldump -uroot -p --all-databases > all_db(덤프할이름).sql

한개의 디비만 할려면 해당디비만 덤프

 

mysql>UNLOCK TABLES;

 

전체 덤프뜬 파일을 슬레이브 서버에 복사한다. scp를 쓰던 ftp로올리던 그건 마음대로.

 

/usr/local/mysql/bin/mysqladmin -uroot -p shutdown    

/usr/local/mysql/bin/mysqld_safe &

 

▶슬레이브 서버 설정


우선 my.cnf 파일을 복사하고 편집한다.

cp /usr/local/mysql/share/mysql/my-small.cnf /etc/my.cnf

vi /etc/my.cnf

--------------------------------------------------------

server-id=2                                 2로바꿔준다
replicate-do-db='DB명'               전체 디비를 설정할려면 이줄은 삭제, 한개의 디비만 리플리케이션 시킬려면 디비명을 적는다.

--------------------------------------------------------

마스터에서 전체 덤프뜬 파일을 복구한다.

/usr/local/mysql/bin/mysql -uroot -p < all_db(덤프할이름).sql

 

mysql>CHANGE MASTER TO
       ->MASTER_HOST='192.168.0.10',
       ->MASTER_USER='repl',
       ->MASTER_PORT=3306,
       ->MASTER_PASSWORD='패스워드',
      ->MASTER_LOG_FILE='mysql-bin.000003',           마스터의 상태보기 명령어에서 나온 파일명을 적어준다.
      ->MASTER_LOG_POS=98;                                      마스터의 상태보기 명령에서 나온 포지션을 적어준다.

 

/usr/local/mysql/bin/mysqladmin -uroot -p shutdown    

/usr/local/mysql/bin/mysqld_safe &

 

mysql> SHOW SLAVE STATUS;

--------------------------------------------------------------------

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.10
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 98
               Relay_Log_File: db-relay-bin.000003
                Relay_Log_Pos: 243
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 98
              Relay_Log_Space: 395
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)

-----------------------------------------------------------------------

mysql> start slave;

 

 

마스터 슬래이브 설정확인

 

마스터 mysql > SHOW PROCESSLIST\G

-------------------------------------------------------------------------
*************************** 1. row ***************************
     Id: 5
   User: repl
   Host: 192.168.0.20:62634
     db: NULL
Command: Binlog Dump
   Time: 1361
  State: Has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
*************************** 2. row ***************************
     Id: 7
   User: root
   Host: localhost
     db: NULL
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
2 rows in set (0.00 sec)

-------------------------------------------------------------------------

슬래이브 mysql > SHOW PROCESSLIST\G

-------------------------------------------------------------------------

*************************** 1. row ***************************
     Id: 1
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 1409
  State: Has read all relay log; waiting for the slave I/O thread to update it
   Info: NULL
*************************** 2. row ***************************
     Id: 2
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 1409
  State: Waiting for master to send event
   Info: NULL
*************************** 3. row ***************************
     Id: 6
   User: root
   Host: localhost
     db: NULL
Command: Query
   Time: 0
  State: NULL
   Info: SHOW PROCESSLIST
3 rows in set (0.00 sec)

---------------------------------------------------------------------------

테스트

 

아무이상이없으면 마스터 서버의 데이타 하나를 지워보자 그럼 슬레이브의 데이타도 똑같이 지워진다.ㅋㅋ

 

참고

 

MySQL 데몬(서비스)를 재 시작하면 slave는 자동으로 시작된다.(my.cnf에 옵션 skip-slave-start이 있으면 자동 시작 안한다.)

 



  1. No Image 19Jun
    by ADMINPLAY
    2010/06/19 by ADMINPLAY
    Views 18451 

    mysql old_password 문제

  2. No Image 29May
    by l2zeo
    2010/05/29 by l2zeo
    Views 17267 

    MySQL 오류 테이블 복원

  3. No Image 29May
    by l2zeo
    2010/05/29 by l2zeo
    Views 16591 

    MySQL errno 의미 확인

  4. No Image 29May
    by l2zeo
    2010/05/29 by l2zeo
    Views 16489 

    [MySQL] OPTIMIZE, TRUNCATE, 테이블복구, DB공간제한

  5. No Image 28May
    by ADMINPLAY
    2010/05/28 by ADMINPLAY
    Views 16542 

    latin1 로 저장된 db 를 euckr 또는 utf8로 변환하는 방법

  6. No Image 03May
    by ADMINPLAY
    2010/05/03 by ADMINPLAY
    Views 12799 

    서버에서 mysql euckr과 utf8 같이 사용하기

  7. No Image 03May
    by ADMINPLAY
    2010/05/03 by ADMINPLAY
    Views 12903 

    mySQL 설치

  8. No Image 02Apr
    by ADMINPLAY
    2010/04/02 by ADMINPLAY
    Views 18084 

    lower_case_table_names=1

  9. MySQL 명령어 정리

  10. No Image 08Mar
    by l2zeo
    2010/03/08 by l2zeo
    Views 18284 

    Another app is currently holding the yum lock; waiting for it to exit 해결법

  11. PHP5와 MySQL5 연동시 한글 인코딩 문제 해결방법 (UTF-8으로의 변환)

  12. No Image 08Mar
    by l2zeo
    2010/03/08 by l2zeo
    Views 12599 

    MySQL Error 2006 : MySQL server has gone away 해결하기

  13. Redmine database를 복구 하고자 할 때

  14. No Image 28Jan
    by ADMINPLAY
    2010/01/28 by ADMINPLAY
    Views 19866 

    Starting MySQL.Manager of pid-file quit without updating fi[실패]

  15. No Image 31Dec
    by ADMINPLAY
    2009/12/31 by ADMINPLAY
    Views 8661 

    MySQL 데이터 정리후에도 용량변동이 없을 경우

  16. No Image 26Nov
    by ADMINPLAY
    2009/11/26 by ADMINPLAY
    Views 9558 

    Mysql bin log 로테이션 방법

  17. No Image 19Nov
    by ADMINPLAY
    2009/11/19 by ADMINPLAY
    Views 10754 

    리눅스를 이용한 클러스터링 구축법

  18. No Image 19Nov
    by ADMINPLAY
    2009/11/19 by ADMINPLAY
    Views 7792 

    MySQL Replication(복제)

  19. No Image 19Nov
    by ADMINPLAY
    2009/11/19 by ADMINPLAY
    Views 8090 

    MySQL Replication

  20. No Image 19Nov
    by ADMINPLAY
    2009/11/19 by ADMINPLAY
    Views 9732 

    Mysql Replication(Master, Slave) 설정

Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234