MySQL Replication은 Master 서버의 데이터를 Slave 서버(들)에게 데이터를 동기화 시키는 기능을 제공한다. 주로 데이터를 실시간을 백업하거나 데이터 서버의 부하분산을 하고자 할 때 사용하는 기술이다.
이 페이지에서는 이미 데이터가 있는 서버를 Master 서버로 하고 Slave 서버에 기존 데이터를 복제하는 방법을 기술한다.
Master/Slave Server 설정
- Replication Master Server 설정
먼저 기존 데이터가 있는 서버를 Master로 설정을 하기 위해서는 Binary Logging과 Server ID를 설정해야한다.다음을 mysqld 항목에 추가한다. 여기서 server-id는 반드시 1로 하여야 하며, 각 서버간에 같은 값이 있어서는 안된다.# vi /etc/my.cnflog-bin=mysql-bin server-id=1
- Replication Master Server 재시작
# service mysqld start - Replication Slave Server 설정다음을 mysqld 항목에 추가한다. 여기서 server-id는 반드시 2 이상의 값을 할당하며, 각 서버간에 같은 값이 있어서는 안된다.
# vi /etc/my.cnfserver-id=2 relay-log=mysqld-relay-bin
- Replication을 위한 사용자 추가 및 권한 할당(MASTER에서 설정)
mysql>GRANTREPLICATION SLAVEON*.*TO'replicator'@'%.domainX.or.kr'IDENTIFIEDBY'<암호>'; - Replication Master 서버의 Binary Log 정보 확인
mysql> FLUSH TABLESWITHREADLOCK;mysql> SHOW MASTER STATUS;+-------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| mysqld-bin.000002 | 938 | | |+-------------------+----------+--------------+------------------+1 rowinset(0.00 sec) - mysqldump를 이용하여 Data Snapshot 생성또 다른 세션을 열어 다음을 수행하여 Data의 Snapshot을 생성한다.
mysql> FLUSH TABLESWITHREADLOCK;기존 세션에서 Lock을 해제# mysqldump -u root -p --all-databases --lock-all-tables > /tmp/mysql-dbdump.sql# scp /tmp/mysql-dbdump.sql root@b.domainX.or.kr:/tmp/mysql> UNLOCK TABLES; - Slave 서버 시작
# service mysqld start - Slave 서버에 Replication Master 설정
mysql> CHANGE MASTERTO-> MASTER_HOST='a.domainX.or.kr',-> MASTER_USER='replicator',-> MASTER_PASSWORD='<암호>',-> MASTER_LOG_FILE='mysqld-bin.000002',-> MASTER_LOG_POS=938; - Slave 서버에 Master Snapshot 데이터 넣기
# mysql -u root -p < /tmp/mysql-dbdump.sql
No comments:
Post a Comment