共計(jì) 2678 個(gè)字符,預(yù)計(jì)需要花費(fèi) 7 分鐘才能閱讀完成。
這篇文章主要介紹了 mysqldump 如何備份與恢復(fù),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
一.mysqldump
mysqldump 備份原理,去數(shù)據(jù)庫查詢數(shù)據(jù),然后進(jìn)行 sql 語句的拼接。
優(yōu)點(diǎn):mysql 自帶,使用方便,備份結(jié)果容易操作。少量數(shù)據(jù)可以使用 mysqldump
缺點(diǎn): 大量數(shù)據(jù)下,使用 mysqldump 恢復(fù)較慢,mysqldump 再導(dǎo)入數(shù)據(jù)的時(shí)候,都是使用 sql 語句,需要開啟事務(wù)。不建議使用.
二. 語法如下:
mysqldump [arguments] file_name
(1). 備份所有數(shù)據(jù)庫
mysqldump –all-databases dump.sql
(2). 備份指定數(shù)據(jù)庫
mysqldump –databases wwj db2 db3 dump.sql
(3).–single-transaction 獲得備份的一致性
當(dāng)啟用該參數(shù)并進(jìn)行備份時(shí),確保沒有其他任何的 DDL 語句執(zhí)行. 保證可重復(fù)讀得到備份時(shí)間點(diǎn)一致性的快照.
(4).–lock-tables(-l)
在備份過程中,依次鎖住備份的表。一般用于 myisam 引擎,用來保證一致性。對于 innodb 引擎不需要使用該參數(shù)。
如果同時(shí)存在 innodb 和 myisam 的表,則只能使用 –lock-tables
(5).–lock-all-tables(-x)
在備份過程中,同時(shí)對所有表上鎖。
(6).–add-drop-database
在 create database 前先運(yùn)行 drop database,和 -all-databases 或者 –databases 一起使用
–add-drop-table
在創(chuàng)建 table 前,先刪除 table
(7).–events(-E)
備份事件調(diào)度器
(8).–routines(-R)
備份存儲過程和函數(shù)
(9).–triggers
備份觸發(fā)器
(10).–hex-blob
將 binary,varbinary,blog,bit 列類型備份為十六進(jìn)制的格式
(11).–tab=path(-T path)
產(chǎn)生 TAB 分割的數(shù)據(jù)文件。對于每張表,創(chuàng)建一個(gè)包含 create table 語句的 table_name.sql 文件和包含數(shù)據(jù)的 tb1_name.txt 文件
(12).–where= where_condition (-w)
導(dǎo)出給定條件下的數(shù)據(jù)
(13). 導(dǎo)出某數(shù)據(jù)庫中的幾個(gè)表
mysqldump -uroot -p -S /tmp/mysql3306.sock –single-transaction test emp_range t1.sql
(14). 導(dǎo)出表結(jié)構(gòu)
–no-data, -d 不導(dǎo)出任何數(shù)據(jù),只導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu)
mysqldump -uroot -p -S /tmp/mysql3306.sock –single-transaction –all-databases -d all.sql
(15).–ignore-table=name
不導(dǎo)出某個(gè)表,e.g = –ignore-table=database.table
(16).–insert-ignore
Insert rows with INSERT IGNORE
(17).–log-error=name
Append warnings and errors to given file.
(18).–master-data
mysqldump 導(dǎo)出數(shù)據(jù)時(shí),當(dāng)這個(gè)參數(shù)的值為 1 的時(shí)候,mysqldump 出來的文件就會包括 CHANGE MASTER TO 這個(gè)語句,CHANGE MASTER TO 后面緊接著就是 file 和 position 的記錄,在 slave 上導(dǎo)入數(shù)據(jù)時(shí)就會執(zhí)行這個(gè)語句,salve 就會根據(jù)指定這個(gè)文件位置從 master 端復(fù)制 binlog。默認(rèn)情況下這個(gè)值是 1 當(dāng)這個(gè)值是 2 的時(shí)候,chang master to 也是會寫到 dump 文件里面去的,但是這個(gè)語句是被注釋的狀態(tài)。
master-data 參數(shù)在建立 slave 數(shù)據(jù)庫的時(shí)候會經(jīng)常用到,因?yàn)檫@是一個(gè)比較好用的參數(shù),默認(rèn)值為 1,默認(rèn)情況下,會包含 change master to,這個(gè)語句包含 file 和 position 的記錄始位置。master-data= 2 的時(shí)候,在 mysqldump 出來的文件包含 CHANGE MASTER TO 這個(gè)語句,處于被注釋狀態(tài)
(19).–no-create-info, -t 只導(dǎo)出數(shù)據(jù),而不添加 CREATE TABLE 語句
(20).–no-create-db, -n 只導(dǎo)出數(shù)據(jù),而不添加 CREATE DATABASE 語句
(21).–force,-f 在導(dǎo)出過程中忽略出現(xiàn)的 SQL 錯誤,當(dāng)出現(xiàn)錯誤時(shí)仍然繼續(xù)后面的操作
–mysqldump 的恢復(fù)
(1).mysql -uroot -p
(2).source /home/mysql/test_backup.sql
或者
/usr/local/mysql/bin/mysql -uroot -p -S /tmp/mysql3306.sock all.sql
三. 邏輯備份恢復(fù)實(shí)驗(yàn)
1. 備份恢復(fù)所有數(shù)據(jù)庫
– 備份實(shí)例下所有數(shù)據(jù)庫
mysqldump -u root -p -S /tmp/mysql3306.sock –all-databases –add-drop-database –single-transaction /tmp/db1.sql
– 恢復(fù)
mysql -uroot -p -S /tmp/mysql3306.sock /tmp/db1.sql
2. 備份恢復(fù)單獨(dú)的數(shù)據(jù)庫
- 備份數(shù)據(jù)庫 wwj
mysqldump -u root -p -S /tmp/mysql3306.sock –databases wwj –add-drop-database –single-transaction /tmp/db2.sql
- 恢復(fù)數(shù)據(jù)庫 wwj
mysql -uroot -p -S /tmp/mysql3306.sock /tmp/db2.sql
3. 備份恢復(fù)某數(shù)據(jù)庫中的幾個(gè)表
- 備份表 wwj.t3, wwj.haha22
mysqldump -u root -p -S /tmp/mysql3306.sock –single-transaction –databases wwj –tables t3 haha22 /tmp/db3.sql
- 恢復(fù)
use wwj;
source /tmp/db3.sql;
感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享的“mysqldump 如何備份與恢復(fù)”這篇文章對大家有幫助,同時(shí)也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!