暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch

dalaoyang 2019-06-14
616

本文介绍如何使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch。

1.go-mysql-elasticsearch简介

go-mysql-elasticsearch是一个将MySQL数据自动同步到Elasticsearch的服务。

它首先使用mysqldump获取原始数据,然后用binlog增量地同步数据。

github地址:https://github.com/siddontang/go-mysql-elasticsearch

这里有几点注意事项:

  • 1.Mysql的binlog必须是ROW模式,不然启动会报错。

  • 2.连接Mysql的用户权限需要大一些。

2.安装

2.1 安装go

安装go

  1. yum install -y go

安装godep

  1. go get github.com/tools/godep

下载go-mysql-elastisearch插件

  1. go get github.com/siddontang/go-mysql-elasticsearch

进入对应目录,比如我使用的如下目录/root/go/src/github.com/siddontang/go-mysql-elasticsearch

  1. cd /root/go/src/github.com/siddontang/go-mysql-elasticsearch

编译

  1. make

2.2 Mysql开启binlog

接下来需要在mysql中开启binlog,首先查询一下是否开启了binlog。

进入mysql

  1. mysql -uroot -p

输入密码,然后输入如下命令查看binlog开启状态

  1. show variables like '%log_bin%';

如图所示,ON为开启了,如果没有开启的话为OFF。

如果没有开启的话,需要在my.cnf配置中添加如下配置(其中server-id可以根据情况设置,这里设置为1,log-bin为日志位置,一定要给日志写的权限,不然会报错,binlog_format为模式,这里必须为ROW):

  1. server-id=1

  2. log-bin=/usr/local/mysql-log/mysql-bin.log

  3. binlog_format="ROW"

设置完成后重启mysql.

  1. service mysqld restart

如图重启成功,如果失败可以查看一下错误日志,这里不做过多介绍。

3.配置go-mysql-elasticsearch

需要配置一下go-mysql-elasticsearch,样例在:https://github.com/siddontang/go-mysql-elasticsearch/blob/master/etc/river.toml

本文测试的配置文件内容如下:

  1. # MySQL 配置:地址,用户名,密码

  2. my_addr = "ip:3306"

  3. my_user = "root"

  4. my_pass = "***"


  5. # Elasticsearch地址

  6. es_addr = "ip:端口"


  7. # 存储数据的位置

  8. data_dir = "./var"


  9. # Inner Http status address

  10. stat_addr = "127.0.0.1:12800"


  11. # pseudo server id like a slave

  12. server_id = 1001


  13. # mysql or mariadb

  14. flavor = "mysql"


  15. # mysql备份文件,如果不设置或设置为空,则跳过

  16. # mysqldump = "mysqldump"


  17. # minimal items to be inserted in one bulk

  18. bulk_size = 128


  19. # force flush the pending requests if we don't have enough items >= bulk_size

  20. flush_bulk_time = "200ms"


  21. # Ignore table without primary key

  22. skip_no_pk_table = false


  23. # MySQL数据源,schema:数据库,tables:表

  24. [[source]]

  25. schema = "test"

  26. tables = ["link_info"]


  27. [[rule]]

  28. schema = "test"

  29. table = "link_info"

  30. index = "test_mysql2"

  31. type = "link_info"

4.运行go-mysql-elasticsearch

配置完成后,运行go-mysql-elasticsearch

  1. bin/go-mysql-elasticsearch -config=river.toml

如图所示运行成功。

5.检验

查看es-head,如图

数据都存在,然后修改id为5的数据,查看go-mysql-elasticsearch控制台,果然监听到了变化,如图

在次查看es-head,如图,数据也变化了。

6.总结

由于没上过生产,所以只对我个人测试使用进行评价,安装上和数据同步感觉很友好,因为结合binlog的原因,可以实现同步增删改。对于网上说的日志很少和不成熟等说法,这里不评价。


-END-


文章转载自dalaoyang,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论