本文主要介绍MySQL的binlog日志用法的详细讲解,通过示例代码详细介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
Binlog是一个二进制日志文件,记录了MySQL的所有DML操作。通过binlog日志,可以做数据恢复、增量备份、主从复制、主从复制等等。开发者可能不太关注binlog,但是对于运营商或者架构师来说,它是非常重要的。
这个版本的MySQL 5.7默认不打开binlog日志。具体打开方式请查看https://www.jb51.net/article/207953.htm。
成功打开binlog后,可以在my.inf配置文件中查看binlog文件的位置。也可以在MySQL的命令行中查看。命令行视图代码如下
显示类似“%log_bin%”的变量;
我们也可以看看MySQL的binlog的现状。
显示主机状态;
从上图可以看出,目前只有一个binlog文件,文件名为:mysql-bin.000001
每当我们重启一次,会自动生成一个binlog文件
,重启后我们会执行同样的命令。内容如下:在存储binlog的目录中也有这样一个文件。
当然,我们也可以手动刷新binlog文件。到
flush logs
,还将创建一个新的binlog文件。实际上,当服务器重新启动时,也会调用刷新日志操作。如果我们想清除所有这些文件,我们可以使用
reset master
来处理它们。让我来看看单个文件的操作。首先,我们想看看文件的内容。
找到binlog的目录,比如我们要看mysql-bin.000001
vi mysql-bin.000001
我们看到的一堆乱码。我们知道这是一堆二进制文件,所以把二进制文件作为文本打开肯定有问题。那么我们如何查看这个文件的内容呢?
Mysql为我们提供了一个查看binlog日志的工具,叫做
mysqlbinlog
。mysqlbinlog myql-bin.000001
这个文件相当长。一打开就看不完怎么办?这里可以用linux管道,这里就不赘述了。我可以自己找一些关于linux的知识。
注意,上面的截图中有一个位置字段,类似于指针。目前,该字段的值为154,表示binlog的当前位置。每次我们执行dml操作时,位置都会改变。例如,让我们首先创建一个数据测试。
在创建之前,我们可以清除binlog日志以便查看它,并且可以使用reset master。在生产环境中,这个操作是非常危险的,所以我们可以使用刷新日志来处理它,并生成一个新的binlog文件。无论哪种方式,我们在测试环境中只需要一个新的binlog文件。生成新的binlog文件后,我们可以通过show master status来检查状态。
让我们执行一个dml语句,例如,我们想要创建一个测试数据库。
创建数据库测试;
然后我们再来看创作后的状态。如下,我们发现仓位从154变成了313,也就是说我们的操作在154和313之间。然后我们再来看binlog的内容。
我们截取binlog在154和313之间的内容如下:
#第154页
#170708 9:24:02服务器id 12345 end _ log _ pos 219 CRC320x 30763 FFE Anonymous _ GTID last _ committed=0 sequence _ number=1
设置@@SESSION。GTID_NEXT=匿名/*!*/;
#第219页
#170708 9:24:02服务器id 12345 end _ log _ pos 313 CRC320x4d 0140 B3查询thread _ id=5 exec _ time=0 error _ code=0
设置时间戳=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.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @ @ session . collation _ database=DEFAULT/*!*/;
创建数据库测试
/*!*/;
设置@@SESSION。GTID_NEXT=AUTOMATIC /*由mysqlbinlog *//*添加!*/;
分隔符;
#日志文件结尾
/*!50003 SET COMPLETION _ TYPE=@ OLD _ COMPLETION _ TYPE */;
/*!50530设置@ @会话。伪_从_模式=0 */;
我们可以看到mysql做了很多隐式操作,细心的朋友会看到这句话:创建数据库测试;
下面我们来简单总结一下关于binlog:
1.binlog file将在服务启动时创建一个新文件。
2.您可以通过刷新日志来手动刷新日志,以生成新的binlog文件。
3.您可以通过显示主机状态来查看binlog的状态。
4.您可以通过重置主机清除binlog日志文件。
5.可以通过mysqlbinlog工具查看binlog日志的内容。
6.通过执行dml,mysql会自动记录binlog。
关于MySQL binlog日志用法的详细解释,本文到此为止。有关MySQL binlog日志使用的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!