Mysql数据库监听binlog的开启步骤

下面是详细讲解Mysql数据库监听binlog的开启步骤的完整攻略。

什么是binlog

先来了解一下binlog。MySQL 的二进制日志,即 binlog。它记录了所有更新或修改了数据库数据的操作,包括数据库的更改语句,如 INSERT、UPDATE 和 DELETE 等,以及关闭或重启服务器时的操作等。

为什么要监听binlog

在一些情况下,我们需要监听MySQL的binlog,比如:

  • 追踪或复制更改已经作用到MySQL数据库上的操作;
  • 根据特定规则过滤binlog中的所有操作,示例:数据同步,数据备份等;
  • 对binlog中的指令进行解析,以便后续序列化或处理正确的触发事件;
  • 对binlog中的数据进行分析,保存到外部系统,进行进一步的加工和分析。

开启binlog

要监听binlog,需要先开启binlog。在MySQL中,开启binlog需要在my.cnf文件中配置:

[mysqld]
log-bin=mysql-bin
binlog_format=ROW
  • log-bin=mysql-bin:表示开启日志文件,并指定文件的前缀是mysql-bin;
  • binlog_format=ROW:表示日志记录的格式为row的格式。

除了在my.cnf文件中配置,也可以直接在MySQL客户端中执行以下命令:

mysql> SET GLOBAL log_bin = ON;
mysql> SET GLOBAL binlog_format = 'ROW';

执行完以上命令后,MySQL会自动将binlog日志文件保存在数据目录下的mysql-bin目录中。

监听binlog

要监听MySQL的binlog,需要使用第三方工具。常用的有如下几种:

  • Canal:阿里云开源的MySQL数据库增量订阅&消费组件,基于binlog技术订阅&消费MySQL日志,实现MySQL到目标库的增量数据复制和增量数据订阅&消费。Canal提供了简单易用的API,并且对MySQL版本的兼容性较好。
  • Maxwell:Zillow开源的MySQL增量订阅工具,支持JSON和Avro两种格式输出,可以使用Kafka、Redis等中间件传递数据,SQL解析使用不同的parser扩展,如 Maxwell SQL Parser(支持MySQL 5.5到5.7)、OpenParser(需要MySQL 8.0+)和CustomParser(用户自定义)。
  • MySQL binlog解析器:基于Python和Java的开源解析器,可以解析MySQL的binlog,并将其转化成对应的语句。但是需要用户自己编写hook,实现相关功能。

下面以Canal为例,详细介绍监听binlog的步骤。

示例1:Canal监听MySQL binlog的步骤

  1. 下载Canal Server:从Canal的Github Releases中下载Canal Server对应版本。

  2. 修改Canal配置文件:进入Canal Server解压后的conf目录,复制一份example文件夹,改名为your-instance,并修改该文件夹下的instance.properties文件。根据实际情况修改相关配置。

    ```ini

    =============================================

    mysql主库的地址,可以和从库一样,如果不一样,需要在下面的slaveAddress中指定

    canal.instance.master.address=127.0.0.1:3306

    如果从库和主库的账号密码不一样,需要在此处指定

    canal.instance.dbUsername=root
    canal.instance.dbPassword=root

    需要监听的库名,可以有多个,使用逗号分隔

    canal.instance.filter.regex=...

    需要监听的MySQL数据的表名,可以有多个,使用逗号分隔

    canal.instance.filter.black.regex=test..*

    =============================================

    canal客户端连接的zk地址

    canal.zookeeper.hosts=127.0.0.1:2181

    canal客户端何时释放连接

    canal.zookeeper.session.timeout=6000
    canal.zookeeper.connection.timeout=6000
    canal.zookeeper.retry.retryInterval=3000
    canal.zookeeper.retry.count=-1
    ```

    注意:在第3、4行中指定了需要监听的库和表,如果只想监听某个库或某个表,需要修改该行对应的正则表达式。

  3. 添加MySQL数据源:进入解压后的bin目录,启动Canal Server。

    sh
    $ bin/startup.sh

  4. 监听binlog:连接上Canal Server后,在Canal Server的管理界面中,可以看到所有的MySQL数据库和表。若表的状态是RUNNING,则代表该表的binlog已经被成功监听。此时可以在Canal Server的数据目录~/data中查看监听到的binlog文件。

