MySQL 5.7 Multi Master 설정 (2 node Master - Master)
환경 정보
- 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대라면 어플리케이션 로직을 분배하는 것도 방법 중의 하나일 듯 하다.