本文來源:
本文僅模擬使用mysqldump和log-bin二進位日誌進行簡單測試,僅作為個人學習筆記,可能離實際應用還有很大差距,僅參考。
開啟MySQL的bin-log二進位日誌
模擬還原是需要mysqldump出來的檔案和log-bin,因此需要開始log- bin二進制日誌。
mysql5.7.18在開啟二進位日誌的時候除了要設定log-bin的位置之外,另外需要設定一個server-id,MySQL之前的版本應該不需要這個設定。
吐槽一下開源軟體,基本上每個版本都有一些跟之前版本不一樣的地方,網上查資料往往不好使,不同版本的情況下不少東西都是不一樣的,這一點需要注意。
重啟之後,查詢log_bin相關的變數
#
#mysqldump備份(匯出)資料的基本使用量
mysqldump指令參數相當多,簡單記錄常用的指令,以及利用mysqldump備份(嚴格說是匯出資料)和二進位日誌log-bin進行資料庫還原作業。
-- 備份testdb整個資料庫,-l 表示在所有表上加一個讀鎖,-F (F要大寫,小寫不報錯單頁無效)表示滾動產生一個新的日誌文件
mysqldump -u root -p -l -F -h localhost testdb > usr/local/mysqlbak/test20170607_data.sql
#備份出來的檔案就是create table和insert into table的腳本
-- 備份testdb資料庫中的test_table1 test_table2兩張表,加上--no-create-info就意味著這個備份出來的文件不含create table的腳本,只是insert into table的資訊
mysqldump -uroot -p -h localhost testdb test_table1 test_table2 --no-create-info> usr/local/mysqlbak/test20170606_1. sql
-- 備份testdb資料庫中的test2表中的一部分數據,也就是備份test_table1表中符合id<1000的資料
mysqldump -uroot -p -h localhost testdb test_table1 - -where "id<1000" > usr/local/mysqlbak/test20170606_2.sql
更多mysqldump的參數,參考:
#另外,mysql
更多mysqldump的參數,參考:
#另外,mysql log-bin的更換策略:
使用索引來循環檔案,在下列條件將循環至下一個索引
2。伺服器被更新
3。日誌到達了最大日誌長度 max_binlog_size4。日誌被刷新mysql> flush logs;
#利用mysqldump備份的檔案和log-bin二進位日誌進行還原# 首先在以表中有資料的情況下進行備份
執行mysqldump -u root -p -l -F -h localhost testdb --master-data=2
> usr/local/mysqlbak/test20170607_data.sql
這裡加了一個--master-data=2的選項,目的是在備份檔案中備註出來目前的檔案log_bin的文件,
有了--master-data=2的選項,才知道mysqldump備份時候的log_file位置
然後繼續往表中插入10條資料
接著模擬在某個時間點誤刪資料的情況,truncate測試表,測試表此時為空
#首先利用mysqldump出來的檔案還原資料庫,mysqldump出來的檔案備份是100行時候的資料
因為備份檔案中備份的時候的資料是100行,這裡還原之後是100行,沒有問題。
接著接著利用log-bin依照時間點還原,上面說了,mysqldump出來的檔案記錄了日誌刷新之後的log-bin的檔案名稱,
那麼就可以判斷日誌是否發生了滾動,如果沒有滾動,就按照下圖最新的log-bin進行按照時間點進行還原。
進行一次mysqldump備份還原
mysql -u root -p testdb
--stop-datetime="2017-6-7 21:45:00" /var/lib/mysql/mysql-bin.000022 | mysql -u root -p testdb 然後資料就回來了。
總結:
本文僅以一個簡單的範例來模式資料庫的還原操作, mysqldump備份模式比較簡單粗暴,只是將資料匯出為insert腳本,在還原較大資料時候會有效能問題,可能mysqldump就不適合了,就需要更有效率的xtrabackup來做備份還原了。
以上是MySQL中基於mysqldump和二進位日誌log-bin進行邏輯備份以及基於時間點的還原的詳細內容。更多資訊請關注PHP中文網其他相關文章!