바이너리 로그 파일
바이너리로그 파일은 호스트명-bin.NNNNNN 형식으로 작성된다. N은 숫자로 000001에서 순서대로 증가된다. 999999다음은 1000000으로 된다.
호스트명-bin의 부분은 --log-bin=옵션에서 변경가능하다. 또 디폴트로는 datadir/밑으로 작성되어지지만 보존장소도 --log-bin=옵션으로 변경가능하다.
바이너리 로그 인덱스파일
바이너리 로그 인덱스파일은 바이너리 로그 파일의 리스트를 유지한다.
호스트명-bin.index라는 이름으로 작성된다.
바이너리 로그인덱스 파일의 예
shell#> cat master-bin.index
./master-bin.000002
./master-bin.000003
2010년 7월 4일 일요일
2010년 7월 1일 목요일
Replication : Master에서의 설정과 조작 1
Master데이터베이스 설정과 조작
Master데이터베이스로써 동작시키기 위해서는 최소한 다음 옵션을 지정할 필요가 있다.
옵션은 my.cnf에 기술한다.
Replication의 Master로 기동하기 전에 모든 데이터를 백업하고 설정을 한 후 Master로 기동한다.
server-id = 번호
log-bin [=파일명]
Master에 관한 옵션은 다음의 표를 참조하길 바란다.
Master에 관한 SQL문에는 다음과 같은 것이 있다.
Master데이터베이스로써 동작시키기 위해서는 최소한 다음 옵션을 지정할 필요가 있다.
옵션은 my.cnf에 기술한다.
Replication의 Master로 기동하기 전에 모든 데이터를 백업하고 설정을 한 후 Master로 기동한다.
server-id = 번호
log-bin [=파일명]
Master에 관한 옵션은 다음의 표를 참조하길 바란다.
- server-id=자연수 : 서버의 ID번호를 지정. 모든 slave, master에서 유일한 숫자를 지정할 필요가 있다.
- log-bin[=파일명] : 바이너리로그<호스트명-bin>를 기록한다.
- binlog_format={MIXED|STATEMENT|ROW} : 바이너리로그의 서식을 지정한다.
- binlog-do-db=데이터베이스명 : 지정된 데이터베이스로의 변경만을 바이너리로그에 기록한다.
- binlog-ignore-db=데이터베이스명: 지정된 데이터베이스로의 변경만을 바이너리로그에 기록하지 않음.
- binlog-row-event-max-size=바이트수: ROW의 경우 , 한개의 이벤트당 최대 바이트수.
- log-bin-index=이름 : <호스트명-bin.index> 파일명의 지정
- log-bin-trust-function-creators: 스토어드 프로시져 작성의 제한
- show-slave-auth-info : SHOW SLAVE HOSTS문으로 Slave정보목록에 사용자명과 패스워드를 추가한 것을 얻을 수 있음. Slave 서버에 -report-host=Slave호스트명과 옵션을 지정한 것만 표시됨
- net_buffer_length=바이트수 : 통신에 사용하는 버퍼
- net_read_timeout=초수 : 읽어들이는 중에 통신이 끊겼을 경우, 몇초를 기다려서 에러로 할 것인가 지정
- net_write_timeout=초수 : 쓰는 도중에 통신이 끊겼을 경우, 몇초를 기다려서 에러로 할 것인가 지정
- init-slave='SQL문' : Slave가 접속해 오면 최초 지정한 SQL문을 실행
Master에 관한 SQL문에는 다음과 같은 것이 있다.
- GRANT REPLICATION SLAVE ON *.* : Replication Slave가 접속할 유저를 등록(권한 부여)
- GRANT REPLICATION CLIENT ON *.* : SHOW MASTER STATUS를 실행할 수 있는 권한을 부여
- FLUSH LOGS: 바이너리로그를 로테이트
- SHOW PROCESSLIST : Replication 스레드를 확인
- SET SQL_LOG_BIN={0|1} : 현재 세션 기록을 바이너리로그에 수행할 것인가 하지 않을 것인가 지정
- SHOW MASTER STATUS: 바이너리 로그의 써넣기 상황을 확인
- SHOW BINARY LOGS: 현재 존재하는 바이너리 로그 파일명을 표시
- SHOW BINLOG EVENTS: 바이너리로그 이벤트를 표시
- PURGE MASTER LOGS: 지정된 바이너리로그만을 삭제
- SHOW SLAVE HOSTS: Slave 리스트를 표시. Slave서버는 --report-host=의 지정을 해둘 필요가 있다.
- RESET MASTER: 모든 바이너리로그를 삭제
라벨:
master,
mysql,
replication,
slave
Replication
데이터베이스시스템의 부하를 분산시키고 싶은 경우는 replication을 이용한다.
MySQL의 replication의 특징은 다음과 같다.
MySQL의 Replication은 Master의 바이너리 로그의 내용을 Slave에 보내는 것으로 수행된다.
동작의 흐름은 다음과 같다.
MySQL의 replication의 특징은 다음과 같다.
- 한 방향(Master에서 Slave로 흘러감)
- 비동기
- Master:Slave = 1:N
- Slave겸 Master가 될 수 있다.
- 통신은 TCP/IP를 사용
- 바이너리 로그를 사용
- 갱신은 Master만 가능
MySQL의 Replication은 Master의 바이너리 로그의 내용을 Slave에 보내는 것으로 수행된다.
동작의 흐름은 다음과 같다.
- Slave I/O스레드가 Master에 접속
- Master가 Slave를 인증하고 Slave와의 세션 개시
- Slave I/O스레드가 바이너리 로그파일(파일명, 위치)를 요구
- Master(binlog dump스레드)가 요구되어진 지점으로부터 이벤트를 바이너리 로그에서 읽어들여 Slave 에 전송
- Slave I/O스레드는 받어낸 이벤트를 relay-log에 기록
- Slave SQL스레드가 relay-log내용을 읽어들여 SQL문을 실행
- Master에 새로운 이벤트가 있으면 Master가 Slave에 송신
라벨:
리플리케이션,
replication
Event Scheduler 4
이벤트의 수정
이미 등록되어있는 이벤트를 변경하는 경우는 ALTER EVENT문을 사용한다.
구문은 다음과 같다.
ALTER EVENT 이벤트명
[ON SCHEDULE 스케줄]
[RENAME TO 이벤트명]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT '주석']
[ENABLE| DISABLE]
[DO [BEGIN] 실행할 sql문; [ 실행할 sql문;] [END] ]
예>
mysql>delimiter ;
mysql>ALTER EVENT test_event ON COMPLETION PRESERVE;
이벤트의 삭제
등록한 이벤트를 삭제하기 위해서는 DROP EVENT문을 사용한다.
DROP EVENT [IF EXISTS] 이벤트명
이미 등록되어있는 이벤트를 변경하는 경우는 ALTER EVENT문을 사용한다.
구문은 다음과 같다.
ALTER EVENT 이벤트명
[ON SCHEDULE 스케줄]
[RENAME TO 이벤트명]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT '주석']
[ENABLE| DISABLE]
[DO [BEGIN] 실행할 sql문; [ 실행할 sql문;] [END] ]
예>
mysql>delimiter ;
mysql>ALTER EVENT test_event ON COMPLETION PRESERVE;
이벤트의 삭제
등록한 이벤트를 삭제하기 위해서는 DROP EVENT문을 사용한다.
DROP EVENT [IF EXISTS] 이벤트명
라벨:
event scheduler
피드 구독하기:
덧글 (Atom)
