mysqlbinlog- 处理二进制日志文件的实用工具 学习笔记
2014-07-30 11:42
751 查看
参考 MySQL 5.5官方简体中文参考手册完美版 8.6 节
调用:
shell> mysqlbinlog [option] log-files...
mysqlbinlog支持下面选项:
--help,-? 显示帮助消息并退出
--database=db_name, -d db_name 只列出该数据库的条目
--force-read, -f 使用该选项,如果mysqlbinlog读他不能识别的二进制日志事件,只会打印警告,忽略该事件并继续,没有该选择,如果mysqlbinlog读到此事件则会停止
--hexdump, -H 在注释中显示日志的十六进制转储。该输出可以帮助复制过程中的调试。
--host=host_name, -h host_name 获取给定主机上的MySQL服务器的二进制日志
--local-load=path, -l path 为指定目录中的LOAD DATE INFILE预处理本地临时文件
--offset=N, -o N 跳过前N个条目
--password[=password], -p[password] 当前连接服务器时使用的密码
--port=port_num,-P port_num 用于连接远程服务器的TCP/IP端口号
--position=N, -j N 不赞成使用,应使用--start-position
--protocol={TCP|SOCKET|PIPE| -position ???? 使用的连接协议
--read-from-remote-server, -R 从MySQL服务器读取二进制日志。如果不给出该选项,任何连接参数选项将被忽略。这些选项是:--host,--password,--port,--protocol,--socket,--user。
--result-file=name, -r name 将输出指向给定的文件
--short-from, -s 只显示日志中包含的语句,不显示其他信息
--socket=path, -S path 用于连接的套接字文件
--start-datetime=datetime 从二进制日志中第1个日期时间等于或晚于datetime参量的事件开始读取。datetime值相对于运行mysqlbinlog的机器上的本地时区。该值格式应符合DATETIME或TIMESTAMP数据类型。
eg: shell> mysqlbinlog --start-datetime="2005-12-25 11:11:56" binlog.000003
该选项可以帮助点对点恢复
--stop-datetime=datetime 从二进制日志中第1个日期时间 等于或晚于datetime参量的时间起停止读
--start-position=N 从二进制日志中的第一个位置等于N参量时的事件开始读
--stop-position=N 从二进制日志中第一个位置大于和等于N参量时的时间起停止读
--to-last-logs, -t 在MySQL服务器中请求的二进制日志的结尾处不停止,而是继续打印直到最后一个二进制日志的结尾。如果将输出发送给同一台MySQL服务器,会导致无限循环。该选项要求--read-from-remote-server
--disable-logs-bin,-D 禁用二进制日志。
--user=user_name, -u user_name 连接远程服务器使用MYSQL用户名
--version, -V 显示版本信息并退出
--var_name=value设置变量 open_file_limit, 指定要保留打开的文件描述符的数量
可以将mysqlbinlog的输出传到mysql客户端以执行包含在二进制日志中的语句。
shell> mysqlbinlog hostname-bin.000005 | mysql
如果需要先修改包含语句的日志,还可以将mysqlbinlog的输出重新执行一个文本文件。编辑好文件后将它输入到mysql程序并执行它包含的语句。
如果MySQL服务器上有多个要执行的二进制日志,安全的方法是在一个连接中处理他们,下面是不安全的例子:
shell> mysqlbinlog hostname-bin.000001 | mysql #DANGER!!
shell> mysqlbinlog hostname-bin.000002 | mysql #DANGER!!
使用与服务器的不同连接来处理二进制日志时,如果第1个日志文件包含一个CREATE TEMPORARY TABLE语 句,第2个日志包含一个使用该临时表的语句,则会造成问题。当第1个mysql进程结束时,服务器撤销临时 表。当第2个mysql进程想使用该表时,服务器报告 “不知道该表”。
要想避免此类问题,使用一个连接来执行想要处理的所有二进制日志中的内容。下面提供了一种方法:
shell> mysqlbinlog hostname-bin.000001 hostname-bin.000002 | mysql
另一个方法是:
shell> mysqlbinlog hostname-bin.000001 > /tmp/statements.sql
shell> mysqlbinlog hostname-bin.000002 >> /tmp/statements.sql
shell> mysql -e "source /tmp/statements.sql"
mysqlbinlog产生的输出可以不需要原数据文件即可重新生成一个LOAD DATA INFILE操作。mysqlbinlog将 数据复制到一个临时文件并写一个引用该文件的LOAD DATA LOCAL INFILE语句。由系统确定写入这些文件的 目录的默认位置。要想显式指定一个目录,使用--local-load选项。
因为mysqlbinlog可以将LOAD DATA INFILE语句转换为LOAD DATA LOCAL INFILE语句(也就是说,它添加 了LOCAL),用于处理语句的客户端和服务器必须配置为允许LOCAL操作。参见5.6.4节,“LOAD DATA LOCAL安 全问题”。
警告:为LOAD DATA LOCAL语句创建的临时文件不会自动删除,因为在实际执行完那些语句前需要它们。不再 需要语句日志后应自己删除临时文件。文件位于临时文件目录中,文件名类似original_file_name-#-#。
调用:
shell> mysqlbinlog [option] log-files...
mysqlbinlog支持下面选项:
--help,-? 显示帮助消息并退出
--database=db_name, -d db_name 只列出该数据库的条目
--force-read, -f 使用该选项,如果mysqlbinlog读他不能识别的二进制日志事件,只会打印警告,忽略该事件并继续,没有该选择,如果mysqlbinlog读到此事件则会停止
--hexdump, -H 在注释中显示日志的十六进制转储。该输出可以帮助复制过程中的调试。
--host=host_name, -h host_name 获取给定主机上的MySQL服务器的二进制日志
--local-load=path, -l path 为指定目录中的LOAD DATE INFILE预处理本地临时文件
--offset=N, -o N 跳过前N个条目
--password[=password], -p[password] 当前连接服务器时使用的密码
--port=port_num,-P port_num 用于连接远程服务器的TCP/IP端口号
--position=N, -j N 不赞成使用,应使用--start-position
--protocol={TCP|SOCKET|PIPE| -position ???? 使用的连接协议
--read-from-remote-server, -R 从MySQL服务器读取二进制日志。如果不给出该选项,任何连接参数选项将被忽略。这些选项是:--host,--password,--port,--protocol,--socket,--user。
--result-file=name, -r name 将输出指向给定的文件
--short-from, -s 只显示日志中包含的语句,不显示其他信息
--socket=path, -S path 用于连接的套接字文件
--start-datetime=datetime 从二进制日志中第1个日期时间等于或晚于datetime参量的事件开始读取。datetime值相对于运行mysqlbinlog的机器上的本地时区。该值格式应符合DATETIME或TIMESTAMP数据类型。
eg: shell> mysqlbinlog --start-datetime="2005-12-25 11:11:56" binlog.000003
该选项可以帮助点对点恢复
--stop-datetime=datetime 从二进制日志中第1个日期时间 等于或晚于datetime参量的时间起停止读
--start-position=N 从二进制日志中的第一个位置等于N参量时的事件开始读
--stop-position=N 从二进制日志中第一个位置大于和等于N参量时的时间起停止读
--to-last-logs, -t 在MySQL服务器中请求的二进制日志的结尾处不停止,而是继续打印直到最后一个二进制日志的结尾。如果将输出发送给同一台MySQL服务器,会导致无限循环。该选项要求--read-from-remote-server
--disable-logs-bin,-D 禁用二进制日志。
--user=user_name, -u user_name 连接远程服务器使用MYSQL用户名
--version, -V 显示版本信息并退出
--var_name=value设置变量 open_file_limit, 指定要保留打开的文件描述符的数量
可以将mysqlbinlog的输出传到mysql客户端以执行包含在二进制日志中的语句。
shell> mysqlbinlog hostname-bin.000005 | mysql
如果需要先修改包含语句的日志,还可以将mysqlbinlog的输出重新执行一个文本文件。编辑好文件后将它输入到mysql程序并执行它包含的语句。
如果MySQL服务器上有多个要执行的二进制日志,安全的方法是在一个连接中处理他们,下面是不安全的例子:
shell> mysqlbinlog hostname-bin.000001 | mysql #DANGER!!
shell> mysqlbinlog hostname-bin.000002 | mysql #DANGER!!
使用与服务器的不同连接来处理二进制日志时,如果第1个日志文件包含一个CREATE TEMPORARY TABLE语 句,第2个日志包含一个使用该临时表的语句,则会造成问题。当第1个mysql进程结束时,服务器撤销临时 表。当第2个mysql进程想使用该表时,服务器报告 “不知道该表”。
要想避免此类问题,使用一个连接来执行想要处理的所有二进制日志中的内容。下面提供了一种方法:
shell> mysqlbinlog hostname-bin.000001 hostname-bin.000002 | mysql
另一个方法是:
shell> mysqlbinlog hostname-bin.000001 > /tmp/statements.sql
shell> mysqlbinlog hostname-bin.000002 >> /tmp/statements.sql
shell> mysql -e "source /tmp/statements.sql"
mysqlbinlog产生的输出可以不需要原数据文件即可重新生成一个LOAD DATA INFILE操作。mysqlbinlog将 数据复制到一个临时文件并写一个引用该文件的LOAD DATA LOCAL INFILE语句。由系统确定写入这些文件的 目录的默认位置。要想显式指定一个目录,使用--local-load选项。
因为mysqlbinlog可以将LOAD DATA INFILE语句转换为LOAD DATA LOCAL INFILE语句(也就是说,它添加 了LOCAL),用于处理语句的客户端和服务器必须配置为允许LOCAL操作。参见5.6.4节,“LOAD DATA LOCAL安 全问题”。
警告:为LOAD DATA LOCAL语句创建的临时文件不会自动删除,因为在实际执行完那些语句前需要它们。不再 需要语句日志后应自己删除临时文件。文件位于临时文件目录中,文件名类似original_file_name-#-#。
相关文章推荐
- mysqlbinlog:用于处理二进制日志文件的实用工具
- 15,MySQL 8.0参考手册 4.6.8 mysqlbinlog - 处理二进制日志文件的实用程序
- mysqlbinlog:用于处理二进制日志文件的实用工具
- mysql dba系统学习(5)二进制日志binlog之一
- mysql dba系统学习(6)二进制日志binlog之二
- 修改 mysql-binlog 二进制日志文件至其它目录
- 使用mysqlbinlog工具通过日志文件恢复数据
- mysql 清理 binlog 二进制日志文件
- mysql 清理 binlog 二进制日志文件
- mysql 清理 binlog 二进制日志文件
- mysql dba系统学习(6)二进制日志binlog之二
- Thinking In Java学习笔记之文件读写实用工具
- MYSQL语句+索引+忘记密码+解决乱码+二进制日志 -学习笔记
- MySQL中二进制与重做日志文件的基本概念学习教程
- Mysql DBA 高级运维学习笔记-Mysql数据库中的日志文件
- MySQL5.6创建用户密码不再明文显示在binlog二进制日志文件里
- 【深度学习】【caffe实用工具3】笔记25 Windows下caffe中将图像数据集合转换为DB(LMDB/LEVELDB)文件格式之convert_imageset
- 基于binlog二进制日志的MySQL恢复笔记
- 深入浅出MySQL开发优化和管理维护学习笔记之MySQL日志文件
- 处理mysql的二进制日志文件mysql-bin