지금 똥밟은 일이 있는데..문제가 너무 많은데.. 그중 하나가 DB 동기화 문제..
컴퓨터 두대 (Master, Slave) 에 같은 DB가 깔려있어.. (oracle - oracle 혹은 mssql - mssql)
Master 컴퓨터에서 작업하는게 Master DB에 저장되는데,
이걸 Slave 컴퓨터의 DB에도 싱크를 해줘야하거든..
Sync 방식은 Master가 Slave로 TCP를 이용해서 query를 전달해주고..
받은 slave는 받은 쿼리를 실행해서, 동기화를 유지하도록 했음..
여기서 문제가 생겼음..
사람들이 Slave 컴퓨터를 꺼놓거나, TCP 오류가 생겨서 패킷손실이 발생하는 경우가 있어서..
동기가 안맞는거임..
또한 Master / Slave 역할은 아무때나 바꿀수있거든..
A라는 컴퓨터를 Master로 쓰다가, B라는 컴퓨터를 Master로 전환하면 A는 자동으로 Slave가 되..
하도 동기화가 안맞아서.. Master / Slave 전환을 할때마다, Slave DB를 지워버리고, Master DB를 복사해온후
Master로 전환해.. (처음에는 Data가 작아서..별 문제가 안됬는데.. 이제는 수백만건이 쌓여서..도저히 감당이 안됨..)
(좀 편법을 써서 한달 이전 데이타만 지우고 한달 이내의 데이타만 복사하도록 하고는 있음..)
두 컴퓨터의 DB를 동기화하는 좋은 방법이 없을까요?
(Master / Slave는 아무때나 바뀔 수 있음..)
비교해서 없는것만 쌓고 지우는일 없기
제가 사실 DB는 잘몰라서요.. . 데이타가 너무 많은데 (한 테이블에 200만건).. 시간이 많이 걸리지 않을까요?
많이걸려도 어쩔수없지 [from DCHub WP8.0.10211.0]
아무때나 바뀔수 있다는 것이 가장 큰 문제넹.
그리고, Data 최종 버젼 항상 체크해야겠넹.
그리고 참고로 DB는 Data를 지우면 엄청난 오버헤드가 발생함. 왠만하면 Delete를 사용하지 않는 이유이기도 함. Data를 지우고 싶다면 차라리 DB를 재생성 하는게 맞을듯. ( 작은 양의 delete라면 몰라도. ㅇㅇ )
아.. 그렇군요.. 지우는거는 금방인줄 알았어요.. 아무때나 역할이 바뀌는것때문에 고민이네요..
꼬마야// DB 데이터 삭제는 하드디스크의 프레그먼트 발생 보다 더 심한 오버헤드를 가져온다고 생각하면 됨.
지금 생각은 저 큰 테이블을 나눠서..동기화할 데이타 수를 줄이는 방향으로 해야할것 같아요.. 이렇게 하면 코드 바꿔야할게 많은데..ㅠㅠ
db 클러스터
클러스터링도 한방법일듯 한데.. 돈 좀 들어갈듯.
http://blog.naver.com/PostView.nhn?blogId=drmstorm&logNo=50107243743
http://kldp.org/node/101069
정보 감사합니다 한번 볼게요
꾸엑.. 비싸기도 하지만.. 저걸 다 셋팅할 생각을 하니.. 엄두가 안나네요.. ㅎㅎ.. 이번 출장가서 여러가지 테스트좀 해봐야겠네요
액티브 스탠바이로 하는건데 rac한는건 돈지랄이지. 그냥 active-stanby 구성하는 법을 매뉴얼디져봐라. 액티브 스탠바이는 디비에서 자체적으로 지원하는 기능인데 그걸 손으로 쿼리 옮기고 하고 있으니.... 액티브 노드랑 스탠바이 노드랑 트랜잭션까지 하나로 다 묶여서 알아서 해줌.
음// active-standby가 수시로 바뀌어도 상관없는건가요?
active-standby가 active 떨어지면 standby가 active로 올라오는 기능 아닌가요? 그럼 수시로 바뀌어도 상관없을거같은데... 기술적인 부분을 몰라서 잘 모르겠네요
찾아봤는데요..active/standby는 실시간 사용이 안된다고 하네요.. 저처럼 수시로 바꾸는 경우는 안된다고.. ㅠㅠ
아마 replication 이.. activey/standby 인듯..