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

栏目: 数据库 · Mysql · 发布时间: 6年前

内容简介:本文介绍如何使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch。go-mysql-elasticsearch是一个将MySQL数据自动同步到Elasticsearch的服务。它首先使用mysqldump获取原始数据,然后用binlog增量地同步数据。

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

1.go-mysql-elasticsearch简介

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

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

github地址: github.com/siddontang/…

这里有几点注意事项:

  • 1.Mysql的binlog必须是ROW模式,不然启动会报错。
  • 2.连接Mysql的用户权限需要大一些。

2.安装

2.1 安装go

安装go

yum install -y go
复制代码

安装godep

go get github.com/tools/godep
复制代码

下载go-mysql-elastisearch插件

go get github.com/siddontang/go-mysql-elasticsearch
复制代码

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

cd /root/go/src/github.com/siddontang/go-mysql-elasticsearch
复制代码

编译

make
复制代码

2.2 Mysql开启binlog

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

进入mysql

mysql -uroot -p
复制代码

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

show variables like '%log_bin%';
复制代码

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

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

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

server-id=1
log-bin=/usr/local/mysql-log/mysql-bin.log
binlog_format="ROW"
复制代码

设置完成后重启mysql.

service mysqld restart
复制代码

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

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

3.配置go-mysql-elasticsearch

需要配置一下go-mysql-elasticsearch,样例在: github.com/siddontang/…

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

# MySQL 配置:地址,用户名,密码
my_addr = "ip:3306"     
my_user = "root"
my_pass = "***"

# Elasticsearch地址
es_addr = "ip:端口"
    
# 存储数据的位置
data_dir = "./var"
    
# Inner Http status address
stat_addr = "127.0.0.1:12800"
    
# pseudo server id like a slave
server_id = 1001
    
# mysql or mariadb
flavor = "mysql"
    
# mysql备份文件,如果不设置或设置为空,则跳过
# mysqldump = "mysqldump"
    
# minimal items to be inserted in one bulk
bulk_size = 128
    
# force flush the pending requests if we don't have enough items >= bulk_size
flush_bulk_time = "200ms"
    
# Ignore table without primary key
skip_no_pk_table = false
    
# MySQL数据源,schema:数据库,tables:表
[[source]]
schema = "test"
tables = ["link_info"]

[[rule]]
schema = "test"
table = "link_info"
index = "test_mysql2"
type = "link_info"

复制代码

4.运行go-mysql-elasticsearch

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

bin/go-mysql-elasticsearch -config=river.toml
复制代码

如图所示运行成功。

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

5.检验

查看es-head,如图

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

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

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

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

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

6.总结

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


以上所述就是小编给大家介绍的《使用go-mysql-elasticsearch同步mysql数据库信息到ElasticSearch》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

长尾理论

长尾理论

[美]克里斯•安德森 (Chris Anderson) / 乔江涛、石晓燕 / 中信出版社 / 2012 / 68.00元

网络经济正如火如荼地发展着,长尾理论无疑成为当代商务人士最为关注的焦点之一。不论是关于长尾理论的溢美还是论战,都代表了其备受关注的程度。 《长尾理论》是克里斯•安德森对这些争论的最明确的回答。在书中,他详细阐释了长尾的精华所在,指出商业和文化的未来不在于传统需求曲线上那个代表“畅销商品”的头部,而是那条代表“冷门商品”的经常被人遗忘的长尾。他还揭示了长尾现象是如何从工业资本主义原动力——规模......一起来看看 《长尾理论》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换