首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 5.1 mysqldump 導出存儲過程與遷移實戰指南

     編輯:MySQL 資料庫相關知識

場景:跨環境遷移存儲過程

本地開發庫結構已同步至目標 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 事件

mysqldump 參數全景分類

1. 連接選項

  • -u/--user、-p/--password、-h/--host、-P/--port

2. 輸出內容控制

  • --add-drop-database/table:默認開啟,恢復前清理
  • -c/--complete-insert:完整 INSERT 語句(含列名),利於異構遷移
  • --compact:精簡輸出,移除註釋

3. 特殊導出模式:-T/--tab

mysqldump -T /tmp db_name tbl_name

產出:

  • tbl_name.sql:DDL
  • tbl_name.txt:Tab 分隔純數據

硬性限制:客端與 Server 必須同機;導出目錄需 mysql 用戶寫權限(數據文件由 Server 進程寫入)。

4. 字符集與格式控制

  • --default-character-set:指定連接字符集
  • --fields-terminated-by、--fields-enclosed-by 等:配合 -T 定義文本格式

5. 性能與鎖控制

  • -F/--flush-logs:備份前滾動 Binlog,利於增量恢復
  • -l/--lock-tables:全局讀鎖(MyISAM 必備);InnoDB 推薦 --single-transaction

遷移最佳實踐

  1. 導出:mysqldump -R -E --single-transaction --no-data --no-create-info db > routines.sql
  2. 檢查:grep -n "DEFINER" routines.sql 確認定義者賬戶在目標庫存在
  3. 導入:mysql -uroot -p target_db < routines.sql
  4. 驗證:SHOW PROCEDURE STATUS WHERE Db='target_db';

常見坑點提示

  • DEFINER 權限缺失:導入前創建同名用戶或用 sed 替換 DEFINER 子句
  • 版本差異:5.1 → 5.7+ 可能語法不兼容,建議先在測試環境驗證
  • -T 遠程失效:只會在本地生成 .sql,.txt 靜默失敗
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved