创建这样的表格,这里要同时有PK和ndbcluster engine的指定。只指定其一,不会触发这种情况。
create table test3col(id int(3), name varchar(10), last varchar(10), primary key(id))engine=ndbcluster;
mysql> insert into test3col values(1,'a','b'); mysql> update test3col set last='c' where id=1;
SimpleCilent打印出来的log,可以发现update命令被认为是insert类型,同时只显示了主键和更新列 ================> binlog[log-bin.000001:3946366] , name[cudb_user_data,test3col] , eventType : CREATE empty count : 1 empty count : 2 empty count : 3 empty count : 4 empty count : 5 empty count : 6 ================> binlog[log-bin.000001:3946753] , name[mysql,ndb_apply_status] , eventType : INSERT server_id : 501 update=true epoch : 15301516776701952 update=true log_name : update=true start_pos : 0 update=true end_pos : 0 update=true ================> binlog[log-bin.000001:3946814] , name[cudb_user_data,test3col] , eventType : INSERT id : 1 update=true name : a update=true last : b update=true ================> binlog[log-bin.000001:3947108] , name[mysql,ndb_apply_status] , eventType : INSERT server_id : 501 update=true epoch : 15301538251538433 update=true log_name : update=true start_pos : 0 update=true end_pos : 0 update=true ================> binlog[log-bin.000001:3947169] , name[cudb_user_data,test3col] , eventType : INSERT id : 1 update=true last : c update=true
原提问者GitHub用户suxingfate
1、只显示主键和变更列,估计和你mysql版本有关,mysql5.6之后支持minial image模式,只会记录变更列和主键
2、至于update被认为insert,个人初步判断和ndbcluster有关,以前没测试过
建议你直接看一下show binlog events看一下对应update sql的binlog对象
原回答者GitHub用户agapple
根据您提供的信息,可以看出是由于 MySQL Server 在使用 NDB Cluster 引擎存储表格时,可能会出现 Update Event 被识别为 Insert Event 的情况。建议您检查 MySQL Server 的版本是否符合 NDB Cluster 引擎的要求,并确认 NDB Cluster 引擎是否已经正确安装和配置。此外,您还可以尝试升级 MySQL Server 版本,或者尝试使用其他的存储引擎来存储数据表格,以解决这个问题。如果您仍然无法解决问题,建议您将更详细的错误信息和日志信息提供出来,以便更好地定位和解决问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。