show variables like '%log%';
vim /etc/my.cnf
[mysqld]
# binlog 配置
log-bin =/var/lib/mysql/log-bin.log
expire-logs-days = 14
max-binlog-size = 500M
server-id = 1
重启 mysql:
service mysqld restart;
再次查看binlog日志 已经开启:
show variables like 'log_bin';
CREATE DATABASE
IF 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;
cd /var/lib/mysql
ll
mysql> show master logs;
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 ;
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 test
9. 查看数据 我擦 居然恢复了
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