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...