博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 的 binlog 文件解析
阅读量:6896 次
发布时间:2019-06-27

本文共 12376 字,大约阅读时间需要 41 分钟。

  hot3.png

主要使用命令为:

$ bin/mysqlbinlog 

具体使用方法,直接参数  $ bin/mysqlbinglog --help 输出信息。

 

我在操作的时候,主要是针对某个  mysql-bin.000006 文件转 SQL 数据!命令为:

[mysql@ryan mysql]# bin/mysqlbinlog --no-defaults -v --base64-output=DECODE-ROWS binlog_data/mysql-bin.000006 > ./my-sql.sql

 

 

-----------------------------

遇到的问题:

1. 执行  bin/mysqlbinlog 命令,报错如下:

[mysql@ryan mysql]# bin/mysqlbinlogmysqlbinlog: [ERROR] unknown variable 'default_character_set=utf8mb4'[mysql@ryan mysql]#

解决办法:

在执行命令的时候增加参数 :  --no-defaults, 使用如下命令:

[mysql@ryan mysql]# bin/mysqlbinlog --no-defaultsbin/mysqlbinlog Ver 3.4 for linux-glibc2.12 at x86_64Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Dumps a MySQL binary log in a format usable for viewing or for piping tothe mysql command line client.Usage: bin/mysqlbinlog [options] log-files  -?, --help          Display this help and exit.  --base64-output=name                       Determine when the output statements should be                      base64-encoded BINLOG statements: 'never' disables it and                      works only for binlogs without row-based events;                      'decode-rows' decodes row events into commented                      pseudo-SQL statements if the --verbose option is also                      given; 'auto' prints base64 only when necessary (i.e.,                      for row-based events and format description events).  If                      no --base64-output[=name] option is given at all, the                      default is 'auto'.  --bind-address=name IP address to bind to.  --character-sets-dir=name                       Directory for character set files.  -d, --database=name List entries for just this database (local log only).  --rewrite-db=name   Rewrite the row event to point so that it can be applied                      to a new database  -#, --debug[=#]     This is a non-debug version. Catch this and exit.  --debug-check       This is a non-debug version. Catch this and exit.  --debug-info        This is a non-debug version. Catch this and exit.  --default-auth=name Default authentication client-side plugin to use.  -D, --disable-log-bin                       Disable binary log. This is useful, if you enabled                      --to-last-log and are sending the output to the same                      MySQL server. This way you could avoid an endless loop.                      You would also like to use it when restoring after a                      crash to avoid duplication of the statements you already                      have. NOTE: you will need a SUPER privilege to use this                      option.  -F, --force-if-open Force if binlog was not closed properly.                      (Defaults to on; use --skip-force-if-open to disable.)  -f, --force-read    Force reading unknown binlog events.  -H, --hexdump       Augment output with hexadecimal and ASCII event dump.  -h, --host=name     Get the binlog from server.  -i, --idempotent    Notify the server to use idempotent mode before applying                      Row Events  -l, --local-load=name                       Prepare local temporary files for LOAD DATA INFILE in the                      specified directory.  -o, --offset=#      Skip the first N entries.  -p, --password[=name]                       Password to connect to remote server.  --plugin-dir=name   Directory for client-side plugins.  -P, --port=#        Port number to use for connection or 0 for default to, in                      order of preference, my.cnf, $MYSQL_TCP_PORT,                      /etc/services, built-in default (3306).  --protocol=name     The protocol to use for connection (tcp, socket, pipe,                      memory).  -R, --read-from-remote-server                       Read binary logs from a MySQL server. This is an alias                      for read-from-remote-master=BINLOG-DUMP-NON-GTIDS.  --read-from-remote-master=name                       Read binary logs from a MySQL server through the                      COM_BINLOG_DUMP or COM_BINLOG_DUMP_GTID commands by                      setting the option to either BINLOG-DUMP-NON-GTIDS or                      BINLOG-DUMP-GTIDS, respectively. If                      --read-from-remote-master=BINLOG-DUMP-GTIDS is combined                      with --exclude-gtids, transactions can be filtered out on                      the master avoiding unnecessary network traffic.  --raw               Requires -R. Output raw binlog data instead of SQL                      statements, output is to log files.  -r, --result-file=name                       Direct output to a given file. With --raw this is a                      prefix for the file names.  --secure-auth       Refuse client connecting to server if it uses old                      (pre-4.1.1) protocol. Deprecated. Always TRUE  --server-id=#       Extract only binlog entries created by the server having                      the given id.  --server-id-bits=#  Set number of significant bits in server-id  --set-charset=name  Add 'SET NAMES character_set' to the output.  -s, --short-form    Just show regular queries: no extra info and no row-based                      events. This is for testing only, and should not be used                      in production systems. If you want to suppress                      base64-output, consider using --base64-output=never                      instead.  -S, --socket=name   The socket file to use for connection.  --ssl-mode=name     SSL connection mode.  --ssl               Deprecated. Use --ssl-mode instead.                      (Defaults to on; use --skip-ssl to disable.)  --ssl-verify-server-cert                       Deprecated. Use --ssl-mode=VERIFY_IDENTITY instead.  --ssl-ca=name       CA file in PEM format.  --ssl-capath=name   CA directory.  --ssl-cert=name     X509 cert in PEM format.  --ssl-cipher=name   SSL cipher to use.  --ssl-key=name      X509 key in PEM format.  --ssl-crl=name      Certificate revocation list.  --ssl-crlpath=name  Certificate revocation list path.  --tls-version=name  TLS version to use, permitted values are: TLSv1, TLSv1.1  --start-datetime=name                       Start reading the binlog at first event having a datetime                      equal or posterior to the argument; the argument must be                      a date and time in the local time zone, in any format                      accepted by the MySQL server for DATETIME and TIMESTAMP                      types, for example: 2004-12-25 11:25:56 (you should                      probably use quotes for your shell to set it properly).  -j, --start-position=#                       Start reading the binlog at position N. Applies to the                      first binlog passed on the command line.  --stop-datetime=name                       Stop reading the binlog at first event having a datetime                      equal or posterior to the argument; the argument must be                      a date and time in the local time zone, in any format                      accepted by the MySQL server for DATETIME and TIMESTAMP                      types, for example: 2004-12-25 11:25:56 (you should                      probably use quotes for your shell to set it properly).  --stop-never        Wait for more data from the server instead of stopping at                      the end of the last log. Implicitly sets --to-last-log                      but instead of stopping at the end of the last log it                      continues to wait till the server disconnects.  --stop-never-slave-server-id=#                       The slave server_id used for --read-from-remote-server                      --stop-never. This option cannot be used together with                      connection-server-id.  --connection-server-id=#                       The slave server_id used for --read-from-remote-server.                      This option cannot be used together with                      stop-never-slave-server-id.  --stop-position=#   Stop reading the binlog at position N. Applies to the                      last binlog passed on the command line.  -t, --to-last-log   Requires -R. Will not stop at the end of the requested                      binlog but rather continue printing until the end of the                      last binlog of the MySQL server. If you send the output                      to the same MySQL server, that may lead to an endless                      loop.  -u, --user=name     Connect to the remote server as username.  -v, --verbose       Reconstruct pseudo-SQL statements out of row events. -v                      -v adds comments on column data types.  -V, --version       Print version and exit.  --open-files-limit=#                       Used to reserve file descriptors for use by this program.  -c, --verify-binlog-checksum                       Verify checksum binlog events.  --binlog-row-event-max-size=#                       The maximum size of a row-based binary log event in                      bytes. Rows will be grouped into events smaller than this                      size if possible. This value must be a multiple of 256.  --skip-gtids        Do not preserve Global Transaction Identifiers; instead                      make the server execute the transactions as if they were                      new.  --include-gtids=name                       Print events whose Global Transaction Identifiers were                      provided.  --exclude-gtids=name                       Print all events but those whose Global Transaction                      Identifiers were provided.Variables (--variable-name=value)and boolean options {FALSE|TRUE}  Value (after reading options)--------------------------------- ----------------------------------------base64-output                     (No default value)bind-address                      (No default value)character-sets-dir                (No default value)database                          (No default value)rewrite-db                        (No default value)default-auth                      (No default value)disable-log-bin                   FALSEforce-if-open                     TRUEforce-read                        FALSEhexdump                           FALSEhost                              (No default value)idempotent                        FALSElocal-load                        (No default value)offset                            0plugin-dir                        (No default value)port                              0read-from-remote-server           FALSEread-from-remote-master           (No default value)raw                               FALSEresult-file                       (No default value)secure-auth                       TRUEserver-id                         0server-id-bits                    32set-charset                       (No default value)short-form                        FALSEsocket                            (No default value)ssl                               TRUEssl-verify-server-cert            FALSEssl-ca                            (No default value)ssl-capath                        (No default value)ssl-cert                          (No default value)ssl-cipher                        (No default value)ssl-key                           (No default value)ssl-crl                           (No default value)ssl-crlpath                       (No default value)tls-version                       (No default value)start-datetime                    (No default value)start-position                    4stop-datetime                     (No default value)stop-never                        FALSEstop-never-slave-server-id        -1connection-server-id              -1stop-position                     18446744073709551615to-last-log                       FALSEuser                              (No default value)open-files-limit                  64verify-binlog-checksum            FALSEbinlog-row-event-max-size         4294967040skip-gtids                        FALSEinclude-gtids                     (No default value)exclude-gtids                     (No default value)[mysql@ryan mysql]#

 

