MYSQL 데이터베이스 분산처리
현재 (DB 1) 1개의 데이터 베이스 서버를 사용중인데요
분산 처리를 위해서 (DB 2, DB 3) 2개 데이터 베이스 서버를 추가하려고합니다
기존 운영중인 DB 1의 용량이 1TB 정도인데요
분산 처리를 위해 DB1의 내용을 DB2, DB3에 전달해야하는 상황입니다
DB 2, DB 3 에 mysql dump 를 이용하여 내용을 전달하려 했으나 용량이 INSERT하는데 약 1주일이 걸리고있습니다
1주일 동안 DB1에는 CRUD가 계속 이뤄지기 때문에 DB2, DB3에 전달된 데이터는 또 쓸모가 없게됩니다
현업에서는 DB를 추가할 때 어떤식으로 데이터를 처리하나요?
MySQL의 replication기능을 이용하시면 됩니다.
3대의 DB서버 중에 원래 서버는 Master로 나머지는 Slave1, Slave2로 세팅을 한 후 Master서버에서 데이터를 Insert/Update/Delete를 하면 나머지 Slave 서버들에 거의 동시에 Sync가 됩니다.
이렇게 3개의 서버를 분산처리하셔도 되고 더 좋은 방법은 Master는 Insert/Update/Delete 용도로만 사용하고 Slave 서버들은 분산처리하여 Select 기능만 수행하도록 일반적으로 사용이 됩니다.
Slave는 인덱스 처리하여 계속 추가가 가능합니다.
이렇게 하면 Master의 전체 내용을 Slave로 최초 백업후 이후부터는 Master에 Insert/Update/Delete 작업만 진행하시면 table lock으로 인한 딜레이 문제 해결과 더불어 분산효과도 얻을 수 있습니다.
관련되어 소개된 사이트가 많은데 아래 사이트도 구체적으로 세팅방법등에 대해서 설명이 잘되어 있어서 참고해 보시면 좋을것 같습니다.
https://server-talk.tistory.com/240
도움이 되셨기를 바랍니다.
안녕하세요.
mysql를 주로 다루진 않지만,
1TB라는 많은 데이터를 dump를 이용하여 하시는 방법도 나쁘지 않지만, 데이터가 1TB이고 CRUD가 계속 이뤄지신다고 했는데
현업에서는 CDC라는 것을 사용해서 실시간으로 변경되는 데이터를 다른 DB에 적용 시키곤 합니다.
아니면 DB를 정상적으로 종료 시킨 이후에 데이터파일을 카피 한 후 올리는 방법도 하나의 방법이지만
어느 정도의 다운타임을 가져야되기 때문에 다운타임이 없다면 CDC 방법 밖에 없습니다.