본문 바로가기

분류 전체보기

(70)
Debezium 커넥터 복구 방법 실 운영을 하다보니, bin-log 파싱에러가 발생했다. "schema.history.internal.skip.unparseable.ddl": "true" 옵션을 사용했는데도 불구하고 프로듀싱하는 커넥터가 Stopping down connector 되었다. (원인 : 원인은 primaryKey를 삭제하여 io.debezium.DebeziumException: Error processing binlog event 에러가 발생) 장애 발생을 좀 더 신속하게 알았다면, 재기동을 했겠지만 어느정도 시간이 흐른 뒤 인지하였다. 그래서 에러 발생 시점의 mysql-bin 로그를 못찾는 바람에 재기동이 불가능했다. RDS는 bin 로그 저장 기간을 디폴트 값으로 쓴다면, 짧은 기간동안만 저장한다 즉각적으로 재기동 하..
debezium 실 적용기 내가 직접 찾아보고, 검토 후 적용을 성공적으로 마쳤다. 성공에 기여했던 부분 kafka 인스턴스 생성 > m5.large로 비교적 넉넉한 리소스를 받았다. 모니터링해보니 리소스 자원은 50%밑을 유지 중이다. 운이 좋게도 debezium mariadb 공식지원이 되었다. 2023/12 월부터 지원하는지라 걱정이 많았지만, mysql과 동일하게 잘 된다. 커넥터 커스터 마이징. 의도했던 대로 debezium 전용 컬럼 추가 없이 데이터 동기화가 잘 되었다. 정규식의 소중함을 알게 되었다. 위기가 될 수 있었던 부분 처음 수집 커넥터 설정 시 테이블&로우 락에 대한 부분. 서비스가 작동하지 않는 시점에 적용했으나 걱정이 되었다. 하지만 예상대로 락은 발생하지 않았다. 컨슘 커넥터 설정 시 특정 테이블은 동..
유사 채팅방 구현하기(2) 개발목표 1. 채팅 방 접속 시 웹소켓 연결 정보를 찾아 채팅방 메모리에 변수에 저장한다. 2. 커넥션이 끊겼을 때 입장했던 방 사람들에게만 사실을 브로딩 캐스팅한다. 물론 메모리의 데이터는 remove한다. 3. 채팅방 입장 시 방 사람들에게만 사실을 브로딩 캐스팅한다. 4. 유요하지 않은 Text(none Json String)을 보냈더라도 커넥션을 유지한다. 1. 채팅 방 접속 시 웹소켓 연결 정보를 찾아 채팅방 메모리에 변수에 저장한다. 채팅방 정보는 WAS메모리에 기록한다. 커넥션 성공 시 Map 로 저장된다. 추후 이 Map은 Map 형태로 2중 저장된다.(채팅방 입장 시) Map으로 선택한 이유는 HashMap을 사용해 빠른 탐색을 하기 위해서이다. (List의 경우 for문을 돌릴 수 밖에..
유사 채팅방 구현하기(1) 개발목표 1. 웹소켓을 사용한 채팅방을 구현한다. 2. 웹소켓 연결 시 토큰 값을 받아 연결 가능 여부를 판단한다. 3. 웹소켓 연결 후 채팅방 입장을 요청하며, 채팅방은 DB로 관리한다. 4. 재연결 시도 시(강제종료/연결불안정등) 3.에서 기록된 정보로 채팅방에 재입장한다. 5. 특정 요청 시 채팅방에 포함된 사용자에게 내용을 서버에서 브로드캐스팅한다. 공통코드 프로토타입 1. @Config 채팅방 정보는 WAS메모리에 기록될 예정이다. (추후 변경가능성 높음) 웹소켓 연결시 인터셉터가 연결가능 여부를 판단한다. 연결가능 여부는 Acess Token으로 판단한다. 소켓세션 쓸만하도록 정보를 가공하는 역할을 한다. 핸들러를 따로 생성하여, 메세지를 받았을 때, 연결 시작/종료에 대한 이벤트를 메니징 한..
Debezium 커넥터 샘플(1) debezium 커넥터는 유용하지만, 옵션을 설정하는데 복잡함이 존재한다. 최대한 간결하게 하는것이 포인트가 될 것이다. 옵션 설정값과 설명을 붙여서 기록하겠다. 수집커넥터 { "name": "커넥터명", "config": { "name": "커넥터명", "tasks.max": "1", "connector.class": "io.debezium.connector.mysql.MySqlConnector", "database.hostname": "디비 호스트", "database.port": "디비 포트", "database.user": "디비 아이디", "database.password": "디비 패스워드", "database.server.id": "112233", "database.server.name": ..
Debezium 개념정리 도입 배경 1. A DB에서 B DB로 데이터 동기화를 해야한다. 2. 테이블 단위로 이루어지며, A DB와 B DB가 버전이 다르다.(오라클/mysql 포함) 기존 방식 1. A DB의 기준 컬럼(시간)을 기준으로 전송 데이터를 읽어 가공&전송한다. 2. 전송받은 데이터를 B DB에 기록한다. Debezium 1. Debezium은 database에서 발생하는 변경사항을 추적할 수 있는 일종의 Apache Kafka Connect의 source connector 이다. 2. 데이터베이스의 바이너리 로그파일을 기반으로 변경사항을 감지한다. 3. 변경사항 감지는 카프카 커넥터로 이루어진다. 4. 현재 적용 대상인 mysql은 binary log 파일에 모든 데이터베이스 변경사항이 기록되는데 Debezium..
debezium 커넥터 설정 version confluentinc-kafka-connect-jdbc-10.7.4 debezium-connector-mysql-1.5.4.Final-plugin master { "name": "source-test-connector", "config": { "connector.class": "io.debezium.connector.mysql.MySqlConnector", "tasks.max": "1", "database.hostname": "192.168.0.216", "database.port": "3306", "database.user": "wiezon", "database.password": "wiezon1!", "database.server.id": "184054", "database.serve..
debezium kafka 1. kafka설치 wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz 2. kafka 설정 주키퍼 /usr/local/src/kafka_2.13-3.6.0/bin/zookeeper-server-start.sh -daemon /usr/local/src/kafka_2.13-3.6.0/config/zookeeper.properties 브로커 /usr/local/src/kafka_2.13-3.6.0/bin/kafka-server-start.sh -daemon /usr/local/src/kafka_2.13-3.6.0/config/server.properties export KAFKA_HEAP_OPTS="-Xmx200m -Xms200m" 메모리설..