작성
·
247
0
안녕하세요. 강의를 들으며 테스트 해보던 도중에 질문이 있습니다.
mysql -> elasticsearch 로 데이터 마이그레이션에 connector 를 활용하려고 테스트를 하고 있습니다. 그래서 DB 에 있는 여러 테이블 중 필요한 일부 테이블만 커넥터 생성 시 등록하려고 합니다. 하지만, 이후에 같은 DB 내에 다른 테이블도 필요해지는 상황이 올 경우가 생길텐데 이런 경우에 어떻게 대응하는 것이 좋은 방법인지 궁금합니다.
이런 요구사항들이 생길 때마다 커넥터를 하나씩 더 등록
-> 같은 DB 를 바라보는 커넥터가 여러개이면 비효율적이지 않을까 싶었습니다.
이런 상황을 대비해서 커넥터 등록시 DB 내의 모든 테이블을 등록
-> DB 내에 꽤 많은 테이블이 있어 카프카의 스토리지 및 비용 등의 문제가 있지 않을까 싶었습니다.
위의 방법 정도로 생각이 드는데, 조언 부탁드립니다.
답변 1
1
안녕하십니까,
Debezium CDC Souce Connector를 사용하시는지, 아님 JDBC Source Connector를 사용하시는지 잘 모르겠지만, Debezium을 사용하신다고 가정하고 답변드리겠습니다
Debezium Source Connector는 하나만 등록하는게 권장사항입니다.
최초 Debezium Source Connector를 생성시 연동하려는 테이블만 table.include.list 파라미터에 설정해 줍니다.
그리고 나서 연동 후에 새로운 테이블을 추가해서 연동한다면 다시 table.include.list에 해당 테이블을 추가한 뒤 기존에 생성된 connector를 drop하고 새롭게 connector를 생성해 줍니다. 이 때 새로운 connector의 이름이 기존 connector와 동일해야 합니다. 왜냐하면 connect_offsets 내부 토픽에 기존에 연동된 정보를 해당 connector명으로 가지고 있기 때문입니다.
그리고 질문 내용을 보면 데이터 마이그레이션에 사용한다고 하셨는데, 데이터 마이그레이션이 실시간이 아니고, 1회성으로 완료되거나, 실시간으로 하되, Delete가 발생하지 않는다고 한다면 JDBC Source Connector를 테이블별로 여러개 만드셔도 상관 없습니다.
감사합니다.
Debezium 을 사용해서 테스트 진행중이였고, 1회성이 아니라 계속 실시간으로 마이그레이션이 되어야하며, delete 도 될 수 있는 상황입니다.
따라서 말씀해주신 것처럼 coonector drop, 새로운 connector 생성으로 테스트 진행해보도록 하겠습니다.
답변 감사합니다! :)