tidb:v3.0.0
问题过程:
1、向tidb插入一条数据:
2、pump日志:
3、drainer日志:
4、使用kafka的java客户端从主题拉去消息:
5、kafak监控得到的消息:
6、使用kafak客户端查看消息也是乱码的:
可以看到kafka里边的消息都是乱码的。
为了排除是kafak本身乱码的问题,我们自己新建了一个topic,往里边发送了中文,消费的时候能正常消费中文消息,即,kafka的编码设置是OK的:
建立主题,生产中文消息:
消费中文消息:
数据库和表编码格式都是utf-8:
请问在哪里设置binlog的编码?
binlog的格式自定义的详细文档有吗?
建立数据库语句:
create schema schema_test character set utf8 COLLATE utf8_bin;
建表语句:
CREATE TABLE test_code_a(id int AUTO_INCREMENT, name varchar(100),update_time datetime, create_time datetime, PRIMARY KEY (id) ) CHARACTER SET utf8 COLLATE utf8_bin;
tidb字符集:
代码里边没有和编码相关的设置。使用kafka的命令行客户端也是乱码的,感觉不是java客户端的问题。
kafka客户端乱码:
不懂就问
(zhouyueyue)
2019 年8 月 7 日 07:21
8
写入的时候没有乱码,只有在 kafka 读出来的时候出现了乱码,推测就不是 TiDB 的问题,tidb-binlog 本身没有字符集设置。
我做了测试,6717826900501472462_obinlog这个主题是tidb生成的,然后我往里边发送了一条中文的消息"我是社会主义接班人。":
然后在kafka的java客户端消费者去消费的时候,可以看到能正常的得到中文的内容:
这样是否能证明drainer发送到kafka的消息是乱码的?
不懂就问
(zhouyueyue)
2019 年8 月 7 日 07:50
10
不懂就问
(zhouyueyue)
2019 年8 月 7 日 07:58
11
anjia
(赵安家)
2019 年9 月 10 日 06:06
12
换成 ByteArrayDeserializer 而不是String 试试,参考 Java解析drainer发送到kafka中的binlog异常
system
(system)
关闭
2022 年10 月 31 日 19:10
13
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。