刚才使用 go-mysql-elasticsearch 将 mysql 中的数据同步到 elasticsearch 中。
执行 ./bin/go-mysql-elasticsearch -config=./etc/river.toml 命令开始 dump 数据和同步
第一把是没问题的,但是我把索引删了,数据全部删了,准备重新同步。
第二把成功不了,看报错是 dump skip 了
日志信息如下
也没有报错,不往下执行了,数据也不同步了。
看到上面的 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
执行 ./bin/go-mysql-elasticsearch -config=./etc/river.toml 命令开始 dump 数据和同步
第一把是没问题的,但是我把索引删了,数据全部删了,准备重新同步。
第二把成功不了,看报错是 dump skip 了
日志信息如下
- [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}
- [2019/02/02 22:32:46] [info] status.go:53 run status http server 127.0.0.1:12800
- [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>)
- [2019/02/02 22:32:46] [info] binlogsyncer.go:323 begin to sync binlog from position (mysql-bin.000002, 335)
- [2019/02/02 22:32:46] [info] binlogsyncer.go:172 register slave for master server 127.0.0.1:3306
- [2019/02/02 22:32:46] [info] sync.go:31 start sync binlog at binlog file (mysql-bin.000002, 335)
- [2019/02/02 22:32:46] [info] binlogsyncer.go:692 rotate to (mysql-bin.000002, 335)
- [2019/02/02 22:32:46] [info] sync.go:73 rotate binlog to (mysql-bin.000002, 335)
- [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
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