MySQL數據庫運維之數據備份01

上篇文章介紹了MySQL主從複製中常見問題排查。在主從複製架構搭建完成以後,須要按期對數據進行備份,本篇文章開始就來介紹MySQL數據庫的數據備份與恢復,因爲備份及恢復內容較多,分多個小節介紹,本小節先來介紹MySQL數據庫備份的相關概念及mysqldump邏輯備份工具。

一、備份類型
(1)按照備份後的文件來劃分mysql

a、物理備份:直接備份數據庫文件,經常使用的有LVM邏輯卷備份,或者直接拷貝壓縮數據庫數據目錄
b、邏輯備份:使用備份工具將數據庫中的數據導出爲數據庫sql腳本或者數據文件

(2)按照是否中止數據庫服務劃分sql

a、冷備:備份期間須要中止數據庫服務,會形成不可讀不可寫
b、溫備:備份期間不須要中止數據庫服務,可是須要鎖表,故只能讀,不可寫
c、熱備:備份期間,數據庫服務徹底不受影響,可讀可寫

(3)按照備份的週期和備分內容劃分數據庫

a、徹底備份:一次性備份數據庫實例中的全部數據
b、增量備份:若是剛進行過一次徹底備份,則增量備份就指的是全備以後到當前時間點之間增長的數據;
            若是上次爲增量備份,則增量備份指的內容是上次增量以後到當前時間點之間增長的數據
c、差別備份:僅備份上次全量備份以後發生變化的數據,因爲比增量備份耗費的磁盤空間更多,故用的比較少

二、備份策略windows

(1)全量備份+增量備份
(2)全量備份+差別備份

三、備份工具介紹服務器

(1)mysqldump:基於MySQL客戶端的一個邏輯備份工具,可實現溫備,可使用-u,-p,-h等選項備份遠程數據庫上的數據
(2)mysqlhotcopy:基於MySQL客戶端的一個物理工具,只可冷備,備份過程當中需指定-u,-p,-h,-S等基本參數,這些基本參數的含義和mysql命令對應的參數含義相同
(3)lvm2:基於lvm的物理備份工具,因爲是經過對邏輯卷作快照來實現的,因此備份速度極快,可在瞬間完成,可粗略認爲是熱備
(4)xtrabackup:Percona旗下的一塊開源MySQL備份工具,能夠實如今線熱備和溫備

除此以外還有一些其餘備份工具,如mysqldumper,PhpMyAdmin等,感興趣可本身查資料學習。架構

四、mysqldump邏輯備份基本操做
(1)用法less

mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]

(2)經常使用參數選項OPTIONS函數

-A,--all-databases:該選項表示備份實例中的全部數據庫
-B,--databases:指定要備份的數據庫名稱,後面能夠同時跟多個數據庫
-E,--events:表示備份過程當中包括數據庫中的事件
-F,--flush-logs:表示備份完成以後刷新日誌,滾動日誌點,若是沒有開啓二進制日誌,使用該選項會提示錯誤
--flush-privileges:表示備份最新的權限表數據
--hex-blob:表示備份過程當中包括數據庫中的二進制數據(BINARY,VARBINARY,BLOG)
-x,--lock-all-tables:該選項的做用是在備份過程當中鎖定全部的表,一般用於備份MyISAM存儲引擎類型的表數據
--single-transaction:該選項表示備份過程當中保證數據的一致性,使用事務隔離狀態和一致性快照保證,目前只支持InnoDB類型的表
    注:--lock-all-tables選項和--single-transaction選項同時只能用一個
--master-data=N:該選項用來設置在導出的數據中是否包括對二進制日誌文件和日誌點的記錄,經常使用的值有:1和2
    1:表示在導出的sql文件中包括了"change master to master_log_file='',master_log_pos=N"內容,用來作快速主從複製
    2:表示在導出的sql文件中不包括"change master to master_log_file='',master_log_pos=N"內容
