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日

相关文章

  • 实例解析MySQL中的存储过程及存储过程的调用方法

    实例解析MySQL中的存储过程及存储过程的调用方法 什么是存储过程? 存储过程(Stored Procedure)是一种在MySQL数据库中存储可重用SQL语句和程序的方法。存储过程可以接受输入参数并返回输出参数,可以用来完成数据库操作、业务流程控制等。 在MySQL中,存储过程经常被用来提高系统的效率、优化业务流程、控制数据访问等。 存储过程的创建 要创建…

    database 2023年5月21日
    00
  • 在MAMP环境下安装MySQLdb的方法

    下面是在MAMP环境下安装MySQLdb的详细攻略: 步骤一:安装MAMP 下载MAMP软件安装包,可以在官网上下载,选择适合自己系统的版本。 双击安装包,完成MAMP的安装,启动MAMP即可。 步骤二:安装MySQLdb 使用终端进入MAMP的MySQL目录: cd /Applications/MAMP/Library/bin 安装MySQLdb: sud…

    database 2023年5月22日
    00
  • MySQL中datetime时间字段的四舍五入操作

    为了进行MySQL中datetime时间字段的四舍五入操作,需要使用到MySQL中的日期和时间函数。以下是完成此操作的完整攻略: 1. 确定需要进行四舍五入的时间字段 首先,确认需要进行四舍五入的时间字段的名称和类型。在MySQL中,使用DATETIME类型来存储日期和时间值。例如,我们假设需要对一个名为“orders”的表中的“order_date”字段执…

    database 2023年5月22日
    00
  • LNMP服务器环境配置 (linux+nginx+mysql+php)

    LNMP是一种常见的服务器环境配置,通过搭建Linux+Nginx+MySql+PHP的组合,可以搭建一个快速稳定的Web服务器。下面是LNMP服务器环境配置的完整攻略。 系统环境配置 安装Ubuntu操作系统,选择Server版本,建议使用最新版。 更新系统:sudo apt-get update && sudo apt-get upgra…

    database 2023年5月22日
    00
  • ADO.NET实用经验汇总

    ADO.NET实用经验汇总攻略 什么是ADO.NET ADO.NET是微软面向Web应用程序开发的一组数据访问服务,旨在为数据库访问提供优化的集合类,包括连接管理、命令执行、数据读取、数据适配等一系列功能,使得Web应用程序在处理关系型数据时更加高效和灵活。 ADO.NET的应用场景 ADO.NET适用于对关系型数据库进行数据操作的场景,如用户账户管理、订单…

    database 2023年5月21日
    00
  • MySQL计算两个日期相差的天数、月数、年数

    计算两个日期相差的天数、月数、年数是MySQL中经常需要实现的功能。我们可以使用DATEDIFF函数、TIMESTAMPDIFF函数和PERIOD_DIFF函数来计算这些差值。 使用DATEDIFF函数计算天数差值 我们可以使用DATEDIFF函数计算两个日期之间的天数差值。其语法如下: DATEDIFF(date1, date2) 其中,date1和dat…

    database 2023年5月22日
    00
  • SpringBoot使用AOP记录接口操作日志的方法

    下面是详细讲解“SpringBoot使用AOP记录接口操作日志的方法”的攻略。 1. 什么是AOP AOP全称为Aspect Oriented Programming,即面向切面编程。它是指通过预编译方式和运行期动态代理实现程序的功能模块化,从而达到可重复使用、灵活性和可维护性的一种编程技术。 2. 利用AOP记录接口操作日志 利用AOP记录接口操作日志的思…

    database 2023年5月21日
    00
  • 基于Failed to load ApplicationContext异常的解决思路

    当我们在使用Spring框架进行开发时,可能会遇到一种名为“Failed to load ApplicationContext”的异常,这通常意味着应用程序启动失败。本文将详细讲解关于“基于Failed to load ApplicationContext异常的解决思路”的完整攻略,帮助您快速解决这个问题。 异常起因 首先,我们需要明确一些常见的导致该异常出…

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