使用go-mysql-elasticsearch同步mysql數據庫信息到ElasticSearch


本文介紹如何使用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

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。

如果沒有開啟的話,需要在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

如圖重啟成功,如果失敗可以查看一下錯誤日志,這里不做過多介紹。

3.配置go-mysql-elasticsearch

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

本文測試的配置文件內容如下:

# 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

如圖所示運行成功。

5.檢驗

查看es-head,如圖

數據都存在,然后修改id為5的數據,查看go-mysql-elasticsearch控制台,果然監聽到了變化,如圖

在次查看es-head,如圖,數據也變化了。

6.總結

由於沒上過生產,所以只對我個人測試使用進行評價,安裝上和數據同步感覺很友好,因為結合binlog的原因,可以實現同步增刪改。對於網上說的日志很少和不成熟等說法,這里不評價。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM