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

MySQL 備份與還原實戰總結:mysqldump、SQL 語法與 tee 命令詳解

     編輯:MySQL 資料庫相關知識

備份方法概覽

方法一:SQL 語句導出

LOCK TABLES tbl_name READ;
FLUSH TABLES;
SELECT * INTO OUTFILE 'data_bck.sql' 
  FIELDS TERMINATED BY ',' FROM tbl_name;
UNLOCK TABLES;

注意:對事務型表(InnoDB)需先設定 SET AUTOCOMMIT=0,否則 LOCK TABLES 會隱含提交當前事務。

方法二:mysqldump 工具(推薦)

場景命令範例
單表完整備份mysqldump -h192.168.4.20 -uuser -ppass db tbl > data_bck.sql
單庫完整備份mysqldump -h192.168.4.20 -uuser -ppass db > data_bck.sql
全庫完整備份mysqldump -h192.168.4.20 -uuser -ppass --single-transaction --all-databases > all.sql
全備+切換 Binlogmysqldump ... --flush-logs --master-data=2 --all-databases > all.sql
全備+刪除舊 Binlogmysqldump ... --flush-logs --master-data=2 --delete-master-logs --all-databases > all.sql
增量備份先全備,再執行 mysqladmin flush-logs 產生新 Binlog

方法三:直接複製 data 目錄(冷備份)

停止 MySQL 服務或全域鎖表 FLUSH TABLES WITH READ LOCK,複製整個 data 目錄,完成後解鎖或重啟服務。

還原方法

SQL 語句導入

LOAD DATA INFILE 'data_bck.sql' INTO TABLE tbl_name FIELDS TERMINATED BY ',';

mysql 客戶端工具

# 完整還原
mysql -h192.168.4.20 -uuser -ppass db < data_bck.sql

# 增量 Binlog 還原
mysqlbinlog binlog.000001 binlog.000008 | mysql

實用小技巧:tee 命令記錄操作

在 MySQL 互動式命令列中執行:

> tee /path/to/heihei.sql
> SELECT * FROM tbl_name;

所有後續輸入的命令與輸出結果(含錯誤)都會原樣寫入指定檔案,適合生成報表、簡易備份或操作審計。關閉記錄可用 notee。

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