資料備份型別簡介
一.簡介
資料可以重複匯入,每次都是匯入的那個資料,如果資料不一致,會以匯入的資料覆蓋現在有的。
完全備份 備份所有資料(整個/整個庫/整個表)
a.只能把資料恢復到備份之前的狀態,新產生的資料無法恢復
b.備份資料和恢復資料都要加寫鎖
差異備份 備份完全備份後新產生的 從完全開始疊加
增量備份 備份上一次備份後新產生的 只增加新的
二.物理備份
直接備份mysql的data或者儲存檔案。
檢視儲存檔案所在位置
show global variables like "%datadir%";
備份後直接恢復即可
tar -zcvf mysqlbak.tar.gz /var/lib/mysql
三.匯出查詢結果
檢視預設使用目錄,一般為空
show variables like "secure_file_priv";
配置資料目錄
[mysqld]下新增
secure_file_priv="/data"
匯出查詢結果,只能到/data這個預設目錄下面
select * from mysql.user into outfile "/data/one.txt";
四.邏輯備份
開啟binlog日誌
開啟binlog日誌
vim /etc/my.cnf
log_bin server_id=20 #區域網內不能重複,1-255
檢視binlog日誌,將從開啟binlog日誌時開始記錄
cd /var/lib/mysql
mysqlbinlog xx.000001
備份binlog日誌
1.首先做一次完整備份:
這時候就會得到一個全備檔案test.sql
mysqldump test>test.sql
在sql檔案中我們會看到:是指備份後所有的更改將會儲存到bin-log.000002二進位制檔案中。
cat test.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;
2.在test庫的t_student表中增加兩條記錄,然後執行flush logs
3.再在test庫中的a表中增加兩條記錄,然後誤刪除t_student表和a表。a中增加記錄的操作和刪除表a和t_student的操作都記錄在bin-log.000003中。
恢復binlog日誌
1.首先匯入全備資料
mysql test < test.sql;
2.恢復整個bin-log.000002
mysqlbinlog bin-log.000002 |mysql test -uroot -p123456