flush logs;(重新開始一個二進制日志,但不洗掉原先的二進制日志)
purge binary logs to ‘mysql-bin.000003’;(purge mysql自帶工具與rm區別)
reset master ;洗掉所有二進制檔案,并且重頭開始計數(生產環境初始化)
備份注意點:
1.能容忍的最多丟失資料+鎖表多久
2.備份資料有哪些:資料+innodb的事務日志(同資料一起備份來保證資料的一致性,一般在mysql正常停止的
程序中不會有問題),二進制日志(選備),資料庫的組態檔,程式代碼(存盤程序,這些都存在mysql這個庫里,比如函式在mysql.proc當中)
3備份服務器負載,備份時間(業務不繁忙的時間段)
還原要點:
1.還原測驗,用于測驗備份的可用性
2.需要恢復哪些資料
3.注意還原的資料庫版本是否和原來的一致
4.還原資料要在多少時間內完成(還原都是不能訪問資料庫,只能離線恢復)
備份型別:
1.完全備份:整個資料集
部分備份:只備份資料子集部分庫、表
完全備份(一周一次,周日),增量備份、差異備份,后兩者配合二進制日志
二進制日志檔案不應該與資料檔案放在同一磁盤里面,因為二進制檔案從某一角度來說就是被備份
冷備份:no read,no write
(停止服務,tar czvf all.bak /var/lib/mysql ;tar czvf logbin.bak /data/logbin(二進制備份);/etc/my.cnf)
注意還原的資料庫版本是否和原來的一致,還原后檔案的屬性,所有者所屬組
冷備份原理:拷貝檔案,速度比較快;也就是物理備份,克隆磁盤
溫備份:no write
熱備份: writeable/readable(依靠第三隔離級別,可重復讀,在一個事務未提交時,中間程序其他人不可見,默認的)
myisam:支持溫備,熱備不支持,因為不支持事務,否則導致資料一致性的問題
innodb:都支持
mysqldump:
mysqldump -A >all.sql(不備份 infomaton_schema,perfomance_schema) -A :備份所有資料庫(mysql,存盤程序)
mysqldump -B db_name(包括create database 陳述句,-B十分有用)
mysqldump -A --master-data=2 >all.sql //假設pos=710
資料庫資料恢復:
1.skip-networking服務器配置,只允許自己訪問
2.臨時關閉二進制,防止回復的時候產生大量二進制 set sql_log_bin=off
3.增量合并
mysqlbinlog --start-postion=710 mysql-bin.00003 >> /data/inc.sql
mysqlbinlog mysql-bin.00004 >> /data/inc.sql
mysqlbinlog mysql-bin.00005 >> /data/inc.sql
4.先還原完整備份,再還原inc.sql
5.set sql_log_bin=on
6.設定mysql允許別人訪問
因此mysqldump實作增量備份條件:啟用二進制日志
上述是模擬物理損壞,比如磁盤;如果有人為的刪表,需要編輯inc.sql,把drop等記錄刪掉,再吧inc.sql還原
備份時做日志滾動(推薦) : -F----->flush log(好處,使得備份前后容易區分新舊二進制檔案;也有利于增量恢復
,因為全量恢復使用的是全量備份,增量恢復開始就是那個新產生的二進制日志檔案)
mysqldump -F -A --single-transaction --master-data=2 >/data/all.sql
-d 只備份表結構
-t 只備份資料,不備份表結構
-f ,–force 忽略SQL錯誤,繼續執行sql(主鍵沖突資料重復而導致sql無法匯入)
-q (mysqldump作為邏輯備份,其實在執行select,-q不使用查詢快取,加快備份速度)
myisam備份(不支持熱備,因此該存盤引擎很少使用了)
-x:加全域鎖
innodb(支持熱備)----DML語言隔離,DDL無法隔離(drop/rename table,不過業務程序中很少有DDL)
–single-transaction(推薦),-single-transaction引數的作用,設定事務的隔離級別為可重復讀,
即REPEATABLE READ,這樣能保證在一個事務中所有相同的查詢讀取到同樣的資料,
也就大概保證了在dump期間,如果其他innodb引擎的執行緒修改了表的資料并提交,
對該dump執行緒的資料并無影響,在這期間不會鎖表,
理解:–single-transaction:mysqldump可以認為是在select,那么一個select可以認為是一個事務,假設
這個select要執行1min,在同一個select(事務)里面可以重復讀,來保證資料的一致性
innodb建議備份策略:
mysqldump -uroot -A -F -E -R --single-transaction --master-date=2 --flush-privileges --triggers
–default-character-set=utf-8(和原先的保持一致) --hex-blob >$file.sql
xtrabackup:
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/240109.html
標籤:其他
上一篇:MYSQL查詢時間段資料
