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';










本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1783343,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 存储 关系型数据库
MySQL中的二进制日志(binlog)与中继日志(Relay log)
MySQL中的二进制日志(binlog)与中继日志(Relay log)
76 0
|
4月前
|
存储 缓存 固态存储
|
4月前
|
SQL 存储 监控
压缩MySQL二进制日志(译文)
在一个繁忙的MySQL服务器上,二进制日志最终可能会成为使用磁盘空间的最大占用者之一。这意味着更高的I/O,更大的备份集(您正在备份二进制日志,对吗?)
|
6月前
|
存储 安全 关系型数据库
【MySQL技术内幕】8.4-二进制日志备份与恢复
【MySQL技术内幕】8.4-二进制日志备份与恢复
50 0
|
7月前
|
SQL 缓存 算法
为什么MySQL的Binlog日志是一种二进制日志?底层原理是什么?
为什么MySQL的Binlog日志是一种二进制日志?底层原理是什么?
124 0
|
关系型数据库 MySQL
深入解读Mysql 二进制日志
深入解读Mysql 二进制日志
87 0
深入解读Mysql 二进制日志
|
SQL 存储 关系型数据库
mysql之备份和导入数据(包括二进制日志)
mysql之备份和导入数据(包括二进制日志)
177 0
|
关系型数据库 MySQL 数据库
|
MySQL 关系型数据库 数据库
推荐文章
更多