架构说明:
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>参数配置有问题,
原以为这个参数只起到默认标签的作用,没想到还有副本作用,
正是因为<replica>和<macros>都影响副本行为,
数据不一致时就可能会出现这种看上去奇怪的问题。
<macros> <shard>01</shard> <replica>cjc03-xx-x</replica> </macros>
解决方案:
修改为
<macros> <shard>02</shard> <replica>cjc03-xx-x</replica> </macros>
再次测试,恢复正常。
###chenjuchao 20241002###
欢迎关注我的公众号《IT小Chen》

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-3035165/ ,如需转载,请注明出处,否则将追究法律责任。