2. mysqlbinlog 转出来的 SQL 是进过 base64 的,无法直接查看到SQL 语句。故需要进行转换!再多增加一个如下参数,即可:

--base64-output=DECODE-ROWS -v

 

 

转载于:https://my.oschina.net/Rayn/blog/2221362

你可能感兴趣的文章
MySQL锁系列(七)之 锁算法详解
查看>>
webOS 更名 LuneOS,新版本名为 Affogato
查看>>
《UNIX环境高级编程(第3版)》——导读
查看>>
11_Eclipse中演示Git版本的创建,历史版本的修改,创建分支,合并历史版本和当前版本...
查看>>
《实施Cisco统一通信管理器(CIPT1)》一1.2 CUCM概述
查看>>
《容器技术系列》一1.1 引言
查看>>
编程语言:变革创业思维的工具
查看>>
第一个libgdx程序--仿别踩白块
查看>>
一个开源项目维护者的笔记 — 为什么我关闭 PRs
查看>>
技术人员要失业?未来80% IT 工作将自动化
查看>>
Apache Spark机器学习.1.4 MLlib
查看>>
腾讯Android自动化测试实战3.1.1 什么是Robotium
查看>>
《Wireshark网络分析的艺术》—被误解的TCP
查看>>
《Linux防火墙(第4版)》——1.4 地址解析协议(ARP)
查看>>
《乐在C语言》一1.5 关键词
查看>>
Oracle内核技术揭密
查看>>
《软件工程(第4版?修订版)》—第1章1.3节什么是好的软件
查看>>
《PHP、MySQL和Apache入门经典(第5版)》一一2.7 基本安全规则
查看>>
《无线网络:理解和应对互联网环境下网络互连所带来的挑战》——2.5 3GPP2...
查看>>
《深入理解JavaScript》——2.6 JavaScript是广泛使用的吗
查看>>