通过binlog实时将mysql同步到elasticsearch。支持完全同步和增加同步。
项目下载地址:
https://github.com/cehome-com/easy-sync?spm=a2c4e.11153940.blogcont617770.14.3dcb1ef63OACwm
通过binlog和kafka实时将mysql同步到elasticsearch。
使用方便。
支持多任务并添加新任务而无需重启。
顺利改变索引结构,不影响在线业务。
有两种任务。
Binlog任务 - 读取binlog并将不同表的数据发送到不同的kafka主题。
Elasticsearch任务 - 每个任务读取自己的kafka主题并将数据写入elasticsearch。
mysql binlog记录所有表一一变化。当您将两个表同步到es时,一个不起作用将阻止另一个表。因此,我们将两个表的数据发送
到具有不同主题的kafka,两个表将独立工作。
安装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任务
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任务。
单击顶部菜单“Elasticsearch”,单击“添加”按钮打开新窗口,配置“基本信息”和“数据源配置”。任务。
选择mysql实例:选择刚刚配置的binlog任务“task1”。数据库名称:现有数据库,如“ershouji”。表名:现有表,例如“设备”。如
果您有多个表格,例如equipment_1,equipment_2具有相同的结构,则使用“equipment_%”或“equipment_1,equipment_2”。
主键:目前仅支持增加,数字类型(完全同步)。
Elasticsearch配置,选择elasticsearch版本。
映射mysql和elasticsearch字段。只需单击“自动映射”按钮,将列出所有字段。您可以删除或修改某些字段。
单击“重建索引”。此步骤将保存配置并创建新的elasticsearch索引。,刷新页面。您可以看到创建的任务,单击“开始”按钮。
等一下,单击“日志”查看日志。默认情况下,完全同步和增加同步会一起运行。
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
关于索引同步