MySQL二进制日志
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL二进制日志相关的知识,希望对你有一定的参考价值。
二进制日志相关的服务器变量:
sql_log_bin = {ON|OFF} 是否记录二进制日志。启用二进制记录日志,则这项必须是ON
有时候,我们想执行的某些语句不要同步到slave上,可以执行set sql_log_bin=OFF;暂时关闭二进制记录功能。操作完后再启用二进制日志功能即可。
sql_log_off={ON|OFF} 用于控制是否禁止将一般查询日志类信息记录进查询日志文件。默认为OFF,表示不禁止记录功能。用户可以在会话级别修改此变量的值,但其必须具有SUPER权限。作用范围为全局和会话级别,属动态变量。
log_bin = mysql-bin 记录的文件位置。通常为数据所在的目录
binlog_format = {MIXED|row|statement} 二进制日志的记录格式
max_binlog_size = 1073741824 二进制日志文件的单文件上限 (单位:字节)
【超出则自动滚动日志。注意: (1) 到达最大值会自动滚动 (2) 文件达到上限时的大小未必为指定的精确值】
max_binlog_cache_size = 18446744073709547520
max_binlog_stmt_cache_size = 18446744073709547520 # 异步写入磁盘的日志文件大小
sync_binlog = 0|1 设定多久同步一次二进制日志至磁盘文件中,0表示不同步,任何正数值都表示对二进制每多少次写操作之后同步一次。当autocommit的值为1时,每条语句的执行都会引起二进制日志同步,否则,每个事务的提交会引起二进制日志同步。
二进制日志的查看命令:
mysqlbinlog
-j, --start-position=#:从指定的事件位置查看
--stop-position=#:只显示到指定的事件位置
--start-datetime="YYYY-MM-DD hh:mm:ss"
--stop-datetime="YYYY-MM-DD hh:mm:ss"
例如:
mysqlbinlog -uroot -h 172.16.20.71 -p passwd /data/mysql/mysql-bin.000008 [访问远程数据库]
mysqlbinlog --start-position=515 --stop-position=616 /data/mysql/mysql-bin.000008
mysqlbinlog -uroot -proot /data/nysql/mysql-bin.000060 --start-datetime="2016-04-11 00:00:01" --stop-datetime="2016-04-11 23:59:59"
mysqlbinlog -uroot -proot --database=Mobile /data/mysql/mysql-bin.000008 --start-datetime="xxx" --stop-datetime="xxx" # 仅列出Mobile的相关二进制日志
说明:如果在备份时候报错 “‘Sanity check failed‘, Could not read entry at offset 1009: Error in log format or read error.” 这种情况是由于mysqlbinlog的版本和MySQL服务器的版本不一样导致的,一般是因为安装过多个版本的MySQL系统将mysqlbinlog识别成了老的版本,因此只要用mysqlbinlog的全局路径即可。
二进制日志事件的格式:
# at 328
#151105 16:31:40 server id 1 end_log_pos 431 Query thread_id=1 exec_time=0 error_code=0
use `mydb`/*!*/;
SET TIMESTAMP=1446712300/*!*/;
CREATE TABLE tb1 (id int, name char (30) )
/*!*/;
事件发生的日期和时间:151105 16:31:40
事件发生的服务器标识:server id 1 【在双主模型上,可用来识别是否是自己曾发出去的日志,避免死循环】
事件的结束位置:end_log_pos 431
事件的类型:Query
事件发生时所在服务器执行此事件的线程的ID:thread_id=1
语句的时间戳与将其写入二进制文件中的时间差:exec_time=0
错误代码:error_code=0
事件内容:
GTID:Global Transaction ID; 全局事务ID
专属属性:GTID
清理二进制日志的方法:
> show binary logs;
> purge binary logs to ‘binlog.000030‘;
以上是关于MySQL二进制日志的主要内容,如果未能解决你的问题,请参考以下文章