mysql的binlog

1默认情况下安装mysql是不开启binlog的。

 查看C:\xampp\mysql\bin\my.ini配置文件:

# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin

关于log-bin是注释的,我们只需要打开这个注释,就开启了binlog

#add by dhpei for open the bin log
log-bin = C:/xampp/mysql/databinlog/mylog-mysql-bin

修改配置后重启mysql就可以在databinlog目录下看到生成的两个文件:

mylog-mysql-bin.000001
mylog-mysql-bin.index

2查看binlog是否开启的命令 

mysql> show variables like '%log_bin%';
+---------------------------------+-------------------------------------------------+
| Variable_name 						| Value  			|
+---------------------------------+-------------------------------------------------+
| log_bin      		    			| ON	 |
| log_bin_basename       			| C:\xampp\mysql\databinlog\mylog-mysql-bin       	 |
| log_bin_index  				| C:\xampp\mysql\databinlog\mylog-mysql-bin.index 		 |
| log_bin_trust_function_creators 	 	| OFF        	 |
| log_bin_use_v1_row_events        	     | OFF        	 |
| sql_log_bin    				| ON   			|
+---------------------------------+-------------------------------------------------+	
6 rows in set

可以看到binlog是开启的,并且看到了binlog的存储路径。

3 binlog3中格式,分别是rowstatementmixed,三种格式各有优缺点主要使用的还是row模式和statement模式。

查看当前mysqlbinlog格式

mysql> show variables like 'binlog_format';
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set

3.1 statement模式,在statement模式下binlog日志全部都是query类型,可以看到记录到了执行的sql详细信息,type都是query

| mylog-mysql-bin.000001 | 1908 |	Intvar	| 1 |1940  | INSERT_ID=8       								|
| mylog-mysql-bin.000001 | 1940 | 	Query	| 1 | 2067 | use `rlog`; insert into ts_blog(title,content) values ('t3','c3') 			|
| mylog-mysql-bin.000001 | 2067 | 	Xid	| 1 | 2098 | COMMIT /* xid=49 */     					|
|mylog-mysql-bin.000001  | 2098 |	Query	| 1 | 2177 | BEGIN					|
| mylog-mysql-bin.000001 | 2177 |	Query	| 1 | 2303 | use `rlog`; update ts_blog set title='t3update' where title='t3'  		|
| mylog-mysql-bin.000001 | 2303 | 	Xid 	| 1 | 2334 | COMMIT /* xid=50 */       						 	|
| mylog-mysql-bin.000001 | 2334 |	Query	| 1 | 2413 | BEGIN 				 |
| mylog-mysql-bin.000001 | 2413 | 	Query	| 1 | 2529 | use `rlog`; delete from ts_blog where title='t3update'  	 |
| mylog-mysql-bin.000001 | 2529 | 	Xid	| 1 | 2560 | COMMIT /* xid=51 */      				 	 |
+------------------------+------+-------------+-----------+-------------+-------------------------------------------------------------------+

3.2row模式

修改binlog的格式为row,需要修改启动mysql的配置文件C:\xampp\mysql\bin\my.ini

#add by dhpei for open the bin log
log-bin = C:/xampp/mysql/databinlog/mylog-mysql-bin
binlog_format=row

修改之后重启服务mysql服务

mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set

可以看到binlog_format已经改为ROW了。

row模式下,binlog的日志如下,可以看到只是获取到了table_id;

 mysql> show binlog events in 'mylog-mysql-bin.000003';
+------------------------+-----+-------------+-----------+-------------+---------------------------------------+
| Log_name      | Pos | Event_type  | Server_id | End_log_pos | Info       |
+------------------------+-----+-------------+-----------+-------------+---------------------------------------+
| mylog-mysql-bin.000003 |   4 | Format_desc |1 |120 		 | Server ver: 5.6.16-log, Binlog ver: 4 |
| mylog-mysql-bin.000003 | 120 | Query       |1 |192 		 | BEGIN      |
| mylog-mysql-bin.000003 | 192 | Table_map   |1 |247		 | table_id: 70 (rlog.ts_blog)  |
| mylog-mysql-bin.000003 | 247 | Write_rows  |1 |294 		 | table_id: 70 flags: STMT_END_F        |
| mylog-mysql-bin.000003 | 294 | Xid|1 |325 				 | COMMIT /* xid=11 */ |
| mylog-mysql-bin.000003 | 325 | Query       |1 |397		 | BEGIN      |
| mylog-mysql-bin.000003 | 397 | Table_map   |1 |452		 | table_id: 70 (rlog.ts_blog)  |
| mylog-mysql-bin.000003 | 452 | Update_rows |1 |518 		 | table_id: 70 flags: STMT_END_F        |
| mylog-mysql-bin.000003 | 518 | Xid|1 |549 				 | COMMIT /* xid=12 */ |
| mylog-mysql-bin.000003 | 549 | Query       |1 |621 		 | BEGIN      |
| mylog-mysql-bin.000003 | 621 | Table_map   |1 |676 		 | table_id: 70 (rlog.ts_blog)  |
| mylog-mysql-bin.000003 | 676 | Delete_rows |1 |729 		 | table_id: 70 flags: STMT_END_F        |
| mylog-mysql-bin.000003 | 729 | Xid|1 |760 				 | COMMIT /* xid=13 */ |
+------------------------+-----+-------------+-----------+-------------+---------------------------------------+

4查看当前mysql正在读写的binlog日志文件

mysql> show master status;
+------------------------+----------+--------------+------------------+-------------------+
| File                   | Position 		| Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------+----------+--------------+------------------+-------------------+
| mylog-mysql-bin.000003  |760 			|              |              |                |
+------------------------+----------+--------------+------------------+-------------------+
1 row in set

5查看当前系统产生的所有binlog日志文件

mysql> show binary logs;
+------------------------+-----------+
| Log_name               | File_size |
+------------------------+-----------+
| mylog-mysql-bin.000001 |      2560 |
| mylog-mysql-bin.000002 |       120 |
| mylog-mysql-bin.000003 |       760 |
+------------------------+-----------+
3 rows in set

猜你喜欢

转载自www.cnblogs.com/dhsunny/p/8961942.html