인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Kafka Source Connect 사용

No suitable driver 나오시는 분들

작성

·

6.1K

·

수정됨

3

https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar

제 경우 mariadb 커넥터 대신 mysql 커넥터 사용해서 해결했습니다.

(... confluentXXX/share/java/kafka 폴더에 위치)


정말.. 하루종일 아래 예외로 애먹었네여..

Error while starting connector ...

No suitable driver found for jdbc:mysql://localhost:3307/mydb

 

mariadb 버전별 커넥터를 5개정도 해봐도 안되어서

자포자기한 채로 mysql 커넥터를 사용하니 되었습니다 ㅠㅠ

자세한 버전 정보입니다. (윈도우)

kafka : 2.13-3.4.0

kafka-connect-jdbc : 10.7.2

confluent : 7.4.0

mariaDB : 10.11

java : 17 

 

설정 정보입니다.

confluent/etc/kafka/connect-distributed.properties

89번 행 근처
plugin.path=\C:\\Work\\confluentinc-kafka-connect-jdbc-10.7.2\\lib

 

confluent/bin/windows/kafka-run-class.bat

97번 행 근처
rem classpath addition for LSB style path
if exist "%BASE_DIR%\share\java\kafka\*" (
	call :concat "%BASE_DIR%\share\java\kafka\*"
)

(...)

122번 행 근처
rem Log4j settings
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
	if exist %~dp0../../etc/kafka/tools-log4j.properties (
		set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../etc/kafka/tools-log4j.properties
	) else (
		set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%BASE_DIR%/etc/kafka/tools-log4j.properties
	)
) ELSE (
  rem create logs directory
  IF not exist "%LOG_DIR%" (
      mkdir "%LOG_DIR%"
  )
  set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../etc/kafka/tools-log4j.properties
)

 

confluent/bin/windows/connect-distributed.bat

28번 행 근처
rem Log4j settings
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
	set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%BASE_DIR%/etc/kafka/connect-log4j.properties -Dlog4j.config.dir=%BASE_DIR%/etc/kafka
)


POST Request

{
  "name":"my-source-connect",
  "config":{
    "connector.class" : "io.confluent.connect.jdbc.JdbcSourceConnector",  
    "connection.url":"jdbc:mysql://localhost:3307/mydb",
    "connection.user":"root",
    "connection.password":"1234",
    "mode":"incrementing",
    "incrementing.column.name":"id",
    "table.whitelist":"users",
    "topic.prefix":"my_topic_",
    "tasks.max":"1"
  }
}

답변 2

7

저도 같은 문제로 고생해서 제가 해결한 방법 공유드립니다.

결론부터 말씀드리면 url의 mysql 부분을 mariadb로 변경해서 해결했습니다.

"connection.url":"jdbc:mariadb://localhost:3306/mydb"

kafka-connect가 정확히 어떻게 드라이버를 찾는지는 모르겠으나 프로토콜이 mysql이면 mariadb jdbc를 잘 못찾는 듯합니다.

https://github.com/confluentinc/kafka-connect-jdbc/blob/master/src/main/java/io/confluent/connect/jdbc/dialect/MySqlDatabaseDialect.java#L52

https://github.com/confluentinc/kafka-connect-jdbc/blob/master/src/main/java/io/confluent/connect/jdbc/dialect/DatabaseDialectProvider.java#L171

저도 mysql 드라이버로 시도했을땐 드라이버는 찾던데, 특정버전 이후로 tx-isolation-> transaction-isolation 변수로 변경된 것 때문에 다른 오류가 뜨더라구요. 그래서 어쩔수 없이 mariadb driver 사용하면서 url 부분 변경하니 작동됐습니다.

mysql driver에서는 transaction-isolation을 찾는데, mariadb에서 tx-isolation 변수만 있어 생긴 에러라고 합니다.
찾아보니 mariadb도 최신버전부터 변경된 변수로 적용한다는데, 저는 brew를 통해서 설치한지라 최신버전을 설치할 수 없었습니다.

마지막으로 제 실행환경 공유합니다.(mac)

kafka : stable 3.4.0
kafka-connect-jdbc : 10.7.24
mariaDB : 11.0.2-MariaDB Homebrew
java : openjdk-17

-4

안녕하세요, 인프런 AI 인턴이에요.

해당 오류는 JDBC 드라이버가 추가되지 않아서 발생하는 오류입니다. jdbc 드라이버를 추가해보세요.

마리아DB 버전별 드라이버 링크는 아래와 같아요.
https://mariadb.com/downloads/#connectors
또한, mysql 커넥터를 사용하여 오류를 해결하셨다고 하니, 드라이버 파일이 필요하시다면 mysql 커넥터를 다운받아 사용하시면 됩니다.

참고로, confluentXXX/share/java/kafka 폴더에 위치시키셨으니 해당 경로를 활용하시기 바랍니다.

더 자세한 오류 메시지와 함께 문제가 해결되었는지 알려주시면 더욱 도움될 것 같습니다.

좋은 하루 되세요!

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기