일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Tomcat
- 톰켓
- Database
- Objective C
- java
- MySQL
- ipad
- permgen space
- Eclipse
- 티스토리 초대
- ios
- jsp
- UIWebView
- Android
- udp
- 티스토리 초대장
- spring
- C#
- JavaScript
- HTML
- 인코딩
- Memory
- iphone
- WebView
- 이클립스
- encoding
- XML
- 한글
- jQuery
- 메모리
- Today
- Total
suroMind
[MySQL] MySQL Replication 설정 본문
두개의 서버가 있고 하나를 백업디비로 할때 사용했다.
미러링이라고 보면 된다. 양방향 동기화는 아니고 마스터서버에서 슬레이브서버로 복사한다는 개념(?)..
간단한 설정 방법을 남긴다.
♦ MySQL Replication 설정
Master Mysql 5.0.45 IP : xxx.xxx.xxx.xxx
Slave Mysql 5.0.45 IP : xxx.xxx.xxx.xxx
참고 : Mysql 버전이 서로 다를 경우, 높은 버전은 Slave만 가능하다.
♦ Master Server 설정
my.cnf 파일을 편집한다.
# vi /etc/my.cnf
-------------------------------
server-id = 1 1로 셋팅한다.
log-bin=mysql-bin 주석(#)처리가 되어 있다면 풀어준다
-------------------------------
위 속성은 중복 되면 안된다. 전체파일을 잘 살펴 보아야 한다.
mysql 접속후 슬레이브에서 접속할 계정을 만든다.
# mysql> GRANT REPLICATION SLAVE ON db명.* TO 계정아이디@'%' IDENTIFIED BY '비번';
(%대신 IP주소를 넣으면 그 IP로부터 접속하는 slave에 대해서만 접속을 허용하겠다는 의미)
# mysql>FLUSH TABLES WITH READ LOCK;
# mysql>show master status;
-----------------------------------------------------------------
File Postion Binlog_Do_DB Binlog_Ignore_DB
mysql-bin.000003 98
-----------------------------------------------------------------
위 출력물은 컴퓨터마다 다를 것이다. 슬레이브 서버에 적용시킬때 쓰인다.
이제 마스터 서버의 db데이터를 덤프한다.
# mysqldump -u root -p db명 > 파일명.sql
# mysql>UNLOCK TABLES;
♦ Slave Server 설정
my.cnf 파일을 편집한다.
# vi /etc/my.cnf
---------------------------------
server-id = 2 이줄이 없을 경우나 1로 셋팅 되어있을 경우나 모두 2로 셋팅
replicate-do-db='db명' 전체 디비를 설정할려면 이줄은 삭제, 한 개의 디비만 리플리케이션 시킬려면 디비명을 적는다. 2개 이상의 경우 다음줄부터 똑같이 적는다.
---------------------------------
마스터 서버에서 덤프한 파일을 이용하여 복구한다.
# mysql -u root -p db명 < 파일명.sql
# mysql>CHANGE MASTER TO
->MASTER_HOST='192.168.0.10',
->MASTER_USER='계정명',
->MASTER_PORT=3306,
->MASTER_PASSWORD='패스워드',
->MASTER_LOG_FILE='mysql-bin.000003', 마스터의 상태보기 명령에서 나온 파일명
->MASTER_LOG_POS=98; 마스터의 상태보기 명령에서 나온 포지션
# mysql> SHOW SLAVE STATUS\G;
♦ Master & Slave 설정확인
마스터 # mysql>SHOW PROCESSLIST\G;
슬레이브 # mysql>SHOW PROCESSLIST\G;
이후 직접 마스터서버에서 insert 또는 delete를 이용하여 테스트를 해본다.
♦ 필수 ♦
mysql-bin.00003 등 뒤부분의 숫자가 올라가면서 파일이 생성된다. 또한 마스터 서버에서 삽입, 삭제, 업데이트 되는 부분은 이 파일을 이용하여 슬레이브 서버에 동기화를 시킨다. 마스터 서버가 리스타트 될시 슬레이브 서버와 연결된 부분이 끊기게 된다.
이때는 마스터 서버에서 # mysql>show master status; 를 이용하여 파일명과 포지션을 획득하고
슬레이브 서버에서
# mysql> stop slave; 중지시키고
# mysql>CHANGE MASTER TO
->MASTER_HOST='192.168.0.10',
->MASTER_USER='계정명',
->MASTER_PORT=3306,
->MASTER_PASSWORD='패스워드',
->MASTER_LOG_FILE='mysql-bin.000003', 마스터의 상태보기 명령에서 나온 파일명
->MASTER_LOG_POS=98; 마스터의 상태보기 명령에서 나온 포지션
CHANGE 명령을 이용하여 파일과 포지션을 다시 셋팅한다.
# mysql> start slave;
'IT분야 > DataBase' 카테고리의 다른 글
[Sqlite] SQLite User Guide for Android, iPhone - 함수. Function (Core, Aggregation) - (펌) (0) | 2011.04.06 |
---|