架构说明:
ck部署在3台服务器上,每台服务器上配置两个ck实例,端口分别为9100和9200,架构是3分片2副本架构。
问题现象1:
节点1,节点3查询分布式表,数据总变,节点2查询数据正常。
其中t1_all表插入了10条数据。
节点1执行多次查询,结果不稳定,总变,6、10、12 …每次查询都不一样。
select * from t1_all;
问题现象2:
节点1:9100实例 和 节点2:9200实例 互为副本;
节点2:9100实例 和 节点3:9200实例 互为副本;
节点3:9100实例 和 节点1:9200实例 互为副本;
当向节点1:9100实例写入时间时,发现节点2:9200实例可以正常同步实例,
但是节点3:9200实例居然也同步了数据,实际上不应该同步。
问题分析:
检查配置文件副本配置部分,并没有发现异常,节点1:9100实例的副本只有节点2:9200实例。
<ck_cjc_cluster>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>192.0.10.11</host>
<port>9100</port>
<user>default</user>
<password>******</password>
</replica>
<replica>
<host>192.0.10.12</host>
<port>9200</port>
<user>default</user>
<password>******</password>
</replica>
</shard>
......
那么还有哪些参数会影响数据同步呢?
最终发现节点3:9200实例的参数配置有问题,原以为这个参数只起到默认标签的作用,没想到还有副本作用,正是因为和都影响副本行为,数据不一致时就可能会出现这种看上去奇怪的问题。
<macros>
<shard>01</shard>
<replica>cjc03-xx-x</replica>
</macros>
解决方案:
修改为
<macros>
<shard>02</shard>
<replica>cjc03-xx-x</replica>
</macros>
再次测试,恢复正常。
###chenjuchao 20241002###
欢迎关注我的公众号《IT小Chen》