本地開發庫結構已同步至目標 Linux MySQL,需僅遷移存儲過程/函數/事件,避免全量覆蓋。
mysqldump -uroot -p -hlocalhost -P3306 -n -d -t -R DBName > procedure_name.sql
| 參數 | 長選項 | 作用 |
|---|---|---|
-n | --no-create-db | 不輸出 CREATE DATABASE |
-d | --no-data | 不導出表數據 |
-t | --no-create-info | 不輸出 CREATE TABLE |
-R | --routines | 導出存儲過程與函數 |
-E | --events | 導出 Event Scheduler 事件 |
-u/--user、-p/--password、-h/--host、-P/--port--add-drop-database/table:默認開啟,恢復前清理-c/--complete-insert:完整 INSERT 語句(含列名),利於異構遷移--compact:精簡輸出,移除註釋mysqldump -T /tmp db_name tbl_name
產出:
tbl_name.sql:DDLtbl_name.txt:Tab 分隔純數據硬性限制:客端與 Server 必須同機;導出目錄需 mysql 用戶寫權限(數據文件由 Server 進程寫入)。
--default-character-set:指定連接字符集--fields-terminated-by、--fields-enclosed-by 等:配合 -T 定義文本格式-F/--flush-logs:備份前滾動 Binlog,利於增量恢復-l/--lock-tables:全局讀鎖(MyISAM 必備);InnoDB 推薦 --single-transactionmysqldump -R -E --single-transaction --no-data --no-create-info db > routines.sqlgrep -n "DEFINER" routines.sql 確認定義者賬戶在目標庫存在mysql -uroot -p target_db < routines.sqlSHOW PROCEDURE STATUS WHERE Db='target_db';sed 替換 DEFINER 子句-T 遠程失效:只會在本地生成 .sql,.txt 靜默失敗