详情页标题前

阿里云RDS数据库云数据库RDS MySQL版远程获取Binlog日志并解析Binlog日志-云淘科技

详情页1

本文主要介绍阿里云云数据库RDS MySQL如何远程获取Binlog日志,并使用mysqlbinlog工具解析Binlog日志。

重要

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。

  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。

  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

操作步骤

您可以参考以下方法远程获取Binlog日志并解析Binlog日志。

获取Binlog日志

请根据实际情况选择合适的Binlog日志获取方法。

方法一:控制台下载日志文件(推荐)

通过RDS控制台直接下载日志文件。具体操作,请参见下载Binlog日志文件。

方法二:远程获取Binlog日志

  1. 通过客户端连接实例。具体操作,请参见连接实例。

  2. 执行以下SQL语句,查看并记录logs表中的Log_name值,该值为Binlog日志文件名,例如mysql-bin.xxx

    show binary logs;

    系统显示类似如下:

    mysql> show binary logs;
    +------------------+-----------+
    | Log_name         | File_size |
    +------------------+-----------+
    | mysql-bin.000022 |    406039 |
    | mysql-bin.000023 |     71497 |
    +------------------+-----------+
    2 rows in set (0.01 sec)

  3. 根据上一步获取的Binlog文件名,在命令行执行以下命令,远程获取Binlog日志并保存至本地。

    mysqlbinlog -u -p -h --read-from-remote-server --raw  > [$File_Name]

    参数解释如下:

    参数

    含义

    -u

    指定连接MySQL服务器的用户名。

    -p

    指定连接MySQL服务器的密码。

    -h

    云数据库RDS实例远程连接地址。如何获取,请参见查看内外网地址和端口。

    --read-from-remote-server

    mysqlbinlog将通过网络连接到指定的远程MySQL服务器来获取二进制日志文件内容。

    --raw

    mysqlbinlog命令以原始格式显示解析后的二进制日志内容。

    待解析的二进制日志文件的文件名。请根据步骤二结果填写。

    > [$File_Name]

    远程获取Binlog文件保存在本地的文件名。

  4. 执行以下命令,确认远程获取Binlog日志成功。

    more [$File_Name]

通过mysqlbinlog查看Binlog日志文件

在命令行执行以下命令,通过mysqlbinlog工具查看Binlog日志文件内容。

mysqlbinlog -vv --base64-output=decode-rows  | more

参数解释如下:

参数

含义

-vv

将输出详细信息,包括解析出的每个事件的详细内容。

--base64-output=decode-rows

使用base64编码打印二进制日志条目。

待解析的二进制日志文件的文件名。请将XXX替换为实际的文件名。

| more

通过管道将输出结果发送给more命令,以便分页显示输出内容。

说明

更多关于Binlog日志的解析,请参见MySQL官方网站。

系统显示类似如下:

[root@iZbp****** ~]# mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000022 | more
# The proper term is pseudo_replica_mode, but we use this compatibility alias
# to make the statement usable on server versions 8.0.24 and older.
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#230911  9:27:28 server id 26718053  end_log_pos 123 CRC32 0xa231cb44   Start: binlog v 4, server v 5.7.42-log created 230911  9:27:28
# at 123
#230911  9:27:28 server id 26718053  end_log_pos 194 CRC32 0x078b6dc1   Previous-GTIDs
# a63b4ed1-4c86-11ee-9029-00163e157053:1-27339
# at 194
#230911  9:27:32 server id 26718053  end_log_pos 259 CRC32 0x59b848c3   GTID    last_committed=0        sequence_number=1       rbr_only=yes    original_committed_ti
mestamp=0       immediate_commit_timestamp=0    transaction_length=0
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
# original_commit_timestamp=0 (1970-01-01 08:00:00.000000 CST)
# immediate_commit_timestamp=0 (1970-01-01 08:00:00.000000 CST)
/*!80001 SET @@session.original_commit_timestamp=0*//*!*/;
/*!80014 SET @@session.original_server_version=0*//*!*/;
/*!80014 SET @@session.immediate_server_version=0*//*!*/;
SET @@SESSION.GTID_NEXT= 'a63b4ed1-4c86-11ee-9029-00163e157053:27340'/*!*/;
# at 259
#230911  9:27:32 server id 26718053  end_log_pos 327 CRC32 0xc0dddaec   Query   thread_id=16849 exec_time=0     error_code=0
SET TIMESTAMP=1694395652/*!*/;
SET @@session.pseudo_thread_id=16849/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=2097152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN

常见问题

以下介绍了使用mysqlbinlog工具遇到的三种常见问题。

  • 若出现以下报错内容,请检查使用的mysqlbinlog工具版本。例如您使用3.3版本遇到以下错误,但是在3.4版本中已经修复此问题,3.4版本可以正常查看。因此出现此问题,您可以使用较高版本的mysqlbinlog工具查看。

    ERROR: Error in Log_event::read_log_event(): 'Sanity check failed', data_len: 151, event_type: 35
    ERROR: Could not read entry at offset 120: Error in log format or read error.
  • 通过mysqlbinlog工具查看Binlog日志文件内容时,没有使用--base64-output=decode-rows参数,导致输出的结果为未解析的内容。

    阿里云RDS数据库云数据库RDS MySQL版远程获取Binlog日志并解析Binlog日志-云淘科技

  • 若出现以下报错,请检查my.cnf配置文件中是否存在default-character-set=utf8mb4字段,如果存在,可以通过在命令中添加--no-defaults参数避免该问题。例如:mysqlbinlog --no-defaults -u[$User] -p[$Password] -h[$Host] --read-from-remote-server mysql-bin.XXX > [$File_Name]

    mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8mb4'

适用于

云数据库RDS MySQL

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/155523.html

(0)
上一篇 2023年12月9日 下午7:38
下一篇 2023年12月9日 下午7:39
详情页2

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。