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

查看所有标签

猜你喜欢:

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

赢在设计

赢在设计

[美] 洛芙迪 (Lance Loveday)、[美] 尼豪斯 (Sandra Niehaus) / 刘淼、枊靖、王卓昊 / 人民邮电出版社 / 2010-8 / 55.00

企业总是面临在网站设计和改进方面进行投资的抉择。怎样才能让有限的资金发挥出最大的效益呢?网站设计不应只是把网站做得赏心悦目,它更应该是提高经济收益和获得竞争优势的战略利器。是时候让网站发挥其潜能,以业务指标为导向来做设计决策,为提升网站收益而设计了。 作者凭借多年为众多网站做咨询工作的经验,为我们揭示了赢在设计的奥秘。它针对目前网站设计中存在的典型问题,先从宏观上探讨解决问题的战略手段,围绕......一起来看看 《赢在设计》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具