mysql使用mysqldump備份、還原數據庫詳解教程
一、mysqldump 備份操作
1.1 備份基礎語法
mysqldump -u用戶名 -p密碼 -h主機 數據庫 表名 -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 還原基礎語法
mysql -u用戶名 -p密碼 -h主機 數據庫 < 備份文件路徑
注:原文中“mysqldump還原”語法表述存在筆誤,正確還原需使用
mysql命令而非mysqldump
2.2 還原案例
mysql -uroot -p1234 db1 < c:\aa.txt
三、mysqldump 按條件導出與導入
3.1 按條件導出
3.1.1 按條件導出基礎語法
mysqldump -u用戶名 -p密碼 -h主機 數據庫 表名 --where "條件語句" --no-create-info > 導出路徑
注:原文中“–no-建表”為簡化表述,標準參數為
--no-create-info
3.1.2 按條件導出案例
mysqldump -uroot -p1234 dbname a --where "tag='88'" --no-create-info > c:\a.sql
3.2 按條件導入
3.2.1 按條件導入基礎語法
mysql -u用戶名 -p密碼 -h主機 數據庫 < 導出文件路徑
注:原文中“mysqldump按導入”語法表述存在筆誤,正確導入需使用
mysql命令而非mysqldump
3.2.2 按條件導入案例
mysql -uroot -p1234 db1 < c:\a.txt
四、mysqldump 表導出操作
4.1 表導出基礎語法
mysqldump -u用戶名 -p密碼 -h主機 數據庫 表名
4.2 表導出案例(僅導出表結構,不含數據)
mysqldump -uroot -p sqlhk9 a --no-data
五、mysqldump 主要參數說明
5.1 --compatible=name
- 功能:告知 mysqldump 導出的數據需兼容的數據庫類型或舊版本 MySQL 服務器
- 兼容值:ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等
- 說明:多值用逗號分隔,僅保證“盡量兼容”,非“完全兼容”
5.2 --complete-insert,-c
- 功能:導出數據采用包含字段名的完整 INSERT 語句(所有值寫在一行)
- 優(yōu)勢:提高插入效率
- 風險:可能受 max_allowed_packet 參數影響,導致插入失敗,不推薦使用
5.3 --default-character-set=charset
- 功能:指定導出數據的字符集
- 必要性:若數據表非默認 latin1 字符集,不指定此參數會導致再次導入后產生亂碼
5.4 --disable-keys
- 功能:在 INSERT 語句開頭添加
/*!40000 ALTER TABLE table DISABLE KEYS */;,結尾添加/*!40000 ALTER TABLE table ENABLE KEYS */; - 優(yōu)勢:插入完所有數據后再重建索引,大幅提高插入速度
- 限制:僅適用于 MyISAM 表
5.5 --extended-insert = true|false
- 默認值:true(開啟 --complete-insert 模式)
- 功能:關閉 --complete-insert 模式時,需將此參數設為 false
5.6 --hex-blob
- 功能:使用十六進制格式導出二進制字符串字段
- 必要性:存在二進制數據時必須使用
- 影響字段類型:BINARY、VARBINARY、BLOB
5.7 --lock-all-tables,-x
- 功能:開始導出前,請求鎖定所有數據庫的所有表,保證數據一致性
- 特性:屬于全局讀鎖,會自動關閉 --single-transaction 和 --lock-tables 選項
5.8 --lock-tables
- 功能:鎖定當前導出的數據表(區(qū)別于 --lock-all-tables 鎖定全部庫下的表)
- 限制:僅適用于 MyISAM 表;InnoDB 表需使用 --single-transaction 選項
5.9 --no-create-info,-t
- 功能:僅導出數據,不添加 CREATE TABLE 語句
5.10 --no-data,-d
- 功能:不導出任何數據,僅導出數據庫表結構
5.11 --opt
- 本質:快捷選項,等同于同時添加以下參數:
–add-drop-tables、–add-locking、–create-option、–disable-keys、–extended-insert、–lock-tables、–quick、–set-charset - 優(yōu)勢:加快導出速度,且導出數據可快速導回
- 默認狀態(tài):默認啟用,可通過 --skip-opt 禁用
- 注意事項:未指定 --quick 或 --opt 時,會將整個結果集放入內存,導出大數據庫可能出現問題
5.12 --quick,-q
- 功能:強制 mysqldump 從服務器查詢取得記錄后直接輸出,不緩存到內存
- 適用場景:導出大表時非常有用,避免占用過多內存
5.13 --routines,-R
- 功能:導出存儲過程以及自定義函數
5.14 --single-transaction
- 功能:導出數據前提交 BEGIN SQL 語句,保證導出時數據庫的一致性狀態(tài)
- 特性:BEGIN 不阻塞任何應用程序
- 適用表類型:僅適用于事務表(如 InnoDB、BDB)
- 互斥性:與 --lock-tables 互斥(LOCK TABLES 會使掛起事務隱含提交)
- 建議:導出大表時結合 --quick 選項使用
5.15 --triggers
- 功能:同時導出觸發(fā)器
- 默認狀態(tài):默認啟用,可通過 --skip-triggers 禁用
5.16 其他參數說明
其他參數詳情請參考 MySQL 官方手冊
六、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 在線備份特性
- 僅在開始瞬間請求鎖表,隨后刷新 binlog
- 導出文件中會加入 CHANGE MASTER 語句,指定當前備份的 binlog 位置
- 適用場景:將備份文件恢復到 slave 服務器
七、mysqldump 備份文件還原方法
mysqldump 備份文件為可直接導入的 SQL 腳本,共兩種導入方法:
7.1 方法一:直接用 mysql 客戶端導入
7.1.1 導入語法
/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql
7.2 方法二:用 SOURCE 語法導入(實驗不成功?。。。?/h3>
7.2.1 語法說明
- 非標準 SQL 語法,屬于 mysql 客戶端提供的功能
- 導入語法:
SOURCE /tmp/db_name.sql;
7.2.2 注意事項
- 需指定文件絕對路徑
- 文件需讓 mysqld 運行用戶(如 nobody)擁有讀取權限
總結
到此這篇關于mysql使用mysqldump備份、還原數據庫的文章就介紹到這了,更多相關mysql mysqldump備份還原數據庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
mysql中You can’t specify target table for update in FROM clau
這篇文章主要介紹了mysql中You can’t specify target table for update in FROM clause錯誤解決方法,需要的朋友可以參考下2015-02-02
ubuntu server配置mysql并實現遠程連接的操作方法
下面小編就為大家分享一篇ubuntu server配置mysql并實現遠程連接的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12

