MySQL日志详细解析(9)

如果说我们向某个表的某个字段插入一个数据而这个数据为当前时间(日期时间型);过段时间将此二进制文件应用到另一台服务器上数据就会变动从而导致数据的不一致性所以说对于这种非确定性的数据使用默认的语句定义并不是可靠的;
二进制日志中常用的定义格式:
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)
mysql> showmaster 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.02sec)
mysql> showmaster status;  #当前使用的二进制文件及所处位置
+------------------+----------+--------------+------------------+
| File            | Position | Binlog_Do_DB |Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000010|      353 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00sec)

小扩展:二进制日志的记录位置:通常为上一个事件执行结束时间的位置,每一个日志文件本身也有自己的元数据所以说对于当前版本的mysql来说二进制的开始位置通常为107;
mysql> flushlogs;
Query OK, 0 rowsaffected (0.23 sec)
注意:flush logs一般只会滚动中继日志和二进制日志。
mysql> showmaster status;
+------------------+----------+--------------+------------------+
| File            | Position | Binlog_Do_DB |Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011|      107 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00sec)

查看当前二进制文件的信息:
mysql> createdatabase yong;
Query OK, 1 rowaffected (0.12 sec)
mysql> createtable yong.tb1 (id int,name char(20));
Query OK, 0 rowsaffected (0.44 sec)
mysql> insertinto yong.tb1 values(1,'tom');
Query OK, 1 rowaffected (0.14 sec)
mysql> showmaster status;
+------------------+----------+--------------+------------------+
| File            | Position | Binlog_Do_DB |Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011|      479 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00sec)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2664cb88d7126d3636e3a9c8cb6894c4.html