久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

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

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

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

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

      前言

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

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

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

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

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

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

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

      1.開啟binlog日志

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

      show variables like 'log_%';復(fù)制代碼
      悲傷的故事,當不小心刪了線上的數(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ù)制代碼
      悲傷的故事,當不小心刪了線上的數(shù)據(jù)庫
      # 查看binlog日志內(nèi)容show binlog events IN 'mysql-bin.000002';復(fù)制代碼
      悲傷的故事,當不小心刪了線上的數(shù)據(jù)庫
      • Log_name 表示binlog日志名稱
      • Pos 表示pos起始點
      • Event_type 表示此次操作的類型
      • Server_id 表示機器id,由my.cnf中配置指定
      • End_log_pos 表示pos結(jié)束點
      • Info 表示具體語句
      悲傷的故事,當不小心刪了線上的數(shù)據(jù)庫
      # 進入存儲binlog日志的文件木了,可以通過這條命令查看詳情  mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002;復(fù)制代碼
      悲傷的故事,當不小心刪了線上的數(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日志,確認要恢復(fù)的起始點和結(jié)束點后,輸入命令進行恢復(fù)。或者是預(yù)估一下自己誤操作失誤的時間,通過一個時間段來恢復(fù)數(shù)據(jù)。

      # 通過起始點和結(jié)束點恢復(fù)     mysqlbinlog --start-position="582" --stop-position="9414" mysql-bin.000002 | mysql -uroot -proot;復(fù)制代碼
      # 通過起始時間和結(jié)束時間來恢復(fù),傳入的時間可以是一個yyyy-MM-dd HH:mm:ss 的時間格式,也可以是一個時間戳 mysqlbinlog --start-datetime="2020-9-1 8:25:04" --stop-datetime="2020-9-1 20:00:00" mysql-bin.000002 | mysql -uroot -proot復(fù)制代碼
      悲傷的故事,當不小心刪了線上的數(shù)據(jù)庫
      悲傷的故事,當不小心刪了線上的數(shù)據(jù)庫

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

      4.問題

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

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

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

      每日備份

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

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

      yum install crontabs復(fù)制代碼

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

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

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

      3.創(chuàng)建一個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.打開定時任務(wù)文件

      crontab -e

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

      完結(jié)!

      想了解

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