안녕하세요 초짜 DBA입니다.
다름이 아니라 replciation 에서 테이블을 주기적으로 truncate 한 후 slave에서만 데이터를 모으고 싶은데요..
아무래도 갑작스럽게 용량이 늘어나는 녀석들 때문에 속도도 문제가 있고 해서요
헌데 master에서 테이블을 비우면 그대로 slave에도 삭제가 되잖아요
혹시 다른 방법으로 master의 테이블만 비워주는 방법을 아시면 부탁드립니다. ^^;;
일단 원하는 형태의 처리는 가능합니다. 그러나 마스터가 truncate 되는 statement가 replication 적용이 안되어야 하기때문에 그 시간동안 슬레이브 레플리케이션 쓰레드를 멈춰야합니다.
1) 슬레이브의 replication 쓰레드를 넘춘다.
2) 마스터의 테이블을 truncate 한다.
3) 마스터의 truncate이후 binlog position을 찾는다.. (show master status...)
3) 슬레이브 서버에서 master 서버의 binlog 포지션을 변경한다. (change master ...)
4) 슬레이브 레플리케이션 쓰레드를 다시 시작한다.
일반적으로 replication 하고자 하는 DB를 지정 하고 사용 하시리라 믿습니다.
굳이 test 디비까지 할 필요는 없으니...
만일 A DB가 replication되고 있다면,
mysql 로긴후 use A로 이동하지 않은 상태나, 혹은 test 디비 - 즉 replication되고 있지 않는 디비- 로 가셔서
truncate table A.table1 을 하시면 로그가 남지 않을 겁니다.
같은 값을 update하는 형태로 한번 테스트 해보시죠...^^