MySQL binlog 详解
MySQL5.7 默认是不开启 binlog 日志的,具体的开启方式在开启的笔记中查看。 binlog 开启成功之后,binlog 文件的位置可以在 my.inf 配置文件中查看。也可以在 mysql 的命令行中查看。命令行查看代码如下:
show variables like '%log_bin%';
我们也可以看一下当前 mysql 的 binlog 的情况
show master status
视频链接:http://www.roncoo.com/course/view/658088f6e77541f5835b61800314083e
每当我们重启一次,会自动生成一个 binlog 文件,我们重启完毕之后再来执行同样的命令
存放 binlog 的目录下也多个了这么一个文件。
当然,我们也可以手动的来刷新 binlog 文件,通过 flush logs,同样会新创建一个 binlog 文件
如果我们想把这些文件全部清空,可以使用 reset master 来处理
下面我来看针对单个文件的操作,首先我们想看一下文件的内容找到 binlog 的目录,比如我们要看
mysql-bin-0001 vi mysql-bin-000001
我们看到的一堆乱码。我们知道这是一堆的二进制文件,所以以文本的方式打开二进制文件一定是有问题的,那么我们该如何查看这个文件的内容呢?
mysql 给我们提供了一个用于查看 binlog 日志的工具,叫做 mysqlbinlog
这个文件比较长,一次打开看不完怎么办呢,这里可以使用 linux 的管道,这里就不详细的说了,可以自己去查找关于 linux 的一些知识。
注意到上面的截图中有一个 position 字段,这个字段的值为 154,这个表示的就是 binlog 当前的位置。我们每次执行 dml 操作,position 都会改变。比如我们先来创建一个数据 test
在创建之前我们可以清一下 binlog 日志方便我们查看,可以使用 reset master。在生产环境中,这个操作是非常危险的,那么我们可以使用 flush logs 来处理,生成一个新的 binlog 文件。不管采用哪种方式,我们在测试的环境中,只要有一个新的 binlog 文件就可以了。生成了新的 binlog 文件之后,我们可以通过 show master status 来查看状态
下面我们来执行一个 dml 语句,比如我们要创建一个 test 数据库 create database test;
然后我们来查看创建之后的状态,如下,我们发现 position 从 154 变成了 313,也就是说我们的操作是在 154 到 313 之间,然后我们再来看 binlog 的内容。
我们截取 154 到 313 之间的 binlog 的内容如下:
# at 154 #170708 9:24:02 server id 12345 end_log_pos 219 CRC32 0x30763ffe Anonymous_GTID last_committed=0 sequence_number=1 SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/; # at 219 #170708 9:24:02 server id 12345 end_log_pos 313 CRC32 0x4d0140b3 Query thread_id=5 exec_time=0 error_code=0 SET TIMESTAMP=1499477042/*!*/; SET @@session.pseudo_thread_id=5/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/; SET @@session.sql_mode=1436549152/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C utf8 *//*!*/; SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.c ollation_server=8/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; create database test /*!*/; SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/; DELIMITER ; # End of log file /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
我们可以看到,mysql 做了很多的隐含的操作,然后加粗的部分就是我们所执行的操作。
下面我们来简单总结一下关于 binlog:
1.binlog 文件会随服务的启动创建一个新文件
2.通过 flush logs 可以手动刷新日志,生成一个新的 binlog 文件
3.通过 show master status 可以查看 binlog 的状态
4.通过 reset master 可以清空 binlog 日志文件
5.通过 mysqlbinlog 工具可以查看 binlog 日志的内容
6.通过执行 dml,mysql 会自动记录 binlog
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
虚拟与真实--vsphere篇ESXI配置与连接
样例项目实战请参考视频:http://www.roncoo.com/course/view/ec2dc65e93da408ab70cf9ead80777f8 关注微信:
- 下一篇
使用镜像仓库托管自己构建的Docker镜像
自己构建的Docker镜像,默认存储在本机中,Docker有提供某些方式分享这些镜像,但不是主流的镜像分享方式,也有违于开源社区的共享精神。 本文介绍如何使用GitHub托管Dockerfile;使用DockerHub关联GitHub托管的Dockerfile,进行自动化构建,并托管构建后的镜像。 GitHub地址:https://github.com。 DockerHub地址:https://hub.docker.com。 准备工作 注册GitHub和DockerHub。GitHub主要是用于托管源代码(即托管Dockerfile文件);DockerHub主要用于构建和托管镜像。 两个平台都是免费的,但是因为服务器在国外,访问不是很稳定,原因大家都懂。 使用GitHub托管Dockerfile 参考本人的一个Tomcat Dockerfile仓库:https://github.com/dfengwei/docker-tomcat 主要步骤: 新建一个仓库(New repository),例如命名为:docker-tomcat。 通过git提交(或直接通过界面编辑)源码,目录结构可以参...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果