數(shù)據(jù)庫(kù):MySQLDump用法詳解,你學(xué)會(huì)了嗎?
一、命令格式詳解
1.1 語法格式
mysqldump [OPTIONS] database [tables]
1.2 常用參數(shù)
--all-databases, -A: 備份所有數(shù)據(jù)庫(kù)
--databases, -B: 用于備份多個(gè)數(shù)據(jù)庫(kù),如果沒有該選項(xiàng),mysqldump把第一個(gè)名字參數(shù)作為數(shù)據(jù)庫(kù)名,后面的作為表名。使用該選項(xiàng),mysqldum把每個(gè)名字都當(dāng)作為數(shù)據(jù)庫(kù)名。
--force, -f:即使發(fā)現(xiàn)sql錯(cuò)誤,忽略錯(cuò)誤繼續(xù)備份
--host=host_name, -h host_name:備份主機(jī)名,默認(rèn)為localhost
--no-data, -d:只導(dǎo)出表結(jié)構(gòu)
--password[=password], -p[password]:密碼
--port=port_num, -P port_num:制定TCP/IP連接時(shí)的端口號(hào)
--quick, -q:快速導(dǎo)出
--tables:覆蓋 --databases or -B選項(xiàng),后面所跟參數(shù)被視作表名
--user=user_name, -u user_name:用戶名
--xml, -X:導(dǎo)出為xml文件
二、mysqldump常見的幾個(gè)錯(cuò)誤
2.1、提示命令未找到 -bash: mysqldump: 未找到命令
執(zhí)行如下命令
mysqldump --opt -uroot -p12345678 --databases test> /data/db_bak/test223.zip
可能會(huì)出現(xiàn)如下錯(cuò)誤
圖片
圖片
解決方法
需要導(dǎo)入mysql的環(huán)境變量
查詢導(dǎo)入的環(huán)境變量是否包含mysql
echo $PATH
在/etc/profile配置mysql系統(tǒng)環(huán)境變量,一般都是/usr/local/mysql/bin這個(gè)文件夾
export PATH=$PATH:/usr/local/mysql/bin
#刷新環(huán)境變量后生效
source /etc/profile
2.2、 the command line interface can be insecure
錯(cuò)誤詳情為:
mysqldump: [Warning] Using a password on the command line interface can be insecure。
圖片
原因:mysql版本大于5.6的話,增加的安全提醒機(jī)制,則會(huì)出現(xiàn)警告:Warning: Using a password on the command line interface can be insecure. 使用 mysqldump 命令備份 MySQL 數(shù)據(jù)庫(kù)時(shí),我們使用了 -p 參數(shù)帶上了密碼,這樣雖然可以快速備份,但是密碼會(huì)在命令行中明文可見,容易被竊取。為了更安全地備份數(shù)據(jù)庫(kù), MySQL5.6之后的版本會(huì)提醒使用 MySQL 配置文件中的加密方式來指定密碼,這樣可以避免密碼泄露的風(fēng)險(xiǎn)。當(dāng)然只是提醒,不影響具體的執(zhí)行。
解決方法:
修改mysql配置文件,增加用戶名和密碼
vim /etc/my.cnf
內(nèi)容參考如下
[mysqldump]
...
user=root
password="你的mysql密碼"
然后重啟mysql數(shù)據(jù)庫(kù),執(zhí)行mysqldump命令的時(shí)候不需要輸入用戶名密碼即可
mysqldump --opt --databases test> /data/db_bak/test223.zip
2.3、Gotpacket bigger than ‘max_allowed_packet‘ bytes
大家進(jìn)行MySQL數(shù)據(jù)庫(kù)備份mysqldump報(bào)錯(cuò)
Error 2020: Got packet bigger than ‘max_allowed_packet‘ bytes
比如執(zhí)行如下命令:
mysqldump --opt -uroot -p12345678 --databases test> /data/db_bak/test223.zip
可能會(huì)出現(xiàn)下圖錯(cuò)誤
圖片
解決方法:增加max_allowed_packet參數(shù)
mysqldump --opt -uroot -p12345678 --max_allowed_packet=512M --databases test> /data/db_bak/test223.zip
三、 常用的幾個(gè)備份命令
#備份服務(wù)器所有的數(shù)據(jù)庫(kù)包含數(shù)據(jù)
mysqldump -uroot -p12345678 -A >/data/db_bak/2023_mysql_all_bak.sql
#備份服務(wù)器所有的數(shù)據(jù)庫(kù)僅包含表結(jié)構(gòu)
mysqldump -uroot -p123456 -A-d>/data/db_bak/2023bak.sql
#備份服務(wù)器所有的數(shù)據(jù)庫(kù)僅包含表數(shù)據(jù)
mysqldump -uroot -p123456 -A-t>/data/db_bak/2023DataBak.sql
#備份單個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)和結(jié)構(gòu)
mysqldump -uroot-p123456 test>/data/db_bak/test_bak.sql
#備份單個(gè)數(shù)據(jù)庫(kù)多個(gè)表的數(shù)據(jù)和結(jié)構(gòu)
mysqldump -uroot -p123456 test tb1 tb2>f:\test_table.sql