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

MySQL 備份與恢復全方案:mysqldump、mysqlhotcopy、SQL語法、Binlog、文件拷貝、策略制定

     編輯:MySQL 資料庫相關知識

免費備份工具對比

工具/方式適用引擎熱備增量跨版本備註
mysqldump全引擎單事務表熱備配合 --master-data佳SQL 級別,最通用
mysqlhotcopy僅 MyISAM需鎖表不支援差Perl 腳本,僅 Unix/NetWare,速度最快
BACKUP TABLE僅 MyISAM鎖表拷貝文件不支援差不備份索引,恢復慢,不推薦
SELECT INTO OUTFILE全引擎鎖表導出文本不支援中自定義分隔符,便於異構導入
Binlog (FLUSH LOGS)全引擎熱備原生支援中增量備份首選,配合主從架構
直接拷貝數據目錄全引擎需 FTWRL不支援差最快,InnoDB 需連帶 ib_logfile*

mysqldump 核心參數精選

# MyISAM 表
mysqldump -u user -p --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x db > db.sql

# InnoDB 表(單事務一致性)
mysqldump -u user -p --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --single-transaction db > db.sql

# 適合搭建從庫(含 Binlog 位點)
mysqldump -u user -p --default-character-set=utf8 --opt --master-data=1 --single-transaction --flush-logs db > db.sql

恢復方式

  • mysql -u user -p db < db.sql
  • MySQL 客戶端內:SOURCE /path/db.sql;(需絕對路徑、mysqld 進程用戶可讀)

Binlog 增量備份與恢復

# 開啟 Binlog (my.cnf)
server-id=1
log-bin=binlog
log-bin-index=binlog.index

# 切換 Binlog 產生增量文件
FLUSH LOGS;

# 查看 Binlog
mysqlbinlog /var/lib/mysql/binlog.000001

# 恢復
mysqlbinlog /var/lib/mysql/binlog.000001 | mysql -u user -p db

備份策略建議

  • 中等業務:首次全量,每日增量,每周全量。
  • 核心高併發:每日全量,每小時增量,甚至更頻。
  • 最佳實踐:主從復制 + 從庫備份,零影響主庫,可異地存儲。

數據維護與災難恢復

  • MyISAM:CHECK/REPAIR/OPTIMIZE/ANALYZE TABLE 或 myisamchk。
  • InnoDB:ALTER TABLE t ENGINE=InnoDB 整理碎片;innodb_force_recovery=1..6 啟動時強制恢復(慎用)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved