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

Windows 下 MySQL 備份還原完整操作指南:mysqldump、mysqladmin 與命令列實戰

     編輯:MySQL 資料庫相關知識

環境假設

  • MySQL 安裝:C:\MySQL\MySQL Server 5.0\bin
  • 帳號:root / 123456
  • 資料庫:database_name
  • 備份目標:D:\backup_20240115.sql

一、邏輯備份

> cd C:\MySQL\MySQL Server 5.0\bin

-- 完整備份(結構+資料)
mysqldump -u root -p123456 database_name > D:\backup_20240115.sql

-- 僅備份結構
mysqldump -u root -p123456 -d database_name > D:\schema_20240115.sql

-- 單表備份
mysqldump -u root -p123456 database_name table_name > D:\table_20240115.sql

-- 壓縮備份(需 gzip/gzip.exe)
mysqldump -u root -p123456 database_name | gzip > D:\backup_20240115.sql.gz

二、還原操作

-- 方式一:mysql 命令導入(推薦)
mysql -u root -p123456 database_name < D:\backup_20240115.sql

-- 方式二:source 命令(需先進入 mysql>)
mysql -u root -p123456
mysql> CREATE DATABASE IF NOT EXISTS database_name;
mysql> USE database_name;
mysql> SOURCE D:\backup_20240115.sql;

-- 方式三:重建資料庫再導入(乾淨環境)
mysqladmin -u root -p123456 DROP database_name
mysqladmin -u root -p123456 CREATE database_name
mysql -u root -p123456 database_name < D:\backup_20240115.sql

三、定時備份批次檔

:: backup_daily.bat
@echo off
set DATE_STR=%date:~-4,4%%date:~-10,2%%date:~-7,2%
set BACKUP_DIR=D:\mysql_backup
set MYSQL_BIN=C:\MySQL\MySQL Server 5.0\bin

if not exist %BACKUP_DIR% mkdir %BACKUP_DIR%

%MYSQL_BIN%\mysqldump -u root -p123456 --single-transaction --routines --triggers database_name > %BACKUP_DIR%\db_%DATE_STR%.sql

:: 保留 30 天
forfiles /p %BACKUP_DIR% /m db_*.sql /d -30 /c "cmd /c del @path"

配合 Windows 排程器每日執行。

四、常見問題排查

五、生產環境建議參數

mysqldump -u root -p123456 \
  --single-transaction \
  --quick \
  --routines \
  --triggers \
  --events \
  --master-data=2 \
  --hex-blob \
  database_name > backup.sql
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象原因解決
導入亂碼字符集不匹配mysqldump --default-character-set=utf8mb4 / 導入前 SET NAMES utf8mb4
ERROR 2006封包過大調大 max_allowed_packet
權限不足缺 FILE/LOCK TABLES 權限GRANT FILE, LOCK TABLES ON *.* TO 'backup'@'localhost'
備份極慢未用 --single-transactionInnoDB 必加 --single-transaction --quick