导航

数据库的二进制日志

一:二进制日志

1记录导致数据改变或潜在导致数据改变的SQL语句

2.记录已提交的日志

3.不依赖于存储引擎类型

二、二进制日志记录的三种格式

基于语句记录:statement,记录语句,默认模式,日志量较少

基于行记录:row,记录数据,日志量比较大更加安全,建议使用的格式

(mysqlbinlog --base64-output=decode-rows -v log_bin.000003)查看行记录格式

混合模式:mixed,让系统自行判定该基于哪种方式进行,默认模式

三、格式配置

1.show variables like 'binlog_format';查看格式

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |  ROW默认行格式
+---------------+-------+
1 row in set (0.00 sec)

在配置文件时候不能使用下划线

mysql> show variables like '%log_bin%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_basename | |
| log_bin_index | |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+-------+
6 rows in set (0.00 sec)查看二进制日志是否开启

第一步:备份:cp /etc/my.cnf   /etc/my.cnf.bak

第二步:/etc/my.cnf中添加log-bin=log-bin    server-id=2

第三步:重启mysql]# service mysqld restart

第四步:cd /var/lib/mysql

第五步:mysqlbinlog log-bin.000001专门的工具查看

第六步:在/etc/my.cnf中添加binlog_format=STATEMENT并重启mysql

第七步:在mysql中创建数据表

第八步:mysqlbinlog log-bin.000003查看

 

 

 

四、二进制文件的形成

有两类文件

1.日志文件;mysql |mariadb-bin.文件后缀,如:mysql-bin.000001

2.索引文件:mysql |mariadb-bin.index,文件格式

一般不懂这类文件

五、二进制日志相关的服务器变量

sql_log_bin=ON|OFF:#是否记录二进制日志,默认ON,支持动态修改,系统变量,而非服务器选项
log-bin=log-bin:#指定文件位置;默认OFF,表示不启用二进制日志功能,上述两项都开启才可以
server-id=1(5.7.3之后要配合此选项使用) binlog_format=STATEMENT|ROW|MIXED:#二进制日志记录的格式,默认STATEMENT max_binlog_size=1073741824:#单个二进制日志文件的最大体积,到达最大值会自动滚动,默认为1G #说明:文件达到上限时的大小未必为指定的精确值 binlog_cache_size=4m #此变量确定在每次事务中保存二进制日志更改记录的缓存的大小(每次连接) max_binlog_cache_size=512m #限制用于缓存多事务查询的字节大小。 sync_binlog=1|0:#设定是否启动二进制日志即时同步磁盘功能,默认0,由操作系统负责同步日志到磁盘 expire_logs_days=N:#二进制日志可以自动删除的天数。 默认为0,即不自动删除
[root@mysql mysql]# mysqlbinlog --base64-output=decode-rows -v log-bin.000001 查看行记录的特殊命令直接可以查看不需要解密

六、二进制恢复数据
第一步:create database huifu;
第二步:create table huifu.test(id int);
第三步:select * from huifu.test;
第四步:drop table huifu.test;
第五步:mysqlbinlog log-bin.00003
end_log_pos 650 start-pos 创建的初始位置
end_log_pos 938 stop-pos 删除的位置
查找位置:mysqlbinlog log-bin.00003
第六步:使用mysqlbinlog --start-position 650 --stop-position 938 log-bin.00003 > /root/huifu.sql
查看:cat /root/huifi.sql

1.查看删除二进制日志的文件mysql> show binary logs;


2.删除:PURGE  BINARY  LOGS TO 'log-bin.000002';

 

posted on 2021-09-22 12:04  molingke  阅读(136)  评论(0)    收藏  举报