MySQL數(shù)據(jù)庫(kù)誤刪恢復(fù)的超詳細(xì)教程
前言
經(jīng)常聽說刪庫(kù)跑路這真的不只是一句玩笑話,若不小心刪除了數(shù)據(jù)庫(kù),事情很嚴(yán)重。你一個(gè)不小心可能會(huì)給公司刪沒。建議研發(fā)不要直連生成環(huán)境,一般的話都會(huì)分配賬號(hào)權(quán)限,生產(chǎn)環(huán)境的賬號(hào)盡量是只讀,以防你一個(gè)不經(jīng)意給庫(kù)或表刪除。一定要備份,這很重要,這是一個(gè)血的教訓(xùn)。
1、創(chuàng)建表
DROP TABLE IF EXISTS `user_misjudge`; --如果表存在則刪除,然后執(zhí)行如下語句重新創(chuàng)建。 CREATE TABLE `user_misjudge` ( `id` bigint(50) NOT NULL AUTO_INCREMENT, `attr1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
2、BigLog日志相關(guān)
2.1、檢查biglog狀態(tài)是否開啟
聲明: 當(dāng)前為mysql版本5.7 當(dāng)前為mysql版本5.7 當(dāng)前為mysql版本5.7
2.1.1、Navicat工具執(zhí)行
SHOW VARIABLES LIKE 'LOG_BIN%';
- OFF 是未開啟狀態(tài),如果不是ON 開啟狀態(tài)需要開啟為ON。{默認(rèn)情況下就是關(guān)閉狀態(tài)}
2.1.2、命令行執(zhí)行
- 其中-h表示服務(wù)器名,localhost表示本地;-u為數(shù)據(jù)庫(kù)用戶名,root是mysql默認(rèn)用戶名;-p為密碼,如果設(shè)置了密碼,可直接在-p后鏈接輸入,如:-proot;如果用戶沒有設(shè)置密碼,顯示Enter password時(shí),直接回車即可。
mysql -hlocalhost -uroot -proot
2.2、開啟biglog
- 執(zhí)行語句開啟biglog
SET GLOBAL log_bin = 'ON';
執(zhí)行結(jié)果:
注意: 報(bào)錯(cuò)了! 報(bào)錯(cuò)了! 報(bào)錯(cuò)不可怕,可怕的是報(bào)錯(cuò)沒有征兆。如果要永久修改log_bin的值,需要修改MySQL的配置文件(my.cnf或my.ini),并重啟MySQL服務(wù)器使修改生效。( 只讀變量,不能使用set修改,只能通過修改my.cnf或my.ini文件再重啟生效 )
- 遇到這種錯(cuò)誤,需要修改 my.cnf <Linux系統(tǒng)> 或 my.ini<Windows系統(tǒng)> 配置文件,在 [mysqld] 下面增加 log-bin=mysql-bin 后,重啟MySQL服務(wù)即可
- 在 [mysqld] 段落中添加的log-bin=mysql-bin這是一個(gè) MySQL 數(shù)據(jù)庫(kù)的配置選項(xiàng),用于開啟二進(jìn)制日志記錄。二進(jìn)制日志可以記錄所有的數(shù)據(jù)庫(kù)操作,包括增刪改查等。開啟二進(jìn)制日志記錄可以用于備份和恢復(fù)數(shù)據(jù)庫(kù),以及進(jìn)行數(shù)據(jù)復(fù)制等操作。
- 在 [mysqld] 段落中添加 server-id=1 (其中的1可以替換為任意整數(shù),但要確保主從之間的server-id不同)
- server-id 是 MySQL 數(shù)據(jù)庫(kù)中的一條配置參數(shù),用于設(shè)置 MySQL 實(shí)例的唯一 ID。每個(gè) MySQL 實(shí)例都必須有一個(gè)唯一的 server-id,以便 MySQL 集群中的各個(gè)節(jié)點(diǎn)能夠相互識(shí)別和通信。通常情況下,server-id 參數(shù)會(huì)被設(shè)置為一個(gè)唯一的數(shù)字或字符串,比如可以設(shè)置為當(dāng)前服務(wù)器的 IP 地址或主機(jī)名。如果在一個(gè) MySQL 集群中配置不正確,可能會(huì)導(dǎo)致數(shù)據(jù)同步出現(xiàn)問題,因此需要謹(jǐn)慎配置。
# 開啟BigLog用于備份和恢復(fù)數(shù)據(jù)庫(kù),以及進(jìn)行數(shù)據(jù)復(fù)制等操作。 log-bin=mysql-bin # 實(shí)例都必須有一個(gè)唯一的 server-id 如:server-id=1 ,以便 MySQL 集群中的各個(gè)節(jié)點(diǎn)能夠相互識(shí)別和通信。 server-id=1
- ON 是開啟狀態(tài),如果是開啟狀態(tài)那就可以做數(shù)據(jù)恢復(fù)了。
2.3、查看biglog日志文件
show binary logs;
2.3.1、查看master狀態(tài)
show master status;
2.3.2、查看第一個(gè)binlog文件內(nèi)容
show binlog events;
2.3.3、查看指定binlog文件的內(nèi)容
show binlog events in 'mysql-bin.000002';
注意: 上一個(gè)事件的結(jié)束位置,就是下一個(gè)事件的開始位置。如下↓↓↓
2.3.4、刷新log日志
flush logs;
2.3.5、刪除日志文件
MySQL刪除日志的方式有以下幾種:
- 通過Reset Master指令刪除全部binlog日志,刪除之后,日志編號(hào)將從xxxx.00001重新開始。
- 執(zhí)行指令purge master logs to 'mysqlbin.******',該命令將刪除指定編號(hào)之前的所有日志。
- 執(zhí)行指令purge master logs before 'yyyy-mm-dd hh24:mi:ss',該命令將刪除指定日期之前的所有日志。
- 列出所有日志
show binary logs;
- 指定刪除
purge master logs to 'mysql-bin.000001';
- 指定日期刪除(該命令將刪除指定日期之前的所有日志)
purge binary logs before '2023-5-29 23:59:59';
- 刪除全部binlog日志
reset master;
2.3.6、查看和修改日志文件有效期
說明:
- 查看日志文件的有效期 show variables like '%expire_logs_days%';默認(rèn)有效期為 0,表示 Binlog 日志的自動(dòng)清理功能是沒有啟用的
- 設(shè)置日志文件有效期 參數(shù)set global expire_logs_days=7; 此參數(shù)的含義是設(shè)置日志的過期天數(shù)為7天,過了指定的天數(shù)后日志將會(huì)被自動(dòng)刪除,這樣將有利于減少DBA管理日志的工作量。
- 查看日志文件的有效期
show variables like '%expire_logs_days%';
- 設(shè)置日志文件有效期
set global expire_logs_days=7;
3、誤刪恢復(fù)
3.1、查看數(shù)據(jù)庫(kù)
show databases;
3.2、查看表中的數(shù)據(jù)
--切換到指定數(shù)據(jù)庫(kù)。 use text; --顯示當(dāng)前數(shù)據(jù)庫(kù)中的所有表名。 show tables; --查詢表數(shù)據(jù) select * from user_misjudge;
3.3、查看用戶表相關(guān)操作日志
說明: show binary logs; 和 show master logs; 都是顯示所有可用的binlog日志文件列表。
show master logs;
注意: 可以看到我之前刪除的表數(shù)據(jù)已經(jīng)被記錄了 ,由于之前演示刪除日志,我的日志是不完整的不完整的日志是不能恢復(fù)的 。(開啟日志后 重新創(chuàng)一個(gè)庫(kù) 詳情查看:3.4重新創(chuàng)建庫(kù)) ↓↓↓
3.4、重新創(chuàng)建庫(kù)
- 刪除庫(kù)
drop database text
- 清空全部日志
reset master;
- 創(chuàng)建庫(kù)
CREATE DATABASE `text` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'
- 查看日志信息
show binlog events in 'mysql-bin.000001';
3.4、刪除數(shù)據(jù)庫(kù) text
drop database text;
可以看到列表text庫(kù)已經(jīng)被刪除
3.5、恢復(fù)數(shù)據(jù)庫(kù)
3.5.1、查看日志文件中的信息
show binlog events in 'mysql-bin.000001';
3.5.2、利用事件開始結(jié)束位置進(jìn)行恢復(fù)
mysqlbinlog --start-position=154 --stop-position=427 mysql-bin.000001 | mysql -uroot -p
以上該命令是一個(gè)從MySQL二進(jìn)制日志文件中提取數(shù)據(jù)并導(dǎo)入到MySQL數(shù)據(jù)庫(kù)的命令。具體解釋如下:
- mysqlbinlog:MySQL二進(jìn)制日志文件命令,用于讀取、處理和輸出MySQL二進(jìn)制日志文件中的內(nèi)容。
- --start-position=154:指定從二進(jìn)制日志文件的154個(gè)字節(jié)開始讀取,默認(rèn)情況下,mysqlbinlog從文件的開頭開始讀取。
- --stop-position=427:指定從二進(jìn)制日志文件的427個(gè)字節(jié)結(jié)束讀取,默認(rèn)情況下,mysqlbinlog讀取到文件的末尾。
- mysql-bin.000001:二進(jìn)制日志文件名,表示要讀取的二進(jìn)制日志文件。
- |:管道符,將前面的命令的輸出作為后面命令的輸入。
- mysql:MySQL客戶端命令,用于連接和操作MySQL數(shù)據(jù)庫(kù)。
- -uroot:指定以root用戶身份連接MySQL數(shù)據(jù)庫(kù)。
- -p:表示連接MySQL數(shù)據(jù)庫(kù)時(shí)需要輸入密碼。
- 注意: 此命令是使用終端,進(jìn)入MySQL時(shí)的路徑下的 data 目錄下執(zhí)行。
- 查看是否恢復(fù)刪除的庫(kù)text
3.5.3、查看mysql-bin.000001文件日志細(xì)節(jié)
說明
- 由于binlog是二進(jìn)制的文件,使用mysqlbinlog命令進(jìn)行轉(zhuǎn)換。
- mysqlbinlog:MySQL二進(jìn)制日志文件命令,用于讀取、處理和輸出MySQL二進(jìn)制日志文件中的內(nèi)容。
- 找到安裝MySQL時(shí)的路徑下的 data 目錄,不管你是Linux 或windows,我目前是windows 我就在data目錄下使用cmd (如果是linux查詳細(xì)的日志信息內(nèi)容,同理進(jìn)入MySQL時(shí)的路徑下的 data 目錄,這個(gè)時(shí)候需要用 ls -la 來查看細(xì)節(jié),執(zhí)行命令:mysqlbinlog 'mysql-bin.000001' )
- 配置MySQL環(huán)境變量,不配置執(zhí)行命令會(huì)失敗,右擊我的電腦–高級(jí)系統(tǒng)設(shè)置–環(huán)境變量–系統(tǒng)變量–Path(點(diǎn)擊,添加MySQL的bin目錄)
- 生成mysql-bin.000001文件日志細(xì)節(jié)名稱是xj.sql
mysqlbinlog "mysql-bin.000001">"xj.sql"
- 生成后的mysql-bin.000001文件日志位置
- 解析后的mysql-bin.000001文件日志細(xì)節(jié)
3.5.4、利用事件時(shí)間節(jié)點(diǎn)進(jìn)行恢復(fù)
mysqlbinlog --start-datetime="2023-06-01 11:32:34" --stop-datetime="2023-06-01 11:47:46" mysql-bin.000001 | mysql -uroot -p
- 查看恢復(fù)的text庫(kù)
3.6、恢復(fù)數(shù)據(jù)庫(kù)表
3.6.1、進(jìn)入庫(kù)
- 可以看到text庫(kù)下沒有表
3.6.2、庫(kù)下創(chuàng)建表
- 建表語句文章開頭已經(jīng)給大家準(zhǔn)備直接拿過來執(zhí)行。
- 表已經(jīng)創(chuàng)建成功
3.6.3、庫(kù)下的表中添加數(shù)據(jù)
insert user_misjudge(attr1) values('CSDN臭弟弟'); insert user_misjudge(attr1) values('這是一條數(shù)據(jù)');
3.6.4、刪表之間查看日志信息
3.6.4、刪除表
drop tables user_misjudge;
- 查詢user_misjudge已經(jīng)不存在了
3.6.5、恢復(fù)表
mysqlbinlog --start-position=720 --stop-position=1579 mysql-bin.000001 | mysql -uroot -p
- 不用再說了吧一定要終端執(zhí)行以上命令,離開mysql命令行進(jìn)入mysql路徑下的 data 目錄使用終端執(zhí)行。
3.6.7、查看恢復(fù)的表
- 查看日志
show binlog events in 'mysql-bin.000001';
可以看到 我們只恢復(fù)了表 并沒有恢復(fù)數(shù)據(jù) 。為什么??? 往下繼續(xù)↓↓
3.6.8、分析日志
原因:
在導(dǎo)航{3.6.5、恢復(fù)表} 我們執(zhí)行的語句mysqlbinlog --start-position=720 --stop-position=1579 mysql-bin.000001 | mysql -uroot -p, 事件開始位置720 ,事件結(jié)束位置1579,說明我們位置不對(duì)唄,這個(gè)位置只能恢復(fù)表不能恢復(fù)數(shù)據(jù)。(想要恢復(fù)數(shù)據(jù)應(yīng)該在 事件的結(jié)束位置應(yīng)該在 刪除表之前的最后連接的位置才對(duì))
- 完整日志如下:
mysql> show binlog events in 'mysql-bin.000001'; +------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | mysql-bin.000001 | 4 | Format_desc | 1 | 123 | Server ver: 5.7.28-log, Binlog ver: 4 | | mysql-bin.000001 | 123 | Previous_gtids | 1 | 154 | | | mysql-bin.000001 | 154 | Anonymous_Gtid | 1 | 219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 219 | Query | 1 | 362 | CREATE DATABASE `text` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' | | mysql-bin.000001 | 362 | Anonymous_Gtid | 1 | 427 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 427 | Query | 1 | 512 | drop database text | | mysql-bin.000001 | 512 | Anonymous_Gtid | 1 | 577 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 577 | Query | 1 | 720 | CREATE DATABASE `text` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' | | mysql-bin.000001 | 720 | Anonymous_Gtid | 1 | 785 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 785 | Query | 1 | 1532 | use `text`; CREATE TABLE `user_misjudge` ( `id` bigint(50) NOT NULL AUTO_INCREMENT, `attr1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic | | mysql-bin.000001 | 1532 | Anonymous_Gtid | 1 | 1597 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 1597 | Query | 1 | 1669 | BEGIN | | mysql-bin.000001 | 1669 | Table_map | 1 | 1740 | table_id: 163 (text.user_misjudge) | | mysql-bin.000001 | 1740 | Write_rows | 1 | 1799 | table_id: 163 flags: STMT_END_F | | mysql-bin.000001 | 1799 | Xid | 1 | 1830 | COMMIT /* xid=2016 */ | | mysql-bin.000001 | 1830 | Anonymous_Gtid | 1 | 1895 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 1895 | Query | 1 | 1967 | BEGIN | | mysql-bin.000001 | 1967 | Table_map | 1 | 2038 | table_id: 163 (text.user_misjudge) | | mysql-bin.000001 | 2038 | Write_rows | 1 | 2102 | table_id: 163 flags: STMT_END_F | | mysql-bin.000001 | 2102 | Xid | 1 | 2133 | COMMIT /* xid=2017 */ | | mysql-bin.000001 | 2133 | Anonymous_Gtid | 1 | 2198 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 2198 | Query | 1 | 2324 | use `text`; DROP TABLE `user_misjudge` /* generated by server */ | | mysql-bin.000001 | 2324 | Anonymous_Gtid | 1 | 2389 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 2389 | Query | 1 | 3136 | use `text`; CREATE TABLE `user_misjudge` ( `id` bigint(50) NOT NULL AUTO_INCREMENT, `attr1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic | +------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 24 rows in set (0.00 sec)
創(chuàng)建表的起始位置是720 ,在日志中刪除表的結(jié)束之前最后連接的位置是2190,這樣就可以恢復(fù)我們刪表之前的表和兩條數(shù)據(jù)。
- 再次恢復(fù),直接告訴你會(huì)報(bào)錯(cuò)
- 為什么報(bào)錯(cuò),已經(jīng)存在了
3.6.9、恢復(fù)表中數(shù)據(jù)
- 既然表恢復(fù)了,那就恢復(fù)數(shù)據(jù)唄,找事件開始結(jié)束位置數(shù)據(jù)節(jié)點(diǎn)
mysql> show binlog events in 'mysql-bin.000001'; +------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Log_name | Pos | Event_type | Server_id | End_log_pos | Info | +------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | mysql-bin.000001 | 4 | Format_desc | 1 | 123 | Server ver: 5.7.28-log, Binlog ver: 4 | | mysql-bin.000001 | 123 | Previous_gtids | 1 | 154 | | | mysql-bin.000001 | 154 | Anonymous_Gtid | 1 | 219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 219 | Query | 1 | 362 | CREATE DATABASE `text` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' | | mysql-bin.000001 | 362 | Anonymous_Gtid | 1 | 427 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 427 | Query | 1 | 512 | drop database text | | mysql-bin.000001 | 512 | Anonymous_Gtid | 1 | 577 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 577 | Query | 1 | 720 | CREATE DATABASE `text` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' | | mysql-bin.000001 | 720 | Anonymous_Gtid | 1 | 785 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 785 | Query | 1 | 1532 | use `text`; CREATE TABLE `user_misjudge` ( `id` bigint(50) NOT NULL AUTO_INCREMENT, `attr1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic | | mysql-bin.000001 | 1532 | Anonymous_Gtid | 1 | 1597 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 1597 | Query | 1 | 1669 | BEGIN | | mysql-bin.000001 | 1669 | Table_map | 1 | 1740 | table_id: 163 (text.user_misjudge) | | mysql-bin.000001 | 1740 | Write_rows | 1 | 1799 | table_id: 163 flags: STMT_END_F | | mysql-bin.000001 | 1799 | Xid | 1 | 1830 | COMMIT /* xid=2016 */ | | mysql-bin.000001 | 1830 | Anonymous_Gtid | 1 | 1895 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 1895 | Query | 1 | 1967 | BEGIN | | mysql-bin.000001 | 1967 | Table_map | 1 | 2038 | table_id: 163 (text.user_misjudge) | | mysql-bin.000001 | 2038 | Write_rows | 1 | 2102 | table_id: 163 flags: STMT_END_F | | mysql-bin.000001 | 2102 | Xid | 1 | 2133 | COMMIT /* xid=2017 */ | | mysql-bin.000001 | 2133 | Anonymous_Gtid | 1 | 2198 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 2198 | Query | 1 | 2324 | use `text`; DROP TABLE `user_misjudge` /* generated by server */ | | mysql-bin.000001 | 2324 | Anonymous_Gtid | 1 | 2389 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' | | mysql-bin.000001 | 2389 | Query | 1 | 3136 | use `text`; CREATE TABLE `user_misjudge` ( `id` bigint(50) NOT NULL AUTO_INCREMENT, `attr1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `attr5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic | +------------------+------+----------------+-----------+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 24 rows in set (0.00 sec) mysql>
- 事件開始位置720 ~事件結(jié)束位置1579 恢復(fù)的是表,那么事件開始位置1532~事件結(jié)束位置2189恢復(fù)的就是那兩條數(shù)據(jù)。
mysqlbinlog --start-position=1532 --stop-position=2189 mysql-bin.000001 | mysql -uroot -p
- 查看恢復(fù)的兩條數(shù)據(jù)
總結(jié)
到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)誤刪恢復(fù)的文章就介紹到這了,更多相關(guān)MySQL誤刪恢復(fù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL?datetime類型與時(shí)間、日期格式字符串大小比較的方法
這篇文章主要介紹了MySQL?datetime類型與時(shí)間、日期格式字符串大小比較,本文使用的是mysql8.0.27版本,其他版本自測(cè)一下,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11MySQL串行化隔離級(jí)別(間隙鎖實(shí)現(xiàn))
本文主要介紹了MySQL串行化隔離級(jí)別(間隙鎖實(shí)現(xiàn)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06MySQL存儲(chǔ)結(jié)構(gòu)用法案例分析
這篇文章主要介紹了MySQL存儲(chǔ)結(jié)構(gòu)用法,結(jié)合具體案例形式分析了mysql存儲(chǔ)結(jié)構(gòu)相關(guān)使用方法與操作注意事項(xiàng),需要的朋友可以參考下2018-07-07MySQL數(shù)據(jù)庫(kù)的多種連接方式及工具
本文詳細(xì)的介紹了數(shù)據(jù)庫(kù)的連接方式及數(shù)據(jù)庫(kù)連接的工具,給初學(xué)者分享一些知識(shí),也是學(xué)習(xí)總結(jié),感興趣的小伙伴可以閱讀一下2023-03-03

MySQL數(shù)據(jù)庫(kù)wait_timeout參數(shù)詳細(xì)介紹