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');
查看最后一个binlog日志的编号名称及其最后一个操作事件pos结束点的值
show master status;
刷新日志
Flush logs;
查看日志 刷新之后 生成一个新的文件
show master logs;
每当mysqld服务重启时,会自动执行刷新binlog日志命令,
mysqldump备份数据时加-F选项也会刷新binlog日志
清空所有binlog日志
reset master;
查看日志文件内容
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