示例2:Maxwell监听MySQL binlog的步骤

  1. 下载Maxwell:从Maxwell的Github Releases中下载Maxwell对应版本。

  2. 修改Maxwell配置文件:修改Maxwell的配置文件config.properties

    ```ini

    RabbitMQ、Kafka等中间件相关配置

    kafka.bootstrap.servers: localhost:9092
    kafka.topic: maxwell

    MySQL 数据库相关配置

    用于连接和操作 MySQL 的用户名与密码。

    user: root
    password:

    被监控的MySql 数据库地址。

    host: 127.0.0.1

    被监控的 MySQL 数据库端口。

    port: 3306

    需要监听的MySQL数据的表名,可以有多个,使用逗号分隔

    includeDatabase:
    -

    输出物系列

    output: kafka
    maxwell.schema.parallelism: 5
    maxwell.producer.retries: 3
    maxwell.producer.batchSize: 100
    ```

  3. 监听binlog:启动Maxwell即可开始监听MySQL的binlog。可以设置日志输出类型,如Kafka等。

    sh
    bin/maxwell --config conf/config.properties | tee maxwell.log

监听成功后,binlog的相关操作就会被记录并保存下来。可以根据需要,封装自己的程序来处理这些binlog操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql数据库监听binlog的开启步骤 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 深入浅析.NET应用程序SQL注入

    深入浅析.NET应用程序SQL注入 什么是SQL注入 SQL注入是一种常见的网络攻击技术,利用不良开发实践或未经过足够的安全测试的软件漏洞,向应用程序输入恶意SQL代码,从而破坏、窃取或篡改数据库数据。SQL注入可以发生在任何使用SQL的应用程序中,包括.NET应用程序。 SQL注入攻击的分类 SQL注入攻击可以按照攻击类型进行分类,例如错误的输入验证、认证…

    database 2023年5月21日
    00
  • Java编程中void方法的学习教程

    Java编程中void方法的学习教程 介绍 在Java编程中,当需要执行一些操作却不需要返回值时,我们就可以使用void方法。本文将为大家介绍Java编程中void方法的学习教程,教大家如何定义和调用void方法,并提供一些具体的示例。 定义void方法 在Java中,定义void方法的格式为: public void methodName(paramete…

    database 2023年5月22日
    00
  • redis以服务模式开机启动

    第一步 修改redis为后台启动 vim /usr/redis/redis.conf #路径根据实际情况决定 # By default Redis does not run as a daemon. Use ‘yes’ if you need it. # Note that Redis will write a pid file in /var/run/re…

    Redis 2023年4月11日
    00
  • 关于避免MySQL替换逻辑SQL的坑爹操作详解

    关于避免MySQL替换逻辑SQL的坑爹操作详解 在使用MySQL等数据库时,我们可能会遇到替换逻辑SQL(Replace SQL)的操作。替换操作很常见,但如果不正确地使用,可能会导致意料之外的结果甚至是数据丢失。下面是避免MySQL替换逻辑SQL的坑爹操作的详解。 什么是替换逻辑SQL(Replace SQL)? 替换逻辑SQL(Replace SQL)是…

    database 2023年5月22日
    00
  • 小白的springboot之路(三)、集成mybatis与MySQL

    0、前言   mybatis属于半自动的ORM,相比hibernate这种全自动的ORM,兼顾了性能与易用;目前企业项目中,基本都是mybatis的天下;今天就来整合mybatis与MySQL; 1、整合   1.-1、添加依赖: <!– 集成mybatis –> <dependency> <groupId>org.m…

    MySQL 2023年4月13日
    00
  • SQL中日期与字符串互相转换操作实例

    下面是详细的SQL中日期与字符串互相转换操作实例攻略: 1. 日期转换成字符串 1.1. 使用CONVERT函数 使用CONVERT函数可以把日期转换成不同的字符串格式,具体格式可以使用不同的样式代码。举个例子,下面的SQL语句将把日期2022-01-01转换成YYYY-MM-DD HH:MI:SS格式的字符串: SELECT CONVERT(VARCHAR…

    database 2023年5月22日
    00
  • Mysql 执行一条语句的整个过程详细

    Mysql 执行一条语句的整个过程可以分为以下几个步骤: 客户端发送 SQL 语句到服务器,其中包括数据库名、表名、操作类型等信息。 服务器接收到 SQL 语句后,解析 SQL 语句,生成执行计划。 服务器根据执行计划执行 SQL 语句,包括查询、插入、更新、删除等操作。 执行完成后,服务器将结果返回给客户端。 下面分别以查询和插入两个例子来详细讲解整个过程…

    database 2023年5月21日
    00
  • Java中用Mybatis插入mysql报主键重复的解决方案

    下面是关于“Java中用Mybatis插入mysql报主键重复的解决方案”的完整攻略。 问题描述 在使用Mybatis向MySQL数据库中插入数据时,出现主键重复的情况,导致插入失败并抛出异常。这种情况通常发生在以下情况: 插入数据库的实体类中主键没有被正确设置。 执行插入操作时,因为其他原因,导致主键重复。 解决方案 方案一:使用MySQL的on dupl…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部