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

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

内容简介:本文介绍如何使用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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Head First jQuery

Head First jQuery

Ryan Benedetti , Ronan Cranley / O'Reilly Media / 2011-9 / USD 39.99

Want to add more interactivity and polish to your websites? Discover how jQuery can help you build complex scripting functionality in just a few lines of code. With Head First jQuery, you'll quickly g......一起来看看 《Head First jQuery》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具