(1).Mysql備份類型mysql
1)按照備份時對數據庫的影響分爲sql
Hot backup(熱備):也叫在線備份。指在數據庫運行中直接備份,對正在運行的數據庫沒有任何影響。數據庫
Cold backup(冷備):也叫離線備份。指在數據庫中止的狀況下備份。緩存
Warm backup(溫備):在數據庫運行時備份,會加一個全局鎖以保證數據的一致性,會對當前數據庫的操做有影響。工具
2)按照備份後的文件內容分爲spa
邏輯備份:指備份後的文件內容是可讀的,一般爲文本文件,內容通常是SQL語句或表內的實際數據(mysqldump和select * into outfile),通常適用於數據庫的升級和遷移,還原時間較長。日誌
裸文件備份:也叫物理備份。拷貝數據庫的物理文件,數據庫既能夠處於運行狀態(mysqlhotcopy、ibbackup、xtrabackup一類工具),也能夠處於中止狀態,還原時間較短。blog
3)按照備份數據庫的內容分爲資源
徹底備份:對數據庫進行完整的備份。同步
增量備份:在上一次完整備份的基礎上,對更新的數據進行備份(xtrabackup)
日誌備份:二進制日誌備份,主從同步。
(2).mysqldump
mysqldump是邏輯備份工具,支持MyISAM和InnoDB引擎。數據庫運行時,MyISAM引擎只支持溫備,InnoDB支持熱備和溫備。
1)導出數據
導出全部數據庫
[root@youxi1 ~]# mysqldump -uroot -p123456 -A > all.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@youxi1 ~]# mysqldump -uroot -p123456 --all-databases > all2.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@youxi1 ~]# ll all.sql all2.sql -rw-r--r-- 1 root root 773437 6月 14 13:52 all2.sql -rw-r--r-- 1 root root 773437 6月 14 13:51 all.sql
導出指定數據庫裏的全部數據表
[root@youxi1 ~]# mysqldump -uroot -p123456 mysql > mysql.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@youxi1 ~]# ll mysql.sql -rw-r--r-- 1 root root 1089455 6月 14 13:53 mysql.sql
導出指定數據庫裏的指定數據表
[root@youxi1 ~]# mysqldump -uroot -p123456 test_db user_tb > user.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@youxi1 ~]# ll user.sql -rw-r--r-- 1 root root 1883 6月 14 13:54 user.sql
只導出指定數據庫裏的全部數據表的表結構
[root@youxi1 ~]# mysqldump -uroot -p123456 -d test_db > test_db_table.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@youxi1 ~]# ll test_db_table.sql -rw-r--r-- 1 root root 1618 6月 14 13:56 test_db_table.sql
只導出數據庫裏的全部數據表的全部數據
[root@youxi1 ~]# mysqldump -uroot -p123456 -t test_db > test_db_data.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@youxi1 ~]# ll test_db_data.sql -rw-r--r-- 1 root root 1513 6月 14 13:57 test_db_data.sql
導出指定數據庫的全部內容
[root@youxi1 ~]# mysqldump -uroot -p123456 -B test_db > test_db.sql mysqldump: [Warning] Using a password on the command line interface can be insecure. [root@youxi1 ~]# ll test_db.sql -rw-r--r-- 1 root root 2029 6月 14 14:02 test_db.sql
注意:以上幾個實例,只有-A、--all-databases和-B選項有建立數據庫,並使用數據庫的語句。這和後面的導入數據息息相關。
2)導入數據
若是使用-A、--all-databases和-B選項導出的數據庫可使用mysql直接導入
mysql -uroot -p123456 < all.sql
若是不是則須要進入到mysql內部,選擇數據庫才能導入數據;或者使用mysql時指定數據庫
>use mysql >source mysql.sql mysql -uroot -p123456 mysql < mysql.sql
(3).mysqlhotcopy
mysql5.7已經沒有這個命令了,多用於mysql5.5以前。mysqlhotcopy使用lock tables、flush tables和cp或scp來快速備份數據庫或單個表,屬於裸文件備份(物理備份),只能用於MyISAM引擎的數據庫。本質是使用鎖表語句,而後cp或scp。
可使用yum命令安裝
yum -y install perl-DBD*;
1)備份
備份一個數據庫到目標目錄
mysqlhotcopy -u [用戶名] -p [密碼] [數據庫名] [目標目錄]
備份多個數據庫到目標目錄
mysqlhotcopy -u [用戶名] -p [密碼] [數據庫名1 數據庫名2...] [目標目錄]
備份數據庫中的某個表到指定目錄
mysqlhotcopy -u [用戶名] -p [密碼] [數據庫名]./[表名]/ [目標目錄]
2)還原
在Linux中Mysql數據庫都是以物理文件存在的,數據庫對應的是目錄。若是想要還原只要將原來的文件拷貝回原目錄便可。
單個數據庫備份還原方式:若是文件全部這和所屬組不是mysql,請使用chown修改。
cp -ra [目標目錄] /var/lib/mysql/[數據庫名]/
(4).mysqldump和mysqlhotcopy比較
1.mysqldump 是採用SQL級別的備份機制,它將數據表導成 SQL 腳本文件,數據庫大時,佔用系統資源較多,支持經常使用的MyISAM,innodb引擎;mysqlhotcopy只是簡單的緩存寫入和文件複製的過程,佔用資源和備份速度比mysqldump快不少不少,特別適合大的數據庫,但須要注意的是:mysqlhotcopy只支持MyISAM 引擎。
2.mysqlhotcopy只能運行在數據庫目錄所在的機器上,mysqldump能夠用在遠程客戶端。
3.mysqlhotcopy恢復只須要拷貝備份文件到源目錄覆蓋便可,mysqldump須要導入SQL文件到原來庫中。
4.二者都在線執行lock tables(鎖表)以及unlock tables(解鎖表)。