-t,--no-create-info:表示只備份數據,不備份表的建立信息
-d,--no-data:表示只備份表結構,不備份任何數據
-R,--routines:表示備份中同時備份存儲過程和函數
--tables:若是不須要備份整個庫,只須要備份部分表,可使用該選項指定
--triggers:表示備份中同時備份觸發器
-u:指定完成備份操做的用戶名
-p:指定完成備份操做的用戶密碼
-h:指定完成備份操做的域名或者ip地址
-P:指定完成備份操做的端口號。注意,是大寫的P

(3)示例
示例1:完成127.0.0.1服務器上3306數據庫實例的全量備份工具

[root@WB-BLOG ~]# mkdir -pv /backup/
[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -P3306 -S /tmp/mysql.sock --all-databases --routines --triggers --single-transaction --events --master-data=2 | gzip > /backup/full_db_`date +%F`.sql.gz
#檢查文件是否正常,這步很很很重要。有時候因爲一些緣由,備份文件生成了,可是打不開,因此務必檢查
[root@WB-BLOG ~]# gzip -d /backup/full_db_2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/full_db_2018-06-18.sql

示例2:使用root用戶備份127.0.0.1服務器上3306實例中的test庫,並完成壓縮放在/backup目錄下學習

[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -P3306 -S /tmp/mysql.sock --databases test --routines --triggers --single-transaction --events --master-data=2 | gzip > /backup/test-`date +%F`.sql.gz
[root@WB-BLOG ~]# ls /backup/test-2018-06-18.sql.gz 
#查看是否備份成功
[root@WB-BLOG ~]# gzip -d /backup/test-2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/test-2018-06-18.sql

示例3:備份127.0.0.1服務器上3306實例中的test庫中的user表

[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -P3306 -S /tmp/mysql.sock --databases test --tables user --routines --triggers --master-data=2 --events| gzip > /backup/Db-test_Tb-user_`date +%F`.sql.gz
[root@WB-BLOG ~]# ls /backup/Db-test_Tb-user_2018-06-18.sql.gz 
#查看是否備份成功
[root@WB-BLOG ~]# gzip -d /backup/Db-test_Tb-user_2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/Db-test_Tb-user_2018-06-18.sql

示例4:備份127.0.0.1服務器上3306實例中的mysql庫的表結構,不備份數據

[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -S /tmp/mysql.sock -P3306 --databases mysql --no-data --triggers --routines --master-data=2 --events| gzip > /backup/mysql_table_frame_`date +%F`.sql.gz
#查看是否備份成功
[root@WB-BLOG ~]# gzip -d /backup/mysql_table_frame_2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/mysql_table_frame_2018-06-18.sql

示例5:備份127.0.0.1服務器上3306實例中的test庫中全部表的數據,不備份表結構

[root@WB-BLOG ~]# mysqldump -uroot -proot -h127.0.0.1 -S /tmp/mysql.sock -P3306 --databases test --no-create-info --triggers --routines --master-data=2 --events| gzip > /backup/test_table_data_`date +%F`.sql.gz
#查看是否備份成功
[root@WB-BLOG ~]# gzip -d /backup/test_table_data_2018-06-18.sql.gz 
[root@WB-BLOG ~]# less /backup/test_table_data_2018-06-18.sql

實例6:在windows上遠程備份192.168.0.10服務器上的3306數據庫實例中的mysql數據庫
前提:須要在0.10服務器上授予windows主機的遠程鏈接權限,受權操做可查看以前文章,此處略

D:\SoftWare\mysql-5.7.21\bin>mysqldump -uroot -proot -h127.0.0.1 -P3306 --databases mysql > D:/remote_mysql.sql
#查看D盤根目錄,發現已經備份完成,查看備份文件也正常

至此,第一小節MySQL備份相關概念及mysqldump邏輯備份工具介紹完畢,下一篇文章將繼續介紹MySQL的物理備份工具Xtrabackup,歡迎評論轉發!

後續文章將更新在我的小站上,歡迎查看。

相關文章
相關標籤/搜索