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

刚才使用 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                    

发表评论

目前评论:2

  • avatar 1

    11111