MySQL Replication(복제) - 양방향 이중화하기




    지난 포스팅에서는 리플리케이션(Replication)에 대해서 알아보았는데요

    리플리케이션(Replication)에서 Master서버 ->  Slave서버로만 알아보았으며, 이번에는 Slave서버 ->  Master서버도 구현하여 양방향으로 Replication이 가능토록 해보겠습니다





     MySQL Replication 양방향 구성하기




    1. MySQL Replication 단방향 구성



    지난 포스팅에서는 단방향으로 구성하였기때문에 Master 서버에서 Insert/Update/Delete 쿼리를 Slave 서버에서는 Select 쿼리로 진행하였습니다




    2. MySQL Replication 양방향 구성



    이번에는 양방향으로 구성하여 위 그림 처럼 Slave 서버에서도 Insert/Update/Delete 를 사용하여도 Master서버에서는 반영되도록 설정해보도록 하겠습니다









     MySQL Replication 설정하기 - (Slave 서버)


    이번에는 Slave 서버부터 설정하도록 하겠습니다


    양방향 동기화를 하기위해선 Slave 서버에서도 리플리케이션 계정을 생성하여야 되며, mysql 설정파일에서 log-bin을 설정하여야 됩니다




    [Replication 계정 정보]


    IP : 192.168.65.149 - (Slave)


    ID : repli_user2


    PW : test456


    - Master 서버에 데이터를 Slave 서버로 복제하기 위해선 MySQL 계정이 필요합니다

    - MySQL root 계정으로 사용하는것은 보안상 좋지 않기 때문에 복제계정을 생성하는것이 좋습니다




    1. 리플리케이션 계정생성

    mysql> grant replication slave on *.* to 'repli_user2'@'%' identified by 'test456';
    



    2. MySQL 설정 - my.cnf

    vi /etc/my.cnf
    [mysqld]
    log-bin=mysql-bin
    


    Slave서버에서도 log-bin=mysql-bin 추가합니다



    3. MySQL 재시작

    # service mysqld restart
    


    4. Slave 서버 정보 확인

    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000014 |     4186 |              |                  | 
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    



    File : MySQL 로그파일


    Position : 로그 파일내 읽을 위치


    Binlog_Do_DB : 바이너리(Binary)로그 파일(변경된 이벤트 정보가 쌓이는 파일)


    Binlog_Ignore_DB : 복제 제외 정보





     MySQL Replication 설정하기 - (Master 서버)




    이제 Master 서버를 설정해보도록 하겠습니다



    1. MySQL 설정 - my.cnf

    # vi /etc/my.cnf
     
    [mysqld]
    replicate-do-db='repl_db'
    


    2. MySQL 복원


    1) Master DBMS에서 복제할 데이터베이스를 dump하여 복원합니다




    3. Slave 서버로 연결하기 위한 설정

    mysql> change master to
    master_host='192.168.65.149',
    master_user='repli_user2',
    master_password='test456',
    master_log_file='mysql-bin.000014',
    master_log_pos=4186;
    




    MASTER_HOST : Slave 서버 IP 입력


    MASTER_USER : 리플리케이션 ID


    MASTER_PASSWORD : 리플리케이션 PW


    MASTER_LOG_FILE : Slave STATUS 로그파일명


    MASTER_LOG_POS : Slave STATUS에서 position 값




    4. MySQL 재시작

    # service mysqld restart
    



    리플리케이션(Replication) 양방향을 완료하신후에 Master, Slave 서버에 Slave 상태에서 Slave_IO_Running, Slave_SQL_Running가 YES로 되어 있는지 필히 확인하시기 바랍니다.


    Posted by 서버이야기