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中的集合操作 MySQL可以进行各种集合操作,如并集、交集、差集等。这些集合操作是通过使用关键字UNION, INTERSECT, EXCEPT等来实现的。以下是集合操作的详细介绍: 一、UNION操作 使用UNION操作可以将两个或多个SELECT语句返回的结果集合并为一个结果集。UNION操作的基本语法如下: SELECT column…

    database 2023年5月22日
    00
  • MySql安装步骤图文教程及中文乱码的解决方案

    下面是关于“MySql安装步骤图文教程及中文乱码的解决方案”的完整攻略,包含以下内容: 一、下载MySql安装包 访问MySql官网:https://www.mysql.com/ 进入下载页面:https://dev.mysql.com/downloads/mysql/ 选择合适的安装包进行下载,建议选择社区版(Community Edition) 示例说明…

    database 2023年5月22日
    00
  • 在C#中使用Redis

    一、下载ServiceStack.Redis   VS2015版本 二、将解压后的文件中下面四个dll引用到项目中 三、用C#对redis来进行简单的读取和写入操作 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Servi…

    Redis 2023年4月12日
    00
  • RDBMS和OODBMS的对比区别

    RDBMS和OODBMS都是数据库管理系统的一种,但两者之间有很多不同之处。 RDBMS(关系型数据库管理系统) RDBMS是一个基于关系模型的数据库管理系统,通常使用SQL(结构化查询语言)来管理和处理数据。以下是RDBMS的一些主要特点: 数据的存储方式:数据以表格的形式存储,每个表格都有一个唯一的表头,用于区分不同的表格。数据的行称为记录,每个记录都以…

    database 2023年3月27日
    00
  • CentOS mysql安装系统方法

    以下是关于CentOS mysql安装系统方法的完整攻略: 准备工作 在开始安装mysql之前,我们需要先安装一些必要的软件依赖,以确保mysql能够正常运行。 $ sudo yum install wget $ sudo yum install curl $ sudo yum install gcc $ sudo yum install gcc-c++ $…

    database 2023年5月22日
    00
  • sqlserver 禁用触发器和启用触发器的语句

    禁用SQL Server触发器可以暂时停止触发器的运行,以便执行某些操作而不触发触发器。启用触发器则可以重新启用先前禁用的触发器。 下面是禁用和启用SQL Server触发器的语法: 禁用触发器 DISABLE TRIGGER trigger_name ON table_name 其中,trigger_name为将要禁用的触发器名称,table_name为要…

    database 2023年5月21日
    00
  • freetds简介、安装、配置及使用介绍

    当使用PHP或Python等编程语言连接到Microsoft SQL Server时,需要使用数据库驱动程序来实现连接。freetds是一款数据库驱动管理器,可以用于连接Microsoft SQL Server、Sybase等数据库。 freetds简介 freetds是一个免费的开源软件,它的作用是提供一个自由、开放的DB-Library/CT-Libra…

    database 2023年5月22日
    00
  • linux AS3 oracle9i 安装指南

    Linux AS3 Oracle 9i 安装指南 本文旨在提供 Linux AS3 操作系统上 Oracle 9i 数据库的安装过程,并提供两个安装示例说明。 系统要求 Linux AS3 操作系统 256MB 内存及以上 2GB 或以上磁盘空间 安装前准备工作 在进行 Oracle 9i 数据库的安装之前,需要完成以下准备工作: 安装必要的软件包 使用以下…

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