mysql

7次阅读

共计 814 个字符,预计需要花费 3 分钟才能阅读完成。

mysql 数据实时同步到 Elasticsearch 注意事项

网上有很多推荐 mysql 数据同步到 Elasticsearch 的方案,有大哥 canal,python 的 mysqlsmom,还有 go 的 go-mysql-elasticsearch,在我自己项目中用的是 go-mysql-elasticsearch,给大家随便讲讲我遇到的一些小问题,先看看官方提到的注意事项。

  • ES 的版本

关于 ES 的版本官方支持为

MySQL supported version < 8.0
ES supported version < 6.0

我的 ES 当前版本在 7.7.0 下运行依然运行成功

  • 开启 mysql binlog 日志,且必须为 ROW 格式

通常配置文件都是在 mysql 的 my.cnf,不知道在哪的可以用
whereis my.cnf 找到,然后把 binlog_format 配置 cat /etc/my.cnf|grep binlog_format修改成 ROW,重启!

show variables like '%binlog_format%' 

  • mysqldump 没有同步成功数据

执行 ./bin/go-mysql-elasticsearch -config=./etc/river.toml
命令开始后首先会执行 mysqldump 同步数据,如果 info 提示

[2020/07/08 10:40:23] [info] dump.go:180 skip dump, use last binlog replication pos (mysql-bin.000004, 4) or GTID set <nil>

说明 mysqldump 同步并没有成功,很有可能是因为./etc/river.toml 里的 data_dir 指定的目录没有删除,这时候去删除这个目录里面的master.info,再次运行可以看到已经 dump 成功, 参考这个 https://github.com/siddontang/go-mysql-elasticsearch/issues/115

正文完
 0