환경 정보

    - CentOS 7.0 (64bit)

    - MySQL 5.7

    - DB서버 2EA (Master - Master 구성)


    1. my.cnf 파일 수정

    #vi /etc/my.cnf


    (DB서버1)

    server-id=1

    log-bin="mysql-bin"

    binlog-ignore-db=test

    binlog-ignore-db=information_schema

    replicate-ignore-db=test

    replicate-ignore-db=information_schema

    relay-log="mysql-relay-log"

    auto-increment-increment = 2

    auto-increment-offset = 1


    (DB서버2)

    server-id=2

    log-bin="mysql-bin"

    binlog-ignore-db=test

    binlog-ignore-db=information_schema

    replicate-ignore-db=test

    replicate-ignore-db=information_schema

    relay-log="mysql-relay-log"

    auto-increment-increment = 2

    auto-increment-offset = 2


    2. Replication User 생성 및 권한 설정 (DB서버1,2 모두 설정)

    #mysql -u root -p (패스워드)

    mysql>CREATE USER 'replicator'@'%' IDENTIFIED BY '패스워드';

    mysql>GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%' IDENTIFIED BY '패스워드';


    3. DB Sync

    - 신규로 구성 할 경우 : Skip

    - 기존 DB를 운영 중인 경우

    1안) 1번 DB서버의 mysql data 폴더를 통째로 2번 DB서버의 동일 폴더에 복사 

    2안) MySQL dump → Restore 로 DB 동기화


    4. DB Replication 설정 (DB서버1 → DB서버2)

    #mysql -u root -p (패스워드)

    (DB서버1)

    mysql>show master status;

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

    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB        | Executed_Gtid_Set |

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

    | mysql-bin.000001 |      493 |              | test,information_schema |                   |

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

    (DB서버2)

    mysql>stop slave;

    mysql>CHANGE MASTER TO MASTER_HOST = 'DB서버1 IP', MASTER_USER = 'replicator', MASTER_PASSWORD = '패스워드', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 493;

    mysql>start slave;


    5. DB Replication 설정 (DB서버2 → DB서버1)

    #mysql -u root -p (패스워드)

    (DB서버2)

    mysql>show master status;

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

    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB        | Executed_Gtid_Set |

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

    mysql-bin.000001 |      500 |              | test,information_schema |                   |

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

    (DB서버1)

    mysql>stop slave;

    mysql>CHANGE MASTER TO MASTER_HOST = 'DB서버2 IP', MASTER_USER = 'replicator', MASTER_PASSWORD = '패스워드', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 500;

    mysql>start slave;



    위 구성으로 2Node Master - Master 구성이 완료되며, 앞단의 WEB, WAS장비가 다중 구성일 시 각각의 DB를 바라보게끔 설정해야 한다

    즉, DB 서버의 VIP 를 공통으로 연결되는 개념이 아닌 개별 연결 설정이 필요하다 (WEB1 → DB1, WEB2 → DB2)

    만약 WEB/WAS서버가 1대라면 어플리케이션 로직을 분배하는 것도 방법 중의 하나일 듯 하다.







    Posted by sybd