mysql使用mysqldump備份、還原數(shù)據(jù)庫(kù)詳解教程
一、mysqldump 備份操作
1.1 備份基礎(chǔ)語法
mysqldump -u用戶名 -p密碼 -h主機(jī) 數(shù)據(jù)庫(kù) 表名 -w "sql條件" --lock-all-tables > 備份路徑
1.2 備份案例
mysqldump -uroot -p1234 -hlocalhost db1 a -w "id in (select id from b)" --lock-all-tables > c:\aa.txt
二、mysqldump 還原操作
2.1 還原基礎(chǔ)語法
mysql -u用戶名 -p密碼 -h主機(jī) 數(shù)據(jù)庫(kù) < 備份文件路徑
注:原文中“mysqldump還原”語法表述存在筆誤,正確還原需使用
mysql命令而非mysqldump
2.2 還原案例
mysql -uroot -p1234 db1 < c:\aa.txt
三、mysqldump 按條件導(dǎo)出與導(dǎo)入
3.1 按條件導(dǎo)出
3.1.1 按條件導(dǎo)出基礎(chǔ)語法
mysqldump -u用戶名 -p密碼 -h主機(jī) 數(shù)據(jù)庫(kù) 表名 --where "條件語句" --no-create-info > 導(dǎo)出路徑
注:原文中“–no-建表”為簡(jiǎn)化表述,標(biāo)準(zhǔn)參數(shù)為
--no-create-info
3.1.2 按條件導(dǎo)出案例
mysqldump -uroot -p1234 dbname a --where "tag='88'" --no-create-info > c:\a.sql
3.2 按條件導(dǎo)入
3.2.1 按條件導(dǎo)入基礎(chǔ)語法
mysql -u用戶名 -p密碼 -h主機(jī) 數(shù)據(jù)庫(kù) < 導(dǎo)出文件路徑
注:原文中“mysqldump按導(dǎo)入”語法表述存在筆誤,正確導(dǎo)入需使用
mysql命令而非mysqldump
3.2.2 按條件導(dǎo)入案例
mysql -uroot -p1234 db1 < c:\a.txt
四、mysqldump 表導(dǎo)出操作
4.1 表導(dǎo)出基礎(chǔ)語法
mysqldump -u用戶名 -p密碼 -h主機(jī) 數(shù)據(jù)庫(kù) 表名
4.2 表導(dǎo)出案例(僅導(dǎo)出表結(jié)構(gòu),不含數(shù)據(jù))
mysqldump -uroot -p sqlhk9 a --no-data
五、mysqldump 主要參數(shù)說明
5.1 --compatible=name
- 功能:告知 mysqldump 導(dǎo)出的數(shù)據(jù)需兼容的數(shù)據(jù)庫(kù)類型或舊版本 MySQL 服務(wù)器
- 兼容值:ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等
- 說明:多值用逗號(hào)分隔,僅保證“盡量兼容”,非“完全兼容”
5.2 --complete-insert,-c
- 功能:導(dǎo)出數(shù)據(jù)采用包含字段名的完整 INSERT 語句(所有值寫在一行)
- 優(yōu)勢(shì):提高插入效率
- 風(fēng)險(xiǎn):可能受 max_allowed_packet 參數(shù)影響,導(dǎo)致插入失敗,不推薦使用
5.3 --default-character-set=charset
- 功能:指定導(dǎo)出數(shù)據(jù)的字符集
- 必要性:若數(shù)據(jù)表非默認(rèn) latin1 字符集,不指定此參數(shù)會(huì)導(dǎo)致再次導(dǎo)入后產(chǎn)生亂碼
5.4 --disable-keys
- 功能:在 INSERT 語句開頭添加
/*!40000 ALTER TABLE table DISABLE KEYS */;,結(jié)尾添加/*!40000 ALTER TABLE table ENABLE KEYS */; - 優(yōu)勢(shì):插入完所有數(shù)據(jù)后再重建索引,大幅提高插入速度
- 限制:僅適用于 MyISAM 表
5.5 --extended-insert = true|false
- 默認(rèn)值:true(開啟 --complete-insert 模式)
- 功能:關(guān)閉 --complete-insert 模式時(shí),需將此參數(shù)設(shè)為 false
5.6 --hex-blob
- 功能:使用十六進(jìn)制格式導(dǎo)出二進(jìn)制字符串字段
- 必要性:存在二進(jìn)制數(shù)據(jù)時(shí)必須使用
- 影響字段類型:BINARY、VARBINARY、BLOB
5.7 --lock-all-tables,-x
- 功能:開始導(dǎo)出前,請(qǐng)求鎖定所有數(shù)據(jù)庫(kù)的所有表,保證數(shù)據(jù)一致性
- 特性:屬于全局讀鎖,會(huì)自動(dòng)關(guān)閉 --single-transaction 和 --lock-tables 選項(xiàng)
5.8 --lock-tables
- 功能:鎖定當(dāng)前導(dǎo)出的數(shù)據(jù)表(區(qū)別于 --lock-all-tables 鎖定全部庫(kù)下的表)
- 限制:僅適用于 MyISAM 表;InnoDB 表需使用 --single-transaction 選項(xiàng)
5.9 --no-create-info,-t
- 功能:僅導(dǎo)出數(shù)據(jù),不添加 CREATE TABLE 語句
5.10 --no-data,-d
- 功能:不導(dǎo)出任何數(shù)據(jù),僅導(dǎo)出數(shù)據(jù)庫(kù)表結(jié)構(gòu)
5.11 --opt
- 本質(zhì):快捷選項(xiàng),等同于同時(shí)添加以下參數(shù):
–add-drop-tables、–add-locking、–create-option、–disable-keys、–extended-insert、–lock-tables、–quick、–set-charset - 優(yōu)勢(shì):加快導(dǎo)出速度,且導(dǎo)出數(shù)據(jù)可快速導(dǎo)回
- 默認(rèn)狀態(tài):默認(rèn)啟用,可通過 --skip-opt 禁用
- 注意事項(xiàng):未指定 --quick 或 --opt 時(shí),會(huì)將整個(gè)結(jié)果集放入內(nèi)存,導(dǎo)出大數(shù)據(jù)庫(kù)可能出現(xiàn)問題
5.12 --quick,-q
- 功能:強(qiáng)制 mysqldump 從服務(wù)器查詢?nèi)〉糜涗浐笾苯虞敵觯痪彺娴絻?nèi)存
- 適用場(chǎng)景:導(dǎo)出大表時(shí)非常有用,避免占用過多內(nèi)存
5.13 --routines,-R
- 功能:導(dǎo)出存儲(chǔ)過程以及自定義函數(shù)
5.14 --single-transaction
- 功能:導(dǎo)出數(shù)據(jù)前提交 BEGIN SQL 語句,保證導(dǎo)出時(shí)數(shù)據(jù)庫(kù)的一致性狀態(tài)
- 特性:BEGIN 不阻塞任何應(yīng)用程序
- 適用表類型:僅適用于事務(wù)表(如 InnoDB、BDB)
- 互斥性:與 --lock-tables 互斥(LOCK TABLES 會(huì)使掛起事務(wù)隱含提交)
- 建議:導(dǎo)出大表時(shí)結(jié)合 --quick 選項(xiàng)使用
5.15 --triggers
- 功能:同時(shí)導(dǎo)出觸發(fā)器
- 默認(rèn)狀態(tài):默認(rèn)啟用,可通過 --skip-triggers 禁用
5.16 其他參數(shù)說明
其他參數(shù)詳情請(qǐng)參考 MySQL 官方手冊(cè)
六、mysqldump 常用備份命令示例
6.1 MyISAM 表備份命令
/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --extended-insert=false \ --triggers -R --hex-blob -x db_name > db_name.sql
6.2 InnoDB 表備份命令
/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --extended-insert=false \ --triggers -R --hex-blob --single-transaction db_name > db_name.sql
6.3 在線備份命令(含 binlog 信息)
6.3.1 在線備份語法
/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --master-data=1 \ --single-transaction --flush-logs db_name > db_name.sql
6.3.2 在線備份特性
- 僅在開始瞬間請(qǐng)求鎖表,隨后刷新 binlog
- 導(dǎo)出文件中會(huì)加入 CHANGE MASTER 語句,指定當(dāng)前備份的 binlog 位置
- 適用場(chǎng)景:將備份文件恢復(fù)到 slave 服務(wù)器
七、mysqldump 備份文件還原方法
mysqldump 備份文件為可直接導(dǎo)入的 SQL 腳本,共兩種導(dǎo)入方法:
7.1 方法一:直接用 mysql 客戶端導(dǎo)入
7.1.1 導(dǎo)入語法
/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql
7.2 方法二:用 SOURCE 語法導(dǎo)入(實(shí)驗(yàn)不成功!?。。?/h3>
7.2.1 語法說明
- 非標(biāo)準(zhǔn) SQL 語法,屬于 mysql 客戶端提供的功能
- 導(dǎo)入語法:
SOURCE /tmp/db_name.sql;
7.2.2 注意事項(xiàng)
- 需指定文件絕對(duì)路徑
- 文件需讓 mysqld 運(yùn)行用戶(如 nobody)擁有讀取權(quán)限
總結(jié)
到此這篇關(guān)于mysql使用mysqldump備份、還原數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)mysql mysqldump備份還原數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MYSQL常用字符串函數(shù)和時(shí)間函數(shù)示例詳解
字符串函數(shù)是最常用的的一種函數(shù),在一個(gè)具體應(yīng)用中通常會(huì)綜合幾個(gè)甚至幾類函數(shù)來實(shí)現(xiàn)相應(yīng)的應(yīng)用,這篇文章主要介紹了MYSQL常用字符串函數(shù)和時(shí)間函數(shù)的相關(guān)資料,需要的朋友可以參考下2025-07-07
詳細(xì)深入聊一聊Mysql中的int(1)和int(11)
mysql數(shù)據(jù)庫(kù)作為當(dāng)前常用的關(guān)系型數(shù)據(jù)庫(kù),肯定會(huì)遇到設(shè)計(jì)表的需求,下面對(duì)設(shè)計(jì)表時(shí)int類型的設(shè)置進(jìn)行分析,下面這篇文章主要給大家介紹了關(guān)于Mysql中int(1)和int(11)的相關(guān)資料,需要的朋友可以參考下2022-08-08
MySQL?數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)
數(shù)據(jù)恢復(fù)的過程包括將備份文件導(dǎo)入到數(shù)據(jù)庫(kù)中、重建索引、應(yīng)用日志等,本文主要介紹了MySQL數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)的實(shí)現(xiàn),感興趣的可以了解一下2023-08-08
MySQL日期時(shí)間類型與字符串互相轉(zhuǎn)換的方法
這篇文章主要介紹了MySQL日期時(shí)間類型與字符串互相轉(zhuǎn)換的方法,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07
用HAProxy來檢測(cè)MySQL復(fù)制的延遲的教程
這篇文章主要介紹了用HAProxy來檢測(cè)MySQL復(fù)制的延遲的教程,HAProxy需要使用到PHP腳本,需要的朋友可以參考下2015-04-04

