ElasticSearch和Mysql数据同步

1、使用easy-sync实现ES和Mysql数据同步

通过binlog实时将mysql同步到elasticsearch。支持完全同步和增加同步。

项目下载地址:
	https://github.com/cehome-com/easy-sync?spm=a2c4e.11153940.blogcont617770.14.3dcb1ef63OACwm

1.1 轻松同步

通过binlog和kafka实时将mysql同步到elasticsearch。

使用方便。
支持多任务并添加新任务而无需重启。
顺利改变索引结构,不影响在线业务。

1.2 它是如何工作的?

有两种任务。
Binlog任务 - 读取binlog并将不同表的数据发送到不同的kafka主题。

Elasticsearch任务 - 每个任务读取自己的kafka主题并将数据写入elasticsearch。

1.3 为什么要用kafka?

	mysql binlog记录所有表一一变化。当您将两个表同步到es时,一个不起作用将阻止另一个表。因此,我们将两个表的数据发送
到具有不同主题的kafka,两个表将独立工作。

1.4 快速开始

安装jdk(> = 1.8),安装kafka(> = 0.9.0.1) 

从https://github.com/cehome-com/easy-sync/releases下载eays-sync,
https://github.com/cehome-com/easy-sync/releases/download/2.0.5/easy-sync .zip ,
解压缩并运行:java -jar easy-sync.jar

访问http:// localhost:8080

添加并启动binlog任务,添加并启动elasticsearch任务

1.5 添加binlog任务

Mysql binlog config 

您阅读mysql binlog之前,您必须使用Row模式启用binlog,并为您的mysql用户授予REPLICATION权限。

1.启用mysql binlog。
[mysqld]
log-bin=mysql-bin
binlog-format=ROW
server_id=1
2.创建mysql用户并授予REPLICATION权限。
CREATE USER sync IDENTIFIED BY 'sync';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'sync'@'%' ;
FLUSH PRIVILEGES;
3.在主页上,单击“添加”按钮以打开对话框。完成字段“任务名称,mysql URL /用户/密码,kafka服务器”,单击“保存”和“关闭”。
“服务器”(运行机器任务)字段无需编辑,默认值为本地IP,如“192.168.137.1”



4.binlog任务在列表中,单击“开始”。



5.等一下,单击“日志”按钮,打开一个新窗口,您可以看到一些日志。由于没有添加elasticsearch任务,binlog任务不会向kafka
发送任何数据。您必须继续添加elasticsearch任务。

1.6 添加elasticsearch任务

单击顶部菜单“Elasticsearch”,单击“添加”按钮打开新窗口,配置“基本信息”和“数据源配置”。任务。

选择mysql实例:选择刚刚配置的binlog任务“task1”。数据库名称:现有数据库,如“ershouji”。表名:现有表,例如“设备”。如
果您有多个表格,例如equipment_1,equipment_2具有相同的结构,则使用“equipment_%”或“equipment_1,equipment_2”。
主键:目前仅支持增加,数字类型(完全同步)。



Elasticsearch配置,选择elasticsearch版本。



映射mysql和elasticsearch字段。只需单击“自动映射”按钮,将列出所有字段。您可以删除或修改某些字段。



单击“重建索引”。此步骤将保存配置并创建新的elasticsearch索引。,刷新页面。您可以看到创建的任务,单击“开始”按钮。
等一下,单击“日志”查看日志。默认情况下,完全同步和增加同步会一起运行。

1.7 常问问题

mysql版本的binlog工具使用https://github.com/shyiko/mysql-binlog-connector-java,因此支持mysql 5.x或8.x.

kafka版本,kafka客户端可以使用0.9.0.1,0.10.1.0,0.11.0.1三个版本。Hight版kafka服务器通常支持低版本客户端。所以你
的kafka服务器必须> = 0.9.0.1

任务配置存储在哪里?
默认情况下,任务配置存储在用户主目录的H2数据库中,例如C:\ Users \ xxx \ easy_sync。
您可以在easy-sync.jar所在的同一目录中创建application.properties来进行更改。支持Mysql或h2数据库。
task.datasource.driverClassName=org.h2.Driver
task.datasource.url=jdbc:h2:tcp://localhost:9000/~/easy_sync;MODE=MYSQL
task.datasource.username=sa
task.datasource.password=
同步群集支持。您必须具有多个计算机节点,例如192.168.0.10和192.168.0.11。

	1.在每个节点上,在easy-sync.jar所在的同一目录中创建application.properties,将“cluster name”和“config 
storage datasource”添加到文件中。
#cluster name , also is config table_name, default is easy_sync
task.factory.name=easy_sync

#config storage datasource, support mysql or h2 database
task.datasource.driverClassName=com.mysql.jdbc.Driver
task.datasource.url=jdbc:mysql://192.168.0.13:3306/sync?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
task.datasource.username=xxxx
task.datasource.password=xxxx
	2.在每个节点启动easy_sync。
	3.配置你的任务。您可以选择运行哪个ip任务(将“server”设置为192.168.0.10或192.168.0.11)
	4.一个节点关闭后,它会在一段时间后自动切换到另一个节点(您可以看到服务器IP从192.168.0.10更改为192.168.0.11,
但在节点再次启动后,ip将切换回来)

支持语言:英语(en)和中文(cn)。默认为english,将“ language = cn ” 添加到application.properties以启用中文。

更改Web端口
修改application.properties 
server.port = 8080

支持语言:英语(en)和中文(cn)。默认为english,将“ language = cn ” 添加到application.properties以启用中文。

更改Web端口
修改application.properties 
server.port = 8080

关于索引同步

你可能感兴趣的:(大数据,java,elasticsearch,mysql)