数据库
首页 > 数据库> > mysql优化 个人笔记 非礼勿扰 -m08

mysql优化 个人笔记 非礼勿扰 -m08

作者:互联网

binlog 简单使用 数据恢复

1. 查看binlog状态

show variables like '%log%';

在这里插入图片描述

2. 打开binlog

vim /etc/my.cnf[mysqld]# binlog 配置log-bin =/var/lib/mysql/log-bin.log
expire-logs-days = 14max-binlog-size = 500M
server-id = 1

重启 mysql:
service mysqld restart;

再次查看binlog日志 已经开启:

 show variables like 'log_bin';

在这里插入图片描述

3. 创建数据库 创建表

CREATE DATABASEIF NOT EXISTS binlog_test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;DROP TABLE IF EXISTS `test`;CREATE TABLE `test` (
  `id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4. 查看binlog

cd /var/lib/mysql
ll

在这里插入图片描述
也可以直接通过命令查看:

mysql> show master logs;

在这里插入图片描述

5.插入数据

INSERT INTO `binlog_test`.`test` (`id`, `name`, `age`)VALUES('1', '小智障', '18'),('2', '大傻子', '20');

  1. 查看最后一个binlog日志的编号名称及其最后一个操作事件pos结束点的值

    show master status;

    在这里插入图片描述

  2. 刷新日志

    Flush logs;
  3. 查看日志 刷新之后 生成一个新的文件

     show master logs;

    在这里插入图片描述

  4. 每当mysqld服务重启时,会自动执行刷新binlog日志命令,

  5. mysqldump备份数据时加-F选项也会刷新binlog日志

  6. 清空所有binlog日志

    reset master;
  7. 查看日志文件内容

cd /var/lib/mysql
mysqlbinlog    log-bin.000002报错:
mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8'解决方法:	1. MySQL的配置/etc/my.cnf中将default-character-set=utf8 修改为 character-set-server = utf8    重启服务器 
	2.  加no-defaults参数 
		mysqlbinlog   --no-defaults  log-bin.000002

可以这样查看:

 show binlog events in 'log-bin.000001';-- 指定查询,从pos点406开始查询 
 show binlog events in 'log-bin.000001'  from 154;-- limit 范围查询show binlog events in 'log-bin.000001'  from 154 limit 3,5 ;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.测试恢复数据

0. 删除日志
reset master;1.清空表 : truncate table test;2.创建一条数据:INSERT INTO `binlog_test`.`test` (`id`, `name`, `age`)VALUES('1', '小智障', '18');3.模拟数据库备份 
mysqldump   -u root  -p binlog_test > /usr/local/test.sql;1. 再新增一条数据INSERT INTO `binlog_test`.`test` (`id`, `name`, `age`)VALUES('2', '大智障', '22');2. 模拟误删 
mysql> truncate table test;3. select * from test;
 删库了 要不要跑路啊!!!4. 先还原备份的数据库 
source /usr/local/test.sql;5.select * from test;一条数据 还差一条呢 ? 跑路吗?5. 别慌 还有binlog呢
刷新一个新的日志 : flush logs;为啥要?刷新一个新的日志呢  之前日志是01 刷新值周日志是02新的操作都会写入到02中 
6. 查看日志show master logs;7. show binlog events in 'log-bin.000001';8. 查看pos 从586开始  730结束/usr/bin/mysqlbinlog   --no-defaults --start-position=586 --stop-position=730 --database=binlog_test  /var/lib/mysql/log-bin.000001 | /usr/bin/mysql -uroot -p123456 -v test9. 查看数据 我擦 居然恢复了10. 还能根据日期恢复  cha/usr/bin/mysqlbinlog   --no-defaults --start-datetime="2018-04-27 20:57:55" --stop-datetime="2018-04-27 20:58:18"  --database=binlog_test  /var/lib/mysql/log-bin.000001 | /usr/bin/mysql -uroot -p123456 -v test 
 查看日期: mysqlbinlog   --no-defaults  log-bin.000001

在这里插入图片描述
mysqlbinlog --no-defaults log-bin.000001
在这里插入图片描述

标签:binlog,非礼,log,--,mysql,test,日志,m08
来源: https://blog.51cto.com/u_12198094/2705768