美文网首页
MySQL 8.0.12 mysqlbinlog命令参数详解

MySQL 8.0.12 mysqlbinlog命令参数详解

作者: e652d1fb12eb | 来源:发表于2020-11-17 11:20 被阅读0次
    1.版本号不同:
    # /usr/local/mysql57/bin/mysqlbinlog --version
    /usr/local/mysql57/bin/mysqlbinlog Ver 3.4 for linux-glibc2.12 at x86_64
    # /usr/local/mysql80/bin/mysqlbinlog --version  
    /usr/local/mysql80/bin/mysqlbinlog  Ver 8.0.12 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
    2.新增参数:
    --server-public-key-path=name 
    --get-server-public-key
    --ssl-fips-mode=name
    --print-table-metadata
    新增TLS的版本支持TLSv1.2
    3.剔除参数:
    --secure-auth
    --ssl 使用参数替代--ssl-mode
    --ssl-verify-server-cert 使用参数--ssl-mode=VERIFY_IDENTITY替代
     
    4.mysqlbinlog参数说明:
    --base64-output=name        binlog输出语句的base64解码 分为三类:       
                    默认是值auto ,仅打印base64编码的需要的信息,如row-based 事件和事件的描述信息。
                    never 仅适用于不是row-based的事件
                    decode-rows  配合--verbose选项一起使用解码行事件到带注释的伪SQL语句
    --bind-address=name       要绑定的IP地址   
    --character-sets-dir=name  指定字符集的路径
    --set-charset=name         将“SET NAMES character_set”添加到输出中,用于改变binlog的字符集。
    -d, --database=name        列出数据库的名称(仅限binlog文件存储在本地)
    --rewrite-db=name          将binlog中的事件信息重定向到新的数据库
    --调试信息相关:
    -#, --debug[=#]           非调试版本,获取调试信息并退出
    --debug-check             非调试版本,获取调试信息并退出
    --debug-info              非调试版本,获取调试信息并退出
    --default-auth=name       默认使用的客户端认证插件
    -D, --disable-log-bin     禁用binlog日志,若开启--to-last-log并发送输出文件到相同的mysql server。这种方式避免无限循环。
      在规避数据库奔溃恢复数据的时候有用。注意:需要super权限来使用此选项。
    -F, --force-if-open   强制开启binlog,若binlog非正常关闭,默认是on可使用--skip-force-if-open关闭。
    -f, --force-read      强制读取未知的binlog事件
    -H, --hexdump         使用十六进制和ASCII码转储输出的信息
    -h, --host=name       获取binlog的服务器IP地址或者域名
    -i, --idempotent      通知服务器使用幂等模式应用行事件
    -l, --local-load=name  准备LOAD DATA INFILE的本地临时文件指定目录。
     -o, --offset=#       跳过前N个条目
      -p, --password[=name]  连接远程服务器的密码
    --plugin-dir=name      客户端插件的目录。
    -P, --port=#           用于连接的端口,0表示默认值。端口使用的优先级:my.cnf,$ MYSQL_TCP_PORT,/etc/services,内置默认值(3306)
    --protocol=name       用于连接的协议(tcp,socket,pipe,memory)
    -R, --read-from-remote-server 从MySQL远程服务器读取二进制日志,是read-from-remote-master = BINLOG-DUMP-NON-GTIDS的别名。
    --read-from-remote-master=name  
    --raw               配合参数-R一起使用,输出原始的binlog数据而不是SQL语句
    -r, --result-file=name  输出指定的文件,和--row一起使用,此时是数据文件的前缀。
    -t, --to-last-log   配合-R一起使用
    --server-id=#  仅提取服务器创建的binlog条目
                          给定的id。
    --server-id-bits=# 设置server-id中的有效位数。
     
    -s, --short-form   仅适用于常规查询,没有额外的信息和row-based事件信息。仅用于测试,不使用于生产环境。
    如果你想抑制base64-output,考虑使用--base64-output = never代替。
    -S, --socket=name   使用socket文件连接。
    ---SSL相关的参数:
    --server-public-key-path=name PEM格式的RSA 秘钥
    --get-server-public-key       服务器的公钥
    --ssl-mode=name              SSL连接的模式
    --ssl-ca=name                PEM格式的CA文件
    --ssl-capath=name           CA路径
    --ssl-cert=name             PEM格式的X509证书
    --ssl-cipher=name           使用的SSL密码
    --ssl-key=name              PEM格式的X509密钥
    

    例子:

    • 查看日志
        # mysqlbinlog mysql-bin.407
    
    • 根据position从20-2000查找resource库相关记录,并输出到指定文件:
        # mysqlbinlog --start-position="20" --stop-position="2000" --database=resource mysql-bin.407 --result-file=result.sql
    
    • 查找并导入数据库:
        # mysqlbinlog --start-position="20" --stop-position="2000" --database=resource mysql-bin.407 | mysql -u root
    
    • 还可以根据时间来查找记录:
        # mysqlbinlog --start-datetime="2012-09-20 8:10:00" --stop-datetim="2012-09-25 07:30:00" mysql-bin.407 --result-file=result.sql
    

    ……

    • mysqlbinlog 导出数据,转换编码后导入

    原来的数据编码为gb2312,将其转换成 utf8 编码,并插入

    (1)从position=387426452开始导出resource数据库信息

        #/usr/local/mysql/bin/mysqlbinlog --position=387426452 --set-charset=utf8 --database=resource mysql-bin.407 --result-file=result_resource.sql
    

    (2)转换编码为utf8

        #iconv -t utf-8 -f gb2312 -c result_resource.sql > new_result_resource.sql_utf8.sql
    

    (3)导入数据库
    在mysql会话中需要set names utf8;

        mysql> set names utf8;
        mysql> source /tmp/new_result_resource.sql_utf8.sql
    --ssl-crl=name             证书撤销列表
    --ssl-crlpath=name         证书撤销列表的路径。
    --tls-version=name         TLS使用的版本,可用的版本: TLSv1, TLSv1.1,TLSv1.2
    --ssl-fips-mode=name       要使用的SSL FIPS模式,允许的值为:OFF,ON,STRICT
    
    • 常用选项:
    --start-datetime=name  binlog文件读取的起始时间点,可接受datetime和timestamp类型,格式2004-12-25 11:25:56
    --stop-datetime=name   binlog文件的结束的时间点。
     
    -j, --start-position=# 读取binlog文件的位置信息
    --stop-position=#      binlog文件的结束的位置信息
     
    --stop-never
    --stop-never-slave-server-id=# 
    --connection-server-id=# 
    --参数相关:
    --binlog-row-event-max-size=# 指定基于行的binlog的大小,改值必须是256的倍数。
    -c, --verify-binlog-checksum  验证binlog的事件信息
    --open-files-limit=# 打开文件的限制,默认是操作系统的限制。
    -V, --version  mysqlbinlog的版本信息
     
     
    -v, --verbose 重新构建伪SQL语句的行信息输出,-v -v会增加列类型的注释信息。
    -u, --user=name  连接远程服务器的用户名。
     
    --GTID相关:
    --skip-gtids  跳过GTID
    --include-gtids=name 打印时间提供的GTID
    --exclude-gtids=name 打印所有事件提供的GTID
    --print-table-metadata  打印存储于Table_map_log_event的metadata信息。
    

    转自https://blog.csdn.net/orangleliu/article/details/54631289

    常用命令列举:

    binlog 通过记录二进制文件的方式备份数据,可以通过该二进制文件将数据恢复到某一时段或某一操作点。

    1. 使用mysqlbinlog工具恢复数据

    • mysqlbinlog日志如何开启?

    在my.cnf文件中加一行。

        # vi /etc/my.cnf
    
        [mysqld]
        log-bin=mysqlbin-log #添加这一行就可以了,=号后面自己定义日志文件名,默认该文件是存储在datadir中。
    
    • mysqlbinlog用法详细说明

    服务器生成的二进制日志文件要使用mysqlbinlog实用工具来读取。

    # mysqlbinlog [options] log-files...
    

    例如,要想显示二进制日志mysql-bin.407的内容,使用下面的命令:

    # mysqlbinlog mysql-bin.407
    

    输出包括 mysql-bin.407 中包含的所有语句以及其它信息,例如每个语句花费的时间、客户发出的线程ID、发出线程时的时间戳等等。

    相关文章

      网友评论

          本文标题:MySQL 8.0.12 mysqlbinlog命令参数详解

          本文链接:https://www.haomeiwen.com/subject/lblxiktx.html