mysql刪除表數(shù)據(jù)如何恢復(fù)
實(shí)驗(yàn)?zāi)M
該實(shí)驗(yàn)必須是mysql開(kāi)啟了binlog的情況。
binlog日志,即binary log,是二進(jìn)制日志文件。它有兩個(gè)作用,
- 一是增量備份,即只備份新增的內(nèi)容;
- 二是用于主從復(fù)制等,即主節(jié)點(diǎn)維護(hù)了一個(gè)binlog日志文件,從節(jié)點(diǎn)從binlog中同步數(shù)據(jù)。
我們可以通過(guò)binlog日志恢復(fù)數(shù)據(jù)
查看mysql是否開(kāi)啟binlog語(yǔ)句
mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin ? ? ? | OFF ? | +---------------+-------+ 1 row in set (0.01 sec)
如果是OFF,則說(shuō)明沒(méi)有開(kāi)啟binlog??梢允褂萌缦路椒ㄩ_(kāi)啟binlog
編輯/etc/my.cnf文件,在文件后面增加如下兩行代碼即可
server-id=1 log-bin=/var/lib/mysql/mysql-bin
server-id表示單個(gè)結(jié)點(diǎn)的id,這里由于只有一個(gè)結(jié)點(diǎn),所以可以把id隨機(jī)指定為一個(gè)數(shù),這里將id設(shè)置成1。若集群中有多個(gè)結(jié)點(diǎn),則id不能相同
第二句是指定binlog日志文件的名字為mysql-bin,以及其存儲(chǔ)路徑
重啟讓配置生效。
[root@localhost ~]# systemctl stop mysqld.service [root@localhost ~]# systemctl start mysqld.service
mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin ? ? ? | ON ? ?| +---------------+-------+ 1 row in set (0.01 sec)
創(chuàng)建數(shù)據(jù)庫(kù),即相關(guān)表
CREATE DATABASE `hbk` ?DEFAULT CHARACTER SET utf8 ; use hbk; CREATE TABLE `t_delete_test` ( ? `id` int(11) NOT NULL, ? `name` varchar(30) DEFAULT NULL, ? PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入相關(guān)測(cè)試數(shù)據(jù),在這里,我使用客戶(hù)端工具插入的,也可以使用手工執(zhí)行insert into語(yǔ)句。
模擬數(shù)據(jù)庫(kù)誤刪除操作,把id從1-4的數(shù)據(jù)不小心刪除,只留唐僧師徒4人,然后如何恢復(fù)所有數(shù)據(jù)。
mysql> delete from t_delete_test where id<=4; Query OK, 4 rows affected (0.01 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec)
恢復(fù)實(shí)戰(zhàn)
由于在/etc/my.cnf配置了binlog,這個(gè)日志會(huì)存儲(chǔ)插入,刪除,修改的日志信息
mysql > show binlog events in 'mysql-bin.000001'\G
在3101的時(shí)刻進(jìn)行了delete操作,從704建表之后的操作開(kāi)始恢復(fù)
[root@localhost mysql]# /usr/bin/mysqlbinlog ?/var/lib/mysql/mysql-bin.000001 --start-position=704 --stop-position=3101 |mysql -uroot -p hbk?
執(zhí)行之后,成功恢復(fù)了之前刪除的數(shù)據(jù)。
常用參數(shù)選項(xiàng)解釋
--start-position=875
起始pos點(diǎn)--stop-position=954
結(jié)束pos點(diǎn)--start-datetime="2016-9-25 22:01:08"
起始時(shí)間點(diǎn)--stop-datetime="2019-9-25 22:09:46"
結(jié)束時(shí)間點(diǎn)--database=zyyshop
指定只恢復(fù)zyyshop數(shù)據(jù)庫(kù)(一臺(tái)主機(jī)上往往有多個(gè)數(shù)據(jù)庫(kù),只限本地log日志)
不常用選項(xiàng)
-u --user=name
連接到遠(yuǎn)程主機(jī)的用戶(hù)名-p --password[=name]
連接到遠(yuǎn)程主機(jī)的密碼-h --host=name
從遠(yuǎn)程主機(jī)上獲取binlog日志--read-from-remote-server
從某個(gè)MySQL服務(wù)器上讀取binlog日志
a)查詢(xún)第一個(gè)(最早)的binlog日志:
mysql> show binlog events\G;
b)指定查詢(xún) mysql-bin.000002這個(gè)文件:
mysql> show binlog events in 'mysql-bin.000002'\G;
c)指定查詢(xún) mysql-bin.000002這個(gè)文件,從pos點(diǎn):624開(kāi)始查起:
mysql> show binlog events in 'mysql-bin.000002' from 624\G;
d)指定查詢(xún) mysql-bin.000002這個(gè)文件,從pos點(diǎn):624開(kāi)始查起,查詢(xún)10條(即10條語(yǔ)句)
mysql> show binlog events in 'mysql-bin.000002' from 624 limit 10\G;
e)指定查詢(xún) mysql-bin.000002這個(gè)文件,從pos點(diǎn):624開(kāi)始查起,偏移2行(即中間跳過(guò)2個(gè)),查詢(xún)10條
mysql> show binlog events in 'mysql-bin.000002' from 624 limit 2,10\G;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL系列數(shù)據(jù)庫(kù)設(shè)計(jì)三范式教程示例
這篇文章主要為大家介紹了MySQL系列之?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)三范式的教程示例講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10解決mysql報(bào)錯(cuò)ERROR 1049 (42000): Unknown dat
對(duì)于錯(cuò)誤代碼1049(42000):Unknown database ‘?dāng)?shù)據(jù)庫(kù)‘,這個(gè)錯(cuò)誤通常表示您正在嘗試訪問(wèn)一個(gè)不存在的數(shù)據(jù)庫(kù),本文給出了解決方法,您可以按照文中步驟進(jìn)行操作,需要的朋友可以參考下2024-01-01區(qū)別于Oracle的MySQL?insert會(huì)阻塞update
這篇文章主要介紹了區(qū)別于Oracle的MySQL?insert會(huì)阻塞update的問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03MySQL必備的常見(jiàn)知識(shí)點(diǎn)匯總整理
這篇文章主要介紹了MySQL必備的常見(jiàn)知識(shí)點(diǎn),結(jié)合實(shí)例形式匯總整理了mysql各種常見(jiàn)知識(shí)點(diǎn),包括登錄、退出、創(chuàng)建、增刪改查、事務(wù)等知識(shí)點(diǎn)與操作注意事項(xiàng),需要的朋友可以參考下2020-05-05CentOS7環(huán)境下MySQL8常用命令小結(jié)
在進(jìn)行MySQL的優(yōu)化之前必須要了解的就是MySQL的查詢(xún)過(guò)程,下面這篇文章主要給大家介紹了關(guān)于CentOS7環(huán)境下MySQL8常用命令的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06詳解MySQL實(shí)時(shí)同步到Oracle解決方案
這篇文章主要介紹了詳解MySQL實(shí)時(shí)同步到Oracle解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03MySQL使用Partition功能實(shí)現(xiàn)水平分區(qū)的策略
這篇文章主要介紹了MySQL使用Partition功能實(shí)現(xiàn)水平分區(qū),給大家提到了水平分區(qū)的5種策略,通過(guò)sql語(yǔ)句給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12