카카오, ADT 활용해 MySQL 샤드 데이터 재분배하는 방법 공개
·2016.07.01 00:00
핵심 내용
Binlog과 Table Crawler를 병행해 실시간 데이터 충돌 없이 샤드를 확장·축소하는 전략을 제시하며, 전수 조사를 통한 데이터 검증 방안을 공유한다.
자세히 보기
카카오는 자체 개발한 데이터 전송 도구 ADT(Async Data Transfer)를 활용해 MySQL 마스터 DB의 데이터를 여러 샤드로 재분배하는 예제를 공개했습니다. 기존 Range나 Modulus 기반 샤딩의 한계와 클라우드 환경에서의 Scale-in/out 필요성을 해결하기 위해, Binlog 변경 사항과 기존 데이터를 동시에 처리하는 두 가지 핸들러(BinlogHandler, TableCrawlHandler)를 구현했습니다. 데이터 충돌을 방지하기 위해 Binlog 처리 시 REPLACE 문을, 크롤링 시 INSERT IGNORE 문을 사용하며, 순차 처리나 동시 처리 시 락(Lock) 사용 및 삭제 이벤트 히스토리 관리 등 다양한 실행 전략을 제안합니다. 또한 데이터 무결성을 위해 전수 조사를 원칙으로 하며, 서비스 중단 여부에 따른 두 가지 검증 방안을 소개했습니다. 단, 데이터 검증 부분은 카카오 내부적으로 아직 이론 검증 단계임을 명시했습니다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.