go-mysql-elasticsearch dump.go:164 skip dump, use last binlog replication pos

avatar 2019年02月02日23:46:19 6 2778 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
刚才使用 go-mysql-elasticsearch 将 mysql 中的数据同步到 elasticsearch 中。

执行 ./bin/go-mysql-elasticsearch -config=./etc/river.toml 命令开始 dump 数据和同步

第一把是没问题的,但是我把索引删了,数据全部删了,准备重新同步。

第二把成功不了,看报错是 dump skip 了

日志信息如下
  1. [2019/02/02 22:32:45] [info] binlogsyncer.go:111 create BinlogSyncer with config {1 mysql 127.0.0.1 3306 root   utf8 false false <nil> false false 0 0s 0s 0}
  2. [2019/02/02 22:32:46] [info] status.go:53 run status http server 127.0.0.1:12800
  3. [2019/02/02 22:32:46] [info] dump.go:164 skip dump, use last binlog replication pos (mysql-bin.000002, 335) or GTID set %!s(<nil>)
  4. [2019/02/02 22:32:46] [info] binlogsyncer.go:323 begin to sync binlog from position (mysql-bin.000002, 335)
  5. [2019/02/02 22:32:46] [info] binlogsyncer.go:172 register slave for master server 127.0.0.1:3306
  6. [2019/02/02 22:32:46] [info] sync.go:31 start sync binlog at binlog file (mysql-bin.000002, 335)
  7. [2019/02/02 22:32:46] [info] binlogsyncer.go:692 rotate to (mysql-bin.000002, 335)
  8. [2019/02/02 22:32:46] [info] sync.go:73 rotate binlog to (mysql-bin.000002, 335)
  9. [2019/02/02 22:32:46] [info] master.go:54 save position (mysql-bin.000002, 335)

也没有报错,不往下执行了,数据也不同步了。



看到上面的 skip dump,大概猜出是这个搞的鬼

然后在 github 的 issue 里搜了一把,找到了解决方案

https://github.com/siddontang/go-mysql-elasticsearch/issues/115


原因和解决方案


原因 master.info 文件记录上一次同步位置

该文件里内容如下



如果有这个文件,从该文件中的 bin_pos 开始同步



查看 binlog 数据



因为日志位置 335 之后没有更新,所以没有任何新的数据同步进来。





其实,这个时候,如果我们往数据库添加两条记录,会同步两条的。



我这里的解决方案就是删除掉 master.info  文件

完整位置 go-mysql-elasticsearch/var/master.info























  • 微信
  • 交流学习,服务定制
  • weinxin
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0