mysql 開啟binlog日誌,恢復誤刪的表、數據、mysql庫

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密碼