搜尋
首頁資料庫mysql教程悲傷的故事,當不小心刪了線上的資料庫

悲傷的故事,當不小心刪了線上的資料庫

相關學習推薦:mysql教學

#前言

  由於最近開學季,我司又做的是高校相關的業務,所以比較忙,都沒有什麼時間來寫文章,人一旦太忙的話就容易忙中出錯。我呢就在前幾天,不是,是我有個朋友在前幾天去操作線上的資料庫時,差點表演了一波刪庫跑路。

悲傷的故事,當不小心刪了線上的資料庫

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

  事情是這樣的,我在比較部分錶結構時發現這個函式庫和其他函式庫的表結構差的比較多,所以以為這個環境是沒有在使用的環境,就直接對這幾張表進行了一個覆蓋操作,剛好這幾張表還是和學生錢包相關的,然後到晚上10點多公司的前方駐校人員在群組裡反饋說是為什麼錢包裡錢變成0.0了,我一看到這個就直接嚇尿了,想著是不是該跑路了。

悲傷的故事,當不小心刪了線上的資料庫

  不過幸好看過一些資料庫復原的方案,還是略知一二。

資料恢復

1.開啟binlog日誌

我使用的binlog日誌來恢復數據,要用binlog肯定首先得確保binlog日誌是開啟狀態的,可以用命令來查看。

show variables like 'log_%';复制代码
悲傷的故事,當不小心刪了線上的資料庫

可以看到它是ON狀態的,表示已開啟,如果它是OFF狀態的話,在my.cnf中 [mysqld]後來新增配置後重新啟動mysql服務來開啟。

# my.cnf文件
[mysqld]
log-bin=mysql-bin
server-id=1复制代码

2.查看binlog日誌

確保開啟binlog日之後,可以透過指令來查看binlog日誌狀態。

# 查看binlog日志的目录show master status;复制代码
悲傷的故事,當不小心刪了線上的資料庫
# 查看binlog日志内容show binlog events IN 'mysql-bin.000002';复制代码
悲傷的故事,當不小心刪了線上的資料庫
  • Log_name 表示binlog日誌名稱
  • Pos 表示pos起始點
  • #Event_type 表示此動作的類型
  • Server_id 表示機器id,由my.cnf中設定指定
  • End_log_pos 表示pos結束點
  • Info 表示具體語句
悲傷的故事,當不小心刪了線上的資料庫
# 进入存储binlog日志的文件木了,可以通过这条命令查看详情
 mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002;复制代码
悲傷的故事,當不小心刪了線上的資料庫
# 将binlog日志转为txt导出
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002 > sql.txt复制代码

3.恢復資料

binlog日誌恢復資料的話,常用的有命令列恢復,或者是把binlog日誌拷貝出來,用讀取binlog的工具來轉成.sql文件,然後把裡面的需要用到的sql都複製出來然後再跑一遍,這裡主要講的是命令列恢復的方法。

命令列復原主要是透過排查binlog日誌,確認要復原的起始點和結束點後,輸入指令進行復原。或者是預估一下自己誤操作失誤的時間,透過一個時間段來恢復資料。

# 通过起始点和结束点恢复    
mysqlbinlog --start-position="582" --stop-position="9414" mysql-bin.000002 | mysql -uroot -proot;复制代码
# 通过起始时间和结束时间来恢复,传入的时间可以是一个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复制代码
悲傷的故事,當不小心刪了線上的資料庫
悲傷的故事,當不小心刪了線上的資料庫

#可以看到,在輸入復原指令後,我清空的資料庫資料又回來了。

4.問題

binlog日誌雖然可以恢復數據,但是也存在問題,當binlog日誌在不斷增大後,會進行自動刪除,那就導致已經刪除的那部分日誌的資料就恢復不了了。

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

# 设置文件大小,单位是字节,下面换算是100Mset global max_binlog_size=104857600;

# 设置文件保存天数,下面是保存7天,默认值为0,表示"没有自动删除"set global expire_logs_days = 7;复制代码

每日备份

对于线上环境来说,做好每日备份和binlog一起用才是王道。线上一般都是部署在linux上的,所以这里就简单列一下linux的定时备份方法。

1.检查是否安装定时任务,安装crontab

yum install crontabs复制代码

2.设置定时任务

/var/spool/cron/root  此文件为crontab定时任务,可通过crontab -e或者直接修改此文件修改.

crontab -l查看定时任务.

3.创建一个shell脚本

touch xxx.sh

mysqldump -uroot -p"密码" 数据库名 > /mysql/person_`date +%Y%m%d`.sql复制代码

4.修改文件权限

chmod 777 xxx.sh

5.打开定时任务文件

crontab -e

每天凌晨2点执行
00 2 * * * /xxx.sh复制代码

完结!

想了解更多编程学习,敬请关注php培训栏目!

以上是悲傷的故事,當不小心刪了線上的資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:juejin。如有侵權,請聯絡admin@php.cn刪除
您什麼時候應該使用複合索引與多個單列索引?您什麼時候應該使用複合索引與多個單列索引?Apr 11, 2025 am 12:06 AM

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)Apr 10, 2025 am 09:36 AM

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL:開發人員的基本技能MySQL和SQL:開發人員的基本技能Apr 10, 2025 am 09:30 AM

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

描述MySQL異步主奴隸複製過程。描述MySQL異步主奴隸複製過程。Apr 10, 2025 am 09:30 AM

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

mysql:簡單的概念,用於輕鬆學習mysql:簡單的概念,用於輕鬆學習Apr 10, 2025 am 09:29 AM

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL:數據庫的用戶友好介紹MySQL:數據庫的用戶友好介紹Apr 10, 2025 am 09:27 AM

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDB緩衝池如何工作,為什麼對性能至關重要?InnoDB緩衝池如何工作,為什麼對性能至關重要?Apr 09, 2025 am 12:12 AM

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL:初學者的數據管理易用性MySQL:初學者的數據管理易用性Apr 09, 2025 am 12:07 AM

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。