MySQL Replication은 Master 서버의 데이터를 Slave 서버(들)에게 데이터를 동기화 시키는 기능을 제공한다. 주로 데이터를 실시간을 백업하거나 데이터 서버의 부하분산을 하고자 할 때 사용하는 기술이다.
이 페이지에서는 이미 데이터가 있는 서버를 Master 서버로 하고 Slave 서버에 기존 데이터를 복제하는 방법을 기술한다.
Master/Slave Server 설정
- Replication Master Server 설정
먼저 기존 데이터가 있는 서버를 Master로 설정을 하기 위해서는 Binary Logging과 Server ID를 설정해야한다.# vi /etc/my.cnf
log-bin=mysql-bin server-id=1
- Replication Master Server 재시작
# service mysqld start
- Replication Slave Server 설정
# vi /etc/my.cnf
server-id=2 relay-log=mysqld-relay-bin
- Replication을 위한 사용자 추가 및 권한 할당(MASTER에서 설정)
mysql>
GRANT
REPLICATION SLAVE
ON
*.*
TO
'replicator'
@
'%.domainX.or.kr'
IDENTIFIED
BY
'<암호>'
;
- Replication Master 서버의 Binary Log 정보 확인
mysql> FLUSH TABLES
WITH
READ
LOCK;
mysql> SHOW MASTER STATUS;
+
-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+
-------------------+----------+--------------+------------------+
| mysqld-bin.000002 | 938 | | |
+
-------------------+----------+--------------+------------------+
1 row
in
set
(0.00 sec)
- mysqldump를 이용하여 Data Snapshot 생성
mysql> FLUSH TABLES
WITH
READ
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 MASTER
TO
-> 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