mysql 开启binlog日志,恢复误删的表、数据、mysql库
- 2022 年 6 月 8 日
- 筆記
linux下开启mysql的binlog日志功能
1.配置mysql配置文件my.cnf(内容如下)。
#配置文件储存的位置
log-bin=mysql-bin
#5.7以及以上版本需要配置这一行(保证唯一性,可随意输入)
server-id=123
#binlog的格式 :statement(保存语句)、row(保存执行后的结果)、mixed(同时保存语句和结果)
binlog-format=ROW
#表示每执行一次就同步
sync-binlog=1
2.重启mysql服务后。查看日志功能是否正常开启
mysql> show variables like ‘log_%’;
恢复数据
创建新的日志控制开始点(创建新的日志文件) mysql
mysql> flush logs;
查看创建的日志文件(如下图最新生成的mysql-bin.00003) mysql
创建数据库 mysql
DROP DATABASE IF EXISTS `study1`; CREATE DATABASE `study1`;
创建数据表 mysql
DROP TABLE IF EXISTS `study1`.`tb_class`;
CREATE TABLE `study1`.`tb_class` (
`id` int(11) NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`score` int(255) NULL DEFAULT NULL,
`grade` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
插入数据 mysql
INSERT INTO `study1`.`tb_class` VALUES (1, ‘a’, 10, ‘a’);
INSERT INTO `study1`.`tb_class` VALUES (2, ‘a’, 10, ‘a’);
INSERT INTO `study1`.`tb_class` VALUES (3, ‘a’, 10, ‘cc’);
INSERT INTO `study1`.`tb_class` VALUES (4, ‘a’, 10, ‘dd’);
INSERT INTO `study1`.`tb_class` VALUES (5, ‘a’, 10, ‘ee’);
INSERT INTO `study1`.`tb_class` VALUES (6, ‘a’, 10, ‘ff’);
删除表数据,插入新数据 mysql
DELETE from `study1`.`tb_class`;
INSERT INTO `study1`.`tb_class` VALUES (99999, ‘a’, 10, ‘a’);
INSERT INTO `study1`.`tb_class` VALUES (999995, ‘a’, 10, ‘b’);
INSERT INTO `study1`.`tb_class` VALUES (999996, ‘a’, 10, ‘c’);
查找恢复点,即删除数据之前的备份点(mysql-bin.000014为上面生成的日志文件) linux
/usr/bin/mysqlbinlog –no-defaults -v /var/lib/mysql/mysql-bin.000003 (可以使用find命令查找mysqlbinlog、mysql-bin.000003路径)
恢复数据(恢复点如上截图,此处找到删除前备份点为2766) linux
/usr/bin/mysqlbinlog –no-defaults -v /var/lib/mysql/mysql-bin.000003 –stop-position=2766 -v | mysql -uroot -p密码
可以看到已经恢复的数据
删除表 mysql
DROP TABLE IF EXISTS `study1`.`tb_class`;
恢复 linux
/usr/bin/mysqlbinlog –no-defaults -v /var/lib/mysql/mysql-bin.000003 –stop-position=2766 -v | mysql -uroot -p密码
删库 mysql
DROP DATABASE `study1`;
恢复 linux
/usr/bin/mysqlbinlog –no-defaults -v /var/lib/mysql/mysql-bin.000003 –stop-position=2766 -v | mysql -uroot -p密码