1. master 쪽 my.cnf
[mysqld]
log-bin=mysql-bin
binlog_ignore_db = mysql
binlog_ignore_db = information_schema
binlog_ignore_db = performance_schema
server-id = 1
binlog_format=mixed
log-bin : 바이너리 로그를 사용하도록 한다.
binlog_ignore_db : 불필요한 db는 바이너리 로그에 저장 안되게 함
server-id : 서버번호
2. slave 쪽 my.cnf
server-id = 2
master-host = <hostname>
master-user = <username>
master-password = <password>
master-port = <port>
log-bin=mysql-bin
binlog_format=mixed
slave-skip-errors = all
replicate-do-db = [복제할 DB명]
server-id : 서버 번호 다른 서버와 중복 안되도록 한다
master-host, master-user, master-password, master-port, log-bin,binlog_format
-> master 서버 접속 환경 설정을 한다. my.cnf 에 설정해도 되지만 mysql 쉘에서 CHANGE MASTER TO로 설정해도 된다. 당연히 CHANGE MASTER TO 로 할 경우 db를 재시작 하면 다시 설정해줘야 한다. 접속 설정은 my.cnf에 해놓고 추가적인 옵션(로그 파일 포지션)등은 CHANGE MASTER TO 명령으로 설정하자
3. 리플리케이션 절차
3-1. master db를 덤프, 또는 FLUSH TABLE 후 READ LOCK 을 건후 데이타 파일 복사(이건 비추임 LOCK 때문에 잠시 서비스 이용이 안되겠죠?)
mysqldump 를 할때 중요한 점은 아래 두 옵션을 반드시 적용해야 한다.(절대 잊으면 안된다!!!)
--master-data[=value]
--single-transaction
[참고]
--master-data 옵션은 dump파일에 CHANGE MASTER TO 로 바이너리 로그와 포지션등의 정보를 포함하도록 하는 명령이다. value로 사용되는 값은 1인 경우 CHANGE MASTER TO 를 명령으로 dump파일에 바로 포함하는 것이고 2인 경우에는 CHANGE MASTER TO 를 주석으로 dump 파일에 포함한다.
이 옵션이 사용 될 경우 [--lock-all-tables] 옵션이 자동으로 ON 되며 모든 테이블에 락이 걸리게된다.
이를 피하기 위해서 --single-transaction 옵션을 추가하면 전체 락이 걸리지 않지만 MyISAM 처럼 row level lock을 지원하지 않는 테이블 형식은 LOCK이 걸리니 이점 주의하자.
3-2. --master-data=1 로 했을 경우 dump 파일을 mysql에 적용하고 바로 start slave를 하면 되고 --master-data=2 일 경우에는 주속에 포함된 내용으로 아래 명령을 실행한 후 start slave를 하면 된다.
CHANGE MASTER TO MASTER_HOST='마스터아이피', MASTER_USER='유저', MASTER_PASSWORD='비밀번호', MASTER_LOG_FILE='바이너리로그파일명', MASTER_LOG_POS=마스터_포지션넘버;
sql> START SLAVE UNTIL MASTER_LOG_FILE='바이너리로그파일명', MASTER_LOG_POS=마스터_포지션넘버;
4. 리플리케이션 운영
4-1. master 재시작, 다운등 종료시
master -> reset master
slave -> stop slave; reset slave; start slave;
4-2. slave 재시작, 다운등 종료시
slave -> stop slave; reset slave; start slave;
4-3. 연결이 끊어진 경우(보통 slave에 오류발생함)
master, slave 의 상태를 show master status; show slave status; 로 확인해서 오류부분을 잘 확인하자. 실행 방법은 4-1 master 재시작과 동일하다.
master -> reset master
slave -> stop slave; reset slave; start slave;
[참고]
reset master -> bin-log를 지운다.
reset slave -> slave에 저장된 bin-log 를 지우고 position 등의 값을 지운다.
4-4. bin-log 관리
bin-log 파일이 계속 커지므로 아래 와 같은 명령으로 로그를 삭제한다. 날짜는 알아서, 추가적인 옵션은 메뉴얼 찾아봐.
PURGE MASTER LOGS BEFORE DATE_SUB(NOW(),INTERVAL 3 DAY);
'DB' 카테고리의 다른 글
웹정보시스템 (0) | 2014.05.01 |
---|---|
데이터베이스 (0) | 2014.05.01 |
mysql 내림 (0) | 2013.12.22 |
mysql rownum (0) | 2013.12.20 |
tnsnames.ora 위치 (0) | 2013.07.12 |