方法一:SELECT ... INTO OUTFILE(伺服器端導出)
SELECT * FROM tutorials_tbl
INTO OUTFILE '/tmp/tutorials.txt'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
限制條件
- 需
FILE 權限
- 目標文件**必須不存在**(防覆蓋)
- 文件生成在**伺服器主機**,需登入該主機取回
- 文件屬主為 mysql,權限 644(全域可讀、不可刪)
方法二:mysqldump 導出原始數據(--tab)
mysqldump -u root -p --no-create-info --tab=/tmp TUTORIALS tutorials_tbl
- 產生
.txt(數據)+ .sql(建表語句)
- 適合大量數據、需保留表結構場景
方法三:mysqldump 導出 SQL 格式(最通用)
# 單表
mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt
# 多表
mysqldump -u root -p TUTORIALS t1 t2 > dump.txt
# 全庫
mysqldump -u root -p TUTORIALS > full_dump.txt
# 所有庫
mysqldump -u root -p --all-databases > all_dump.txt
跨主機遷移兩種方式
1. 中間文件法
# 源主機
mysqldump -u root -p db_name table_name > dump.txt
# 目標主機(先建庫)
mysql -u root -p db_name < dump.txt
2. 管道直連法(無中間文件)
mysqldump -u root -p db_name table_name | mysql -h target_host db_name
備份策略建議
- 全量備份:每日
--all-databases --single-transaction --master-data=2
- 增量備份:啟用 binlog,定期
mysqlbinlog 導出
- 驗證備份:定期恢復演練,校驗
CHECKSUM TABLE