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

MySQL 數據庫導入導出全場景指南:虛擬主機與服務器雙模式操作手冊

     編輯:MySQL 資料庫相關知識

場景分類

環境工具適用數據量典型操作
虛擬主機phpMyAdmin< 50MBWeb 界面點擊導入導出
虛擬主機程序後台< 100MBDiscuz/WordPress 後台備份還原
虛擬主機面板一鍵任意寶塔/朝暮面板 FTP 下載
服務器/VPSmysqldump + source無上限命令行完全控制

一、服務器/VPS 完整操作流程

前置條件

  • SSH 遠程登錄服務器
  • 獲取 root 或業務數據庫賬號密碼
  • 確認 MySQL 安裝路徑(which mysql)

1. 導入(還原)數據庫

方式 A:source 命令(交互式,適合調試)

# 1. 進入客戶端
mysql -u root -p

# 2. 建庫並切換
CREATE DATABASE IF NOT EXISTS mydb;
USE mydb;

# 3. 執行導入
SOURCE /path/to/backup.sql;

優點:可見執行進度、錯誤即時顯示、支持多文件分批導入。

方式 B:管道重定向(非交互,適合腳本自動化)

# Windows (進入 bin 目錄)
mysql -u root -pabc123 mydb < D:\backup\file.sql

# Linux (直接執行)
mysql -u root -pabc123 mydb < /backup/file.sql

優點:一行命令、易集成 CI/CD、無交互阻塞。

2. 導出(備份)數據庫

# 基礎導出
mysqldump -u root -pabc123 mydb > /backup/mydb_$(date +%F).sql

# 生產級熱備份(InnoDB 必加)
mysqldump -u backup_user -p'StrongPass' \
  --single-transaction \
  --master-data=2 \
  --flush-logs \
  --routines --events --triggers \
  --databases db1 db2 > /backup/full_$(date +%F_%H-%M).sql

# 壓縮存儲
gzip /backup/full_*.sql

3. 常見報錯處理

錯誤原因解決
Lock wait timeout默認鎖表導出加 --single-transaction (InnoDB) 或 --skip-lock-tables
Access denied權限不足授予 SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER 權限
Unknown table表不存在/拼寫錯核對 SHOW TABLES
Max allowed packet大字段超過限制--max-allowed-packet=1G

二、虛擬主機操作指南

1. phpMyAdmin

  1. 登錄控制面板 → phpMyAdmin
  2. 選擇數據庫 → 「導出」標籤 → 選「快速」/「自定義」 → 執行 → 下載 .sql
  3. 導入:新建庫 → 「導入」標籤 → 選文件 → 執行

限制:受 upload_max_filesize、memory_limit、max_execution_time 限制,大文件易超時。

2. 程序自帶備份 (以 Discuz 為例)

  1. 後台 → 數據庫 → 備份數據庫
  2. 選擇表、壓縮格式 → 提交
  3. 生成文件通常在 data/backup/ 目錄,FTP 下載

3. 面板一鍵備份 (寶塔/朝暮/WDCP)

  • 數據庫管理 → 選擇庫 → 備份 → 生成壓縮包
  • 文件列表 → 下載或遠程推送 (FTP/S3/OSS)
  • 還原:上傳文件 → 選擇庫 → 還原

三、遷移實戰核對清單

  1. 版本兼容:目標版本 ≥ 源版本,或同主版本
  2. 字符集一致:源/目標/連接/頁面四處 utf8mb4
  3. 權限同步:mysqldump --flush-privileges 導出用戶權限
  4. 驗證數據:CHECKSUM TABLE tbl 對比源目標一致性
  5. 應用切換:修改配置文件 → 清理緩存 → 驗證業務功能

四、自動化備份腳本模板

#!/bin/bash
# /usr/local/bin/mysql_backup.sh
set -euo pipefail

BACKUP_DIR="/backup/mysql"
RETENTION_DAYS=7
MYSQL_USER="backup_user"
MYSQL_PASS="StrongPass"
DATABASES="db1 db2"

mkdir -p "$BACKUP_DIR"
DATE=$(date +%F_%H-%M)
FILE="$BACKUP_DIR/full_${DATE}.sql"

mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASS" \
  --single-transaction --master-data=2 --flush-logs \
  --routines --events --triggers \
  --databases $DATABASES > "$FILE"

gzip "$FILE"
find "$BACKUP_DIR" -name "full_*.sql.gz" -mtime +$RETENTION_DAYS -delete

# 可選:上傳至對象存儲
# aws s3 cp "$FILE.gz" s3://my-bucket/mysql-backup/

導入導出核心:**虛擬主機用面板/程序後台,服務器用 mysqldump + source/管道**。生產環境務必**熱備份參數全開、壓縮存儲、異地複製、定期演練還原**。備份未驗證等於沒備份。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved