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、发出线程时的时间戳等等。
网友评论