C:\MySQL\MySQL Server 5.0\binD:\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 --default-character-set=utf8mb4 / 導入前 SET NAMES utf8mb4 |
| ERROR 2006 | 封包過大 | 調大 max_allowed_packet |
| 權限不足 | 缺 FILE/LOCK TABLES 權限 | GRANT FILE, LOCK TABLES ON *.* TO 'backup'@'localhost' |
| 備份極慢 | 未用 --single-transaction | InnoDB 必加 --single-transaction --quick |