时间: 2020-09-25|29次围观|0 条评论

binlog基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中;

作用:MySQL的作用类似于的归档日志,可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、Mysql的复制(主主数据库的复制、主从数据库的复制)

二进制日志的信息:

文件位置:默认存放位置为数据库文件所在目录下

文件的命名方式: 名称为hostname-bin.xxxxx (重启mysql一次将会自动生成一个新的binlog)

状态的查看:mysql> show variables like '%log_bin%';

mysql> show variables like '%log_bin%';

+---------------------------------+-------+

| Variable_name | Value |

+---------------------------------+-------+

| log_bin | ON | //表示当前已开启二进制日志//

| log_bin_trust_function_creators | OFF |

| sql_log_bin | ON |

+---------------------------------+-------+

3 rows in set (0.00 sec)

 

二进制日志的管理:

1、开启二进制日志配置

方法一、修改my.cnf参数文件,该方法需要重启

 

log-bin = mysql-bin #打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径,如:/home/www/mysql_bin_log/mysql-bin

关闭二进制日志的方法:log-bin = mysql-bin注释掉即可
 

 

方法二、不重启修改二进制日志配置,该方法mysql的版本需要5.6以上

SET @@global.log_bin=1|0  (1为开启,0为关闭)

SET @@global.binlog_size=37268(单位bytes)

 

3、暂停二进制日志

SET sql_log_bin={0|1}

 

4、修改二进制日志的大小

修改my.cnf参数文件中的max_binlog_size的值;

说明:如果你的二进制文件的大小超过了max_binlog_size,它就是自动创建新的二进制文件。当然如果恰好在日志文件到达它的最大尺寸时写入了大的事务,那么日志文件还是会超过max_binlog_size的大小

 

5、进行二进制日志的切换,默认情况下当二进制日志写满了或者数据库重启了才会进行切换,但是也可以手工的进行切换的动作

mysql> flush logs;

 

6、其他参数:

binlog-cache-size=100m 设置二进制日志缓存大小

sync-binlog=N(每个N秒将缓存中的二进制日志记录写回硬盘,默认值为0。不过,你经常会陷入group commit函数与I/O之间二选一的矛盾。如果在replication环境中,由于考虑到耐久性与一致性,则需要设置1。同时,还需要设置innodb_flush_log_at_trx_commit=1以及innodb-support-xa=1默认开启;)
 

一、开启mysql-binlog日志

在mysql配置文件my.cnf加上如下配置,代码如下:

[mysqld]

log-bin=mysql-bin

重启mysql,代码如下:service mysqld restart

二、备份数据库

1)先查看一下当前数据库情况,代码如下:

  1. mysql> select * from t1; +------+ | id | +------+ | 1 | | 2 | +------+ 2 rows in set (0.00 sec) 
  2.  
  3.  
  4. mysql> select * from t1; 
  5. +------+ 
  6. | id   | 
  7. +------+ 
  8. |    1 | 
  9. |    2 | 
  10. +------+ 
  11. rows in set (0.00 sec) 

2)备份数据到/tmp/test.sql,代码如下:

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《mysql使用binlog恢复数据
   

还没有人抢沙发呢~