mysql bin-log日志与mysqldump备份与恢复

时间:2021-10-15 14:03:09

简介:

mysql的bin-log日志是一种二进制的日志(默认存在于mysql/data下)
1. 用于恢复数据
2.有三种类型的日志
2.1.log-slow-queries日志是慢查询日志
[记录用户在查询的时候超过了时间的查询日志就会记录]
2.2.log-error日志是错误日志
[记录用户执行出错的语句]
2.3.log-bin日志是用户行为日志
[记录所有的增删改操作]


1.开启Mysql bin-log日志

         vim /etc/my.cnf    (修改mysql配置)
在 [mysqld]增加 log_bin=mysql-bin
重启服务

2.查看是否开启binlog日志

       show variables查看
show variables like '%bin%'

可以看到mysql-bin 是已经开启了

3.常用的日志命令

      3.1.flush logs;

pos位置是指你的增删改的语句的位置在哪里
(每次执行语句都会给该数据建立position位置)
刷新bin日志并创建新的日志开始记录
( 从现在开始记录增删改记录)
3.2.show master status;
查看最后一个bin日志
3.3reset master;
清空所有的bin-log日志
3.4.mysqlbinlog --no-defaults mysql-00001.bin(在mysql/bin下)
查看binlog日志
例:/usr/local/mysql/bin/mysqlbinlog mysql-bin.000001

4.通过binlog恢复数据

         4.1删除所有数据
truncate t1;
4.2.执行恢复命令

/usr/local/mysql/bin/mysqlbinlog mysql-bin.000001 |/usr/local/mysql/bin/mysql -u root -p123 test

报错:Warning: Using a password on the command line interface can be insecure.
在命令行输入密码,就会提示这些安全警告信息
解决方法就是不输入密码
/usr/local/mysql/bin/mysqlbinlog mysql-bin.000001 |/usr/local/mysql/bin/mysql -u root -p test

        4.3指定开始和结束的pos或者指定日期恢复
1.--stop-position='100'
2.--start-position='50'
3.--stop-date='2012-01-04 21:17:50'
4.--start-date='2012-01-04 19:10:10'

指定pos恢复
mysqlbinlog –start-position=’199’ –stop-position=’292’ mysql-bin.000005 |/usr/local/mysql/bin/mysql -u root -p123 test

5.mysql备份

5.1备份数据(/usr/local/mysql/bin/mysqldump )
mysqldump -u root -p123 test -l -F > '/usr/test.sql';
-l:指的是读锁,开启了读锁所有的增删改的操作都是无效的只能读取
-F:即flush logs,可以重新生成新的日志文件,当然包括binlog日志

6.实现一个完整的数据库备份恢复与binlog恢复

              6.1.备份数据(/usr/local/mysql/bin/mysqldump )
mysqldump -u root -p123 test -l -F > '/usr/test.sql';
6.2.在备份了之后进行了增删改操作
insert t1 values(4),(5),(6);
6.3.模拟数据库崩溃,丢失
truncate t1; 删除所有数据
drop table t1; 删除表
6.4.先恢复备份数据
/usr/local/mysql/bin/mysql -u root -p test < test.sql /usr/local/mysql/bin/mysqlbinlog mysql-bin.000005 | /usr/local/mysql/bin/mysql -u root -p test