亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

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

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

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

    前言

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

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

      提前說明:真的是我朋友,不是我。真的是我朋友,不是我。真的是我朋友,不是我。不過為了敘事方便,以下把“我朋友”簡稱為“我”。

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

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

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

    數(shù)據(jù)恢復(fù)

    1.開啟binlog日志

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

    show variables like 'log_%';復(fù)制代碼
    悲傷的故事,當(dāng)不小心刪了線上的數(shù)據(jù)庫

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

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

    2.查看binlog日志

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

    # 查看binlog日志的目錄show master status;復(fù)制代碼
    悲傷的故事,當(dāng)不小心刪了線上的數(shù)據(jù)庫
    # 查看binlog日志內(nèi)容show binlog events IN 'mysql-bin.000002';復(fù)制代碼
    悲傷的故事,當(dāng)不小心刪了線上的數(shù)據(jù)庫
    • Log_name 表示binlog日志名稱
    • Pos 表示pos起始點(diǎn)
    • Event_type 表示此次操作的類型
    • Server_id 表示機(jī)器id,由my.cnf中配置指定
    • End_log_pos 表示pos結(jié)束點(diǎn)
    • Info 表示具體語句
    悲傷的故事,當(dāng)不小心刪了線上的數(shù)據(jù)庫
    # 進(jìn)入存儲(chǔ)binlog日志的文件木了,可以通過這條命令查看詳情  mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002;復(fù)制代碼
    悲傷的故事,當(dāng)不小心刪了線上的數(shù)據(jù)庫
    # 將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ù)的話,常用的有命令行恢復(fù),或者是把binlog日志拷貝出來,用讀取binlog的工具來轉(zhuǎn)成.sql文件,然后把里面的需要用到的sql都復(fù)制出來然后再跑一遍,這里主要講的是命令行恢復(fù)的方法。

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

    # 通過起始點(diǎn)和結(jié)束點(diǎn)恢復(fù)     mysqlbinlog --start-position="582" --stop-position="9414" mysql-bin.000002 | mysql -uroot -proot;復(fù)制代碼
    # 通過起始時(shí)間和結(jié)束時(shí)間來恢復(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ù)制代碼
    悲傷的故事,當(dāng)不小心刪了線上的數(shù)據(jù)庫
    悲傷的故事,當(dāng)不小心刪了線上的數(shù)據(jù)庫

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

    4.問題

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

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

    # 設(shè)置文件大小,單位是字節(jié),下面換算是100Mset global max_binlog_size=104857600;  # 設(shè)置文件保存天數(shù),下面是保存7天,默認(rèn)值為0,表示"沒有自動(dòng)刪除"set global expire_logs_days = 7;復(fù)制代碼

    每日備份

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

    1.檢查是否安裝定時(shí)任務(wù),安裝crontab

    yum install crontabs復(fù)制代碼

    2.設(shè)置定時(shí)任務(wù)

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

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

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

    touch xxx.sh

    mysqldump -uroot -p"密碼" 數(shù)據(jù)庫名 > /mysql/person_`date +%Y%m%d`.sql復(fù)制代碼

    4.修改文件權(quán)限

    chmod 777 xxx.sh

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

    crontab -e

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

    完結(jié)!

    想了解

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)