本文目錄一覽:
mysql資料庫怎樣用日誌恢複數據sql語句
要想從二進位日誌恢複數據,你需要知道當前二進位日誌文件的路徑和文件名。一般可以從選項文件(即my.cnf or my.ini,取決於你的系統)中找到路徑。如果未包含在選項文件中,當伺服器啟動時,可以在命令行中以選項的形式給出。啟用二進位日誌的選項為– log-bin。要想確定當前的二進位日誌文件的文件名,輸入下面的MySQL語句:
SHOW BINLOG EVENTS /G
你還可以從命令行輸入下面的內容:
mysql –user=root -pmy_pwd -e ‘SHOW BINLOG EVENTS /G’
將密碼my_pwd替換為伺服器的root密碼。
1. 指定恢復時間
對於MySQL 4.1.4,可以在mysqlbinlog語句中通過–start-date和–stop-date選項指定DATETIME格式的起止時間。舉例說 明,假設在今天上午10:00(今天是2006年4月20日),執行SQL語句來刪除一個大表。要想恢復表和數據,你可以恢復前晚上的備份,並輸入:
mysqlbinlog –stop-date=”2005-04-20 9:59:59″ /var/log/mysql/bin.123456 /
mysql -u root -pmypwd
該命令將恢復截止到在–stop-date選項中以DATETIME格式給出的日期和時間的所有數據。如果你沒有檢測到幾個小時後輸入的錯誤的SQL語句,可能你想要恢復後面發生的活動。根據這些,你可以用起使日期和時間再次運行mysqlbinlog:
mysqlbinlog –start-date=”2005-04-20 10:01:00″ /var/log/mysql/bin.123456 /
mysql -u root -pmypwd /
在該行中,從上午10:01登錄的SQL語句將運行。組合執行前夜的轉儲文件和mysqlbinlog的兩行可以將所有數據恢復到上午10:00前一秒鐘。你應檢查日誌以確保時間確切。
linux 怎樣恢復mysql資料庫日誌
一、binlog 介紹
伺服器的二進位日誌記錄著該資料庫的所有增刪改的操作日誌(前提是要在自己的伺服器上開啟binlog),還包括了這些操作的執行時間。為了顯示這些二進位內容,我們可以使用mysqlbinlog命令來查看。
用途1:主從同步
用途2:恢復資料庫(也是線上出現一次資料庫文件丟失後,才對這個有所了解並學習的)
mysqlbinlog命令用法:shell mysqlbinlog [options] log_file …
1)mysqlbinlog 選項示例
常見的選項有以下幾個:
–start-datetime
從二進位日誌中讀取指定等於時間戳或者晚於本地計算機的時間。取值如:=”1470733768″ 或者=”2016-08-09 5:09:28″
示例:
[root@hcloud ~]# mysqlbinlog –start-datetime=”2016-08-09 5:05:27″ /var/lib/mysql/mysql-bin.000001
–stop-datetime
從二進位日誌中讀取指定小於時間戳或者等於本地計算機的時間取值和上述一樣
–start-position
從二進位日誌中讀取指定position 事件位置作為開始。取值:=”2698″
示例:
[root@hcloud ~]# mysqlbinlog –start-position=”2698″ /var/lib/mysql/mysql-bin.000001
–stop-position
從二進位日誌中讀取指定position 事件位置作為事件截至。取值:=”2698″
二、環境準備以及備份恢復
1) 安裝好mysql後,檢查開啟binlog
mysql SHOW BINARY LOGS;
ERROR 1381 (HY000): You are not using binary logging
:上面提示說明沒有伺服器開啟binlog
修改/etc/my.cnf
在mysqld選項中添加一行內容如下:
log-bin=mysql-bin
默認如果不給值的話,log-bin 的會
MySQL的備份與還原,非常規備份,全量備份,增量備份
1:官方百萬級別的測試資料庫:
官方測試資料庫github網址:
下載到目錄,解壓即可,運行命令:
2:自己創建簡單測試資料庫:
快速隨機生成測試語言的網站:
選擇sql和想生成的欄位,點擊生成Generate!生成即可。
在MySQL輸入生成的語句即可。
3:測試備份還原時用到的命令
刪庫跑路測試(先備份好)
還原後查詢庫的表數據是否完整。
採用複製整個數據存放目錄
1:查看資料庫數據存放位置
有兩種方法:
1):在資料庫中用命令 show variables like ‘datadir’; 查看
2):在配置文件中查看,配置了 datadir 目錄的可查看。沒有配置的默認為 /var/lib/mysql/ 位置
Linux中查看配置文件
2:複製目錄或者目錄下某個資料庫名
3:還原時直接複製文件夾到資料庫目錄即可
mysqldump又可叫做全量備份。
參數 –databases 同 -B ,單獨一個庫,也可省略。
1、備份命令mysqldump格式
格式:mysqldump -h主機名 -P埠 -u用戶名 -p密碼 database 資料庫名 文件名.sql
備份testDatabase資料庫
2、備份MySQL資料庫為帶刪除表的格式
備份MySQL資料庫為帶刪除表的格式,能夠讓該備份覆蓋已有資料庫而不需要手動刪除原有資料庫。
3、直接將MySQL資料庫壓縮備份
備份並壓縮
4、備份MySQL資料庫某個(些)表
備份testDatabase中的myTable表,不需要用參數 –databases 或者 -B
5、同時備份多個MySQL資料庫
同時備份testDatabase和 employees兩個庫
6、備份伺服器上所有資料庫
參數 –all-databases 同 -A
7、還原MySQL資料庫的命令
1) 不指定數據名還原,默認生成原資料庫名稱,還原所有資料庫。
2) 指定數據名還原,還原指定單個資料庫,需在資料庫種預先創建一個testDatabase名稱。
3) 還原壓縮的MySQL資料庫
4) 進入資料庫用source導入
增量備份是針對於資料庫的bin-log日誌進行備份的,增量備份是在全量的基礎上進行操作的。增量備份主要是靠mysql記錄的bin-log日誌。
1:查看是否開啟bin-log日誌
進入mysql輸入命令可查看。
顯示如下為開啟狀態,日誌文件在/var/lib/mysql/以binlog.00001的格式保存。
如未開啟,需要在配置文件種配置
2:查看目前使用的bin-log日誌文件
進入mysql查看命令。
顯示如下,目前使用的是binlog.000022文件,所有操作都記錄在此文件。
查看當前testDatabase的表myTable數據如下,
3:刷新日誌,使用新的日誌文件(備份)
在命令端執行命令
日誌文件從 binlog.000022 變為 binlog.000023
這時相當與已經備份成功,備份文件即為上次的binlog.000022日誌文件。
4:刪除數量,從日誌還原數據
1) 刪除ABC行
查詢以及沒有ABC行列。
2) 恢複數據ABC行
退出mysql,在命令端用mysqlbinlog命令恢復到binlog.000022日誌狀態。
進入資料庫再次查看數據,ABC已經恢復。
增量備份完成。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254742.html