WSO2 Stream Processor MySQL CDC快照失败:CharsetMapping类未找到
解决WSO2 Stream Processor 4.4.0无法获取MariaDB快照及CharsetMapping类未找到错误
问题根源分析
你遇到的com/mysql/jdbc/CharsetMapping类未找到错误,核心原因是MySQL Connector/J 8.x与你使用的siddhi-io-cdc-1.0.10版本不兼容:
CharsetMapping是MySQL 5.x驱动中的类,在8.x版本里被彻底移除并重构了字符集处理逻辑;siddhi-io-cdc-1.0.10是基于旧版MySQL驱动的API开发的,所以会尝试调用这个已不存在的类。
另外,你使用的是MariaDB而非MySQL,直接用MySQL驱动本身就不是最优选择,MariaDB有自己的官方驱动,兼容性会更好。
分步解决方案
1. 替换为MariaDB官方驱动
将mysql-connector-java-8.0.19.jar从WSO2 SP的lib目录中移除,下载MariaDB Connector/J 2.7.11(这个版本完美兼容MariaDB 10.4.x和Java 8+,适配WSO2 SP 4.4.0的运行环境),放入lib目录。
2. 更新CDC数据源配置
修改你的Siddhi应用或数据源配置文件,调整以下参数:
- 将驱动类名从
com.mysql.jdbc.Driver改为org.mariadb.jdbc.Driver; - 将JDBC URL从
jdbc:mysql://...改为jdbc:mariadb://localhost:3306/你的数据库名(确保端口和数据库名正确匹配XAMPP的MariaDB配置)。
3. 清理缓存并重启SP
- 删除WSO2 SP安装目录下的
tmp和work文件夹,避免残留旧驱动的类缓存; - 重新启动WSO2 Stream Processor,观察日志是否还出现类未找到的错误。
4. 验证CDC组件版本兼容性
WSO2 SP 4.4.0默认适配的siddhi-io-cdc版本是1.0.10,这个版本本身是兼容MariaDB的,但前提是使用正确的驱动。如果替换驱动后仍有问题,可以检查lib目录中是否有多个siddhi-io-cdc-*.jar,如果有,保留官方适配的版本即可,避免重复放入导致版本冲突。
额外注意事项
- XAMPP的MariaDB默认配置可能需要开启二进制日志(binlog),因为CDC需要依赖binlog来捕获数据变更和快照,确保
my.cnf或my.ini中配置了log_bin=mysql-bin以及binlog_format=ROW; - 确保数据库用户拥有足够的权限(如
REPLICATION SLAVE、REPLICATION CLIENT以及目标数据库的读写权限)。
内容的提问来源于stack exchange,提问作者user3682508
相关产品推荐
相关产品推荐

