真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

悲傷的故事,當(dāng)不小心刪了線(xiàn)上的數(shù)據(jù)庫(kù)

相關(guān)學(xué)習(xí)推薦:mysql教程

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、網(wǎng)頁(yè)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、邱縣網(wǎng)站維護(hù)、網(wǎng)站推廣。
前言

由于最近開(kāi)學(xué)季,我司又做的是高校相關(guān)的業(yè)務(wù),所以比較忙,都沒(méi)有什么時(shí)間來(lái)寫(xiě)文章,人一旦太忙的話(huà)就容易忙中出錯(cuò)。我呢就在前幾天,不是,是我有個(gè)朋友在前幾天去操作線(xiàn)上的數(shù)據(jù)庫(kù)時(shí),差點(diǎn)表演了一波刪庫(kù)跑路。

提前說(shuō)明:真的是我朋友,不是我。真的是我朋友,不是我。真的是我朋友,不是我。不過(guò)為了敘事方便,以下把“我朋友”簡(jiǎn)稱(chēng)為“我”。

事情是這樣的,我在對(duì)比部分表結(jié)構(gòu)時(shí)發(fā)現(xiàn)這個(gè)庫(kù)和其他庫(kù)的表結(jié)構(gòu)差的比較多,所以以為這個(gè)環(huán)境是沒(méi)有在使用的環(huán)境,就直接對(duì)這幾張表進(jìn)行了一個(gè)覆蓋操作,剛好這幾張表還是和學(xué)生錢(qián)包相關(guān)的,然后到晚上10點(diǎn)多公司的前方駐校人員在群里反饋說(shuō)是為什么錢(qián)包里錢(qián)變成0.0了,我一看到這個(gè)就直接嚇尿了,想著是不是該跑路了。

不過(guò)幸好看過(guò)一些數(shù)據(jù)庫(kù)恢復(fù)的方案,還是略知一二。

數(shù)據(jù)恢復(fù)1.開(kāi)啟binlog日志

我使用的binlog日志來(lái)恢復(fù)數(shù)據(jù),要用binlog肯定首先得確保binlog日志是開(kāi)啟狀態(tài)的,可以用命令來(lái)查看。

show variables like 'log_%';復(fù)制代碼

可以看到它是ON狀態(tài)的,表示已開(kāi)啟,如果它是OFF狀態(tài)的話(huà),在my.cnf中[mysqld]后添加配置后重啟mysql服務(wù)來(lái)開(kāi)啟。

# my.cnf文件
[mysqld]
log-bin=mysql-bin
server-id=1復(fù)制代碼
2.查看binlog日志

確保開(kāi)啟binlog日之后,可以通過(guò)命令來(lái)查看binlog日志狀態(tài)。

# 查看binlog日志的目錄show master status;復(fù)制代碼
# 查看binlog日志內(nèi)容show binlog events IN 'mysql-bin.000002';復(fù)制代碼
Log_name 表示binlog日志名稱(chēng)Pos 表示pos起始點(diǎn)Event_type 表示此次操作的類(lèi)型Server_id 表示機(jī)器id,由my.cnf中配置指定End_log_pos 表示pos結(jié)束點(diǎn)Info 表示具體語(yǔ)句
# 進(jìn)入存儲(chǔ)binlog日志的文件木了,可以通過(guò)這條命令查看詳情
 mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002;復(fù)制代碼
# 將binlog日志轉(zhuǎn)為txt導(dǎo)出
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002 > sql.txt復(fù)制代碼
3.恢復(fù)數(shù)據(jù)

binlog日志恢復(fù)數(shù)據(jù)的話(huà),常用的有命令行恢復(fù),或者是把binlog日志拷貝出來(lái),用讀取binlog的工具來(lái)轉(zhuǎn)成.sql文件,然后把里面的需要用到的sql都復(fù)制出來(lái)然后再跑一遍,這里主要講的是命令行恢復(fù)的方法。

命令行恢復(fù)主要是通過(guò)排查binlog日志,確認(rèn)要恢復(fù)的起始點(diǎn)和結(jié)束點(diǎn)后,輸入命令進(jìn)行恢復(fù)?;蛘呤穷A(yù)估一下自己誤操作失誤的時(shí)間,通過(guò)一個(gè)時(shí)間段來(lái)恢復(fù)數(shù)據(jù)。

# 通過(guò)起始點(diǎn)和結(jié)束點(diǎn)恢復(fù)    
mysqlbinlog --start-position="582" --stop-position="9414" mysql-bin.000002 | mysql -uroot -proot;復(fù)制代碼
# 通過(guò)起始時(shí)間和結(jié)束時(shí)間來(lái)恢復(fù),傳入的時(shí)間可以是一個(gè)yyyy-MM-dd HH:mm:ss 的時(shí)間格式,也可以是一個(gè)時(shí)間戳
mysqlbinlog --start-datetime="2020-9-1 8:25:04" --stop-datetime="2020-9-1 20:00:00" mysql-bin.000002 | mysql -uroot -proot復(fù)制代碼

可以看到,在輸入恢復(fù)命令后,我清空的數(shù)據(jù)庫(kù)數(shù)據(jù)又回來(lái)了。

4.問(wèn)題

binlog日志雖然可以恢復(fù)數(shù)據(jù),但是也存在問(wèn)題,當(dāng)binlog日志在不斷增大后,會(huì)進(jìn)行自動(dòng)刪除,那就導(dǎo)致已經(jīng)刪除的那部分日志的數(shù)據(jù)就恢復(fù)不了了。

不過(guò)binlog日志的大小和保存時(shí)間都是在可以在mysql中進(jìn)行設(shè)置的。不過(guò)還是推薦做好每日的備份,這樣可保萬(wàn)無(wú)一失。

# 設(shè)置文件大小,單位是字節(jié),下面換算是100Mset global max_binlog_size=104857600;

# 設(shè)置文件保存天數(shù),下面是保存7天,默認(rèn)值為0,表示"沒(méi)有自動(dòng)刪除"set global expire_logs_days = 7;復(fù)制代碼
每日備份

對(duì)于線(xiàn)上環(huán)境來(lái)說(shuō),做好每日備份和binlog一起用才是王道。線(xiàn)上一般都是部署在linux上的,所以這里就簡(jiǎn)單列一下linux的定時(shí)備份方法。

1.檢查是否安裝定時(shí)任務(wù),安裝crontab
yum install crontabs復(fù)制代碼
2.設(shè)置定時(shí)任務(wù)

/var/spool/cron/root 此文件為crontab定時(shí)任務(wù),可通過(guò)crontab -e或者直接修改此文件修改.

crontab -l查看定時(shí)任務(wù).

3.創(chuàng)建一個(gè)shell腳本

touch xxx.sh

mysqldump -uroot -p"密碼" 數(shù)據(jù)庫(kù)名 > /mysql/person_`date +%Y%m%d`.sql復(fù)制代碼
4.修改文件權(quán)限

chmod 777 xxx.sh

5.打開(kāi)定時(shí)任務(wù)文件

crontab -e

每天凌晨2點(diǎn)執(zhí)行
00 2 * * * /xxx.sh復(fù)制代碼

完結(jié)!

想了解更多編程學(xué)習(xí),敬請(qǐng)關(guān)注php培訓(xùn)欄目!


分享題目:悲傷的故事,當(dāng)不小心刪了線(xiàn)上的數(shù)據(jù)庫(kù)
網(wǎng)址分享:http://weahome.cn/article/cgejjd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部