在线QQ客服:1922638
专业的SQL Server、MySQL数据库同步软件
请联系购买QQ:1793040
1.使用Binlog和Kafka在实时打开的Binlog日志中将mysql数据同步到Elasticsearch(1)
2.使用Binlog和Kafka实时将mysql数据同步到Elasticsearch(2)-安装并运行Kafka
3.使用Binlog和Kafka实时将mysql数据同步到Elasticsearch(3)– Binlog将生产日志消息记录到Kafka
4.使用Binlog和Kafka实时将mysql数据同步到Elasticsearch(4)-消耗Kafka消息以将数据同步到ES
–项目模块
BinlogMiddleware
1.Binlog中间件负责解析binlog并将更改后的数据以json格式发送到kafka队列。
KafkaMiddleware
2.Kafka中间件负责使用kafka队列中的消息,并将数据写入Elasticsearch。
–基本服务
(1)mysql
(2)Kafka(用于存储mysql更改消息,存储在Kafka队列中)
(3)Elasticsearch
–项目源代码
代码云:https://gitee.com/OrgXxxx/SyncMysqlToElasticsearch
(1)binlog简介
binlog,即二进制日志,它记录数据库中的所有更改并以二进制形式存储在磁盘上;
它可用于查看数据库更改的历史记录,数据库的增量备份和恢复以及Mysql的复制(主数据库和从数据库的复制)。
(2)二进制日志记录方法
行级别
Binary Log将记录每行数据的修改形式,然后在Slave一侧修改相同的数据。
如果表的结构被修改,则binlog日志记录重新创建表,插入字段,更新和其他操作语句,而不是alter操作。
优点:在行级别模式下,二进制日志不能记录已执行的Query语句的上下文相关信息,只要它记录了已修改的行及其内容即可。行级别将详细记录每行数据修改的详细信息,并且在特定情况下不会正确复制存储过程,函数以及触发器调用和触发器不会有问题。
缺点:生成大量日志内容。
语句级别
将要修改的每个SQL语句都将记录在Master的Binnary中。在复制从属端时,该SQL线程将被解析为与原始Master端相同的SQL语句,然后再次执行。
优点:首先,它解决了行级的缺点。它不需要记录每行的数据更改,从而减少了二进制日志的数量,节省了IO成本并提高了性能。
缺点:因为它是一条记录的执行语句,所以为了允许这些语句在从属端正确执行。然后,它还必须记录每个语句执行期间的一些相关信息,即上下文信息,以确保在执行从属端时可以获得所有语句,并且结果与主控端相同。另外,由于MySQL的快速发展,许多新功能不断添加,这使得MySQL复制面临不小的挑战。复制过程中岳父设计的内容更容易被窃听。在”语句级别”下,已经发现很多情况导致MySQL复制问题。主要是在使用某些特定的功能和函数修改数据之后,它出现,例如:在某些版本中,Sleep()函数无法正确复制。在存储过程中使用last_insert_id()函数可能导致从属设备和主设备的ID不一致,等等。
混合级别
在混合模式下,MySQL将根据执行的每个特定SQL语句区分要记录的日志格式,即在Statement和Row之间选择一个。除了MySQL以外,通过Statement方法可能会在复制过程中导致主服务器和从服务器之间的数据不一致。 (对于特殊情况,例如使用特殊过程和函数,使用UUID()函数等),它将选择ROW模式来记录更改,并使用Statement方法。
ps:行格式将在后续开发中使用
(3)打开mysql的二进制日志
修改my.cnf配置
b。重新启动mysql
c。检查打开状态
输入显示变量,例如” log_bin”;查看binlog的打开状态。如下所示。
查看打开状态
输入显示变量,例如” binlog_format”;查看二进制日志记录方法。如下所示。
查看二进制日志记录方法