MySQL的日志基础知识及基本操作学习教程

2019-01-04 19:38:27于丽

二进制日志定义方式:

其一、log_bin可以直接定义为文件路径,也可以为ON|OFF。

其二、通过编辑my.cnf中的log-bin选项可以开启二进制日志;形式如下:

[root@stu18 ~]#my.cnf [mysqld] log-bin [=DIR [filename]]

其中,DIR参数指定二进制文件的存储路径;filename参数指定二级制文件的文件名,其形式为filename.number,number的形式为000001、000002等。每次重启mysql服务或运行mysql> flush logs;都会生成一个新的二进制日志文件,这些日志文件的number会不断地递增。除了生成上述的文件外还会生成一个名为filename.index的文件。这个文件中存储所有二进制日志文件的清单又称为二进制文件的索引。

[root@stu18 ~]# cd /mydata/data/ [root@stu18 data]#ls -lh
-rw-rw---- 1 mysqlmysql 14K Aug 13 15:30 mysql-bin.000001 -rw-rw---- 1 mysqlmysql 150 Aug 13 17:05 mysql-bin.000002 -rw-rw---- 1 mysqlmysql 150 Aug 13 17:06 mysql-bin.000003 -rw-rw---- 1 mysqlmysql 150 Aug 13 17:07 mysql-bin.000004 -rw-rw---- 1 mysqlmysql 150 Aug 13 17:39 mysql-bin.000005 -rw-rw---- 1 mysqlmysql 126 Aug 13 19:03 mysql-bin.000006 -rw-rw---- 1 mysqlmysql 126 Aug 13 19:03 mysql-bin.000007 -rw-rw---- 1 mysqlmysql 126 Aug 13 19:05 mysql-bin.000008 -rw-rw---- 1 mysqlmysql 107 Aug 13 19:05 mysql-bin.000009 -rw-rw---- 1 mysqlmysql 353 Oct 7 23:40 mysql-bin.000010 -rw-rw---- 1 mysqlmysql 190 Oct 7 20:43 mysql-bin.index
[root@stu18 data]#cat mysql-bin.index
./mysql-bin.000001 ./mysql-bin.000002 ./mysql-bin.000003 ./mysql-bin.000004 ./mysql-bin.000005 ./mysql-bin.000006 ./mysql-bin.000007 ./mysql-bin.000008 ./mysql-bin.000009 ./mysql-bin.000010

如果说我们向某个表的某个字段插入一个数据而这个数据为当前时间(日期时间型);过段时间将此二进制文件应用到另一台服务器上数据就会变动从而导致数据的不一致性所以说对于这种非确定性的数据使用默认的语句定义并不是可靠的;

二进制日志中常用的定义格式:

1、语句(statement):默认的记录格式;

2、行(row):定义的并非数据本身而是这一行的数据是什么;

3、混合模式(mixed):交替使用行和语句、由mysql服务器自行判断。

其中基于行的定义格式数据量会大一些但是可以保证数据的精确性。

查看二进制日志:

二进制日志的定义方式为二进制格式;使用此格式可以存储更多的信息,并且可以使写入二进制日志的效率更高。但是不能直接使用查看命令打开并查看二进制日志。

mysql> showbinary logs; #显示当前服务器使用的二进制文件及大小
+------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001| 13814 | | mysql-bin.000002| 150 | | mysql-bin.000003| 150 | | mysql-bin.000004| 150 | | mysql-bin.000005| 150 | | mysql-bin.000006| 126 | | mysql-bin.000007| 126 | | mysql-bin.000008| 126 | | mysql-bin.000009| 107 | | mysql-bin.000010| 353 | +------------------+-----------+ 10 rows in set (0.07sec)