mysql備份與還原

2021-09-17 22:04:51 字數 3220 閱讀 5653

mysql備份與還原

備份:副本,備份的目的是為了防止資料丟失或者資料庫出現問題時,進行恢復(備份存放在另乙個盤)

備份型別:

熱備份、溫備份和冷備份

熱備份:讀寫不受影響

溫備份:僅可以執行讀操作

冷備份:離線備份,讀寫操作均中止

物理備份與邏輯備份

物理備份:複製資料檔案

邏輯備份:將資料匯出至文字檔案中

完全備份、增量備份和差異備份

完全備份:備份全部資料

增量備份:僅備份上次完全備份或增量備份以後的變化的資料

差異備份:僅備份上次完全備份以後的變化的資料

還原:備份什麼:以mysql為例

資料、配置檔案、二進位制日誌(用於即時點還原)、事務日誌

熱備份:

myisam:溫備份

innodb:xtrabackup,mysqldump

mysql

物理備份:速度快

邏輯備份:速度慢、丟失浮點數精度,方便使用文字處理工具直接對其處理、可移植能力強

備份策略:完全+增量;完全+差異

mysql備份工具

mysqldump:邏輯備份工具,myisam(溫)、innodb(熱)

mysqlhotcopy:物理備份工具、溫備份

檔案系統工具

cp:冷備    

lv:邏輯卷的快照功能,幾乎熱備

mysql>flush tables;

mysql>lock tables

一、mysqldump工具使用    

mysqldump直接備份與還原    (mysqldump db_name [tb1] [tb2]可以備份單個資料庫或表)

[root@****ouji ~]# mysqldump -uroot -p students >students.sql    

[root@****ouji ~]# mysqldump -uroot -p --master-data=2 --flush-logs blog wp_options --single-transaction >/boot/wp_options.sql        #備份指定庫某張表

[root@****ouji ~]# ls

jiaowu.sql  mysql-community-5.7.21-1.el7.src.rpm  rpmbuild  sh  sources  students.sql

[root@****ouji ~]# mysql test < students.sql 

[root@****ouji ~]# mysql -uroot -p 庫名< students.sql 

問:如果備份時,有其它使用者在進行寫時,會帶來什麼問題?

會帶時間點的不一致

因此,要進行加鎖,並且進行二進行日誌滾動(滾動日誌,備份時才知道從什麼時候開始時行)

--master-data=

0:不記錄二進位制日誌檔案及路位置

1:以change master to 的方式記錄位置,可用於恢復後直接啟動從服務

2:以change master to 的方式記錄位置,但預設是注釋的

--lock-all-tables:鎖定所有表

--flush-logs:執行日誌flush

如果指定庫中的表型別均為innodb,可使用--single-transaction啟動熱備

備份多個庫

--all-databases:備份所有庫

--databases db_name,db_name,...:備份指定庫

--events

--routines

--triggers

備份策略:每週完全+每天增量

完全備份:mysqldump

增量符合:備份二進位制日誌檔案(先執行flush logs進行日誌滾動)

[root@****ouji data]# mysqldump -uroot -p --master-data=2 --flush-logs --all-databases --lock-all-tables > /boot/alldata.sql    

enter password: 

[root@****ouji data]# mysqlbinlog mysql-bin.000001 > /boot/1.sql      #二進位制日誌備份

如果庫中所有的表都是innodb引擎,則可以進行熱備份

show table status;      #檢視庫中所有表的資訊(包括表的所用引擎)

[root@****ouji ~]# mysqldump -uroot -p --master-data=2 --flush-logs --databases blog --single-transaction >/boot/blog.sql

#使用--single-transaction選項時,不需要再使用 --lock-all-tables來鎖定表,--single-transaction選項會自動進行鎖定,在備份時,儲存的檔案最好是有時間格式/boot/blog`date +%f%h%m%s`.sql

還原操作

[root@****ouji ****ouji]# mysql -uroot -p < blog.sql          #備份庫還原

二、基於lvm快照備份

前提,資料要在邏輯卷上,且邏輯卷所在的捲組必須有足夠的空間使用快照,.資料檔案和事物日誌要在同乙個卷上。

原理:lvm中snapshot通過「寫時複製」(copy on write) 來實現,即當乙個snapshot建立的時候,僅拷貝原始捲裡資料的元資料(meta-data);建立的時候,並不會有資料的物理拷貝,因此snapshot的建立幾乎是實時的,當原始卷上有寫操作執行時,snapshot跟蹤原始卷塊的改變,這個時候原始卷上將要改變的資料在改變之前被拷貝到snapshot預留的空間裡。

操作步驟:

通過另乙個終端,儲存二進位制日誌檔案及相關位置資訊

建立快照卷

釋放鎖

掛載快照卷,備份

刪除快照卷

增量備份二進位制日誌

還原:xtrabackup工具

xtrabackup 常用選項

注意事項,mysql5.7後xtrabackup工具得使用2.4版本及以上,mariadb10.3版本以上,不支援xtarbackup工具,可以使用mariabackup工具

xtrabackup使用參照

mysql備份與還原

假設mysql 安裝在c 盤,mysql資料庫的使用者名稱是root,密碼是123456,資料庫名是database name,在d 盤根目錄下面存放備份資料庫,備份資料庫名字為backup20070713.sql。備份資料庫 mysqldump uroot p123456 database nam...

mysql備份與還原

備份檔案 檔案開頭記錄了mysql的版本 備份的主機名和資料庫名。檔案中,以 開頭的的都是sql語言的注釋 不會被執行 但是,以 40101 等形式開頭 的是與mysql有關的注釋。40101 是mysql資料庫的版本號,這裡就表示mysql 4.1.1 如果還原資料時,mysql的版本比4.1.1...

mysql備份與還原

工作中用到了mysql,在這裡做個備忘記錄 1 備份 匯出整個資料庫database mysqldump u root p database dump.sql 只匯出表結構 mysqldump u root p d database dump.sql 匯出單個資料表table mysqldump a...