系統整理 MySQL 數據維護核心操作:文件複製備份、mysqldump 邏輯備份、SELECT INTO OUTFILE 導出、LOAD DATA INFILE 導入、同版本/跨版本/異構遷移策略。
FLUSH TABLES → 複製 datadir 文件。innodb_fast_shutdown=0 且仍有風險)。# 備份單庫(指定表) mysqldump -u root -p dbname table1 table2 > backup.sql # 備份單庫(全表) mysqldump -u root -p dbname > backup.sql # 備份多庫 mysqldump -u root -p --databases db1 db2 > backup.sql # 備份所有庫 mysqldump -u root -p --all-databases > all.sql
輸出包含 CREATE TABLE + INSERT,可直接 SOURCE 還原。
# 指定庫還原 mysql -u root -p dbname < backup.sql # 不指定庫,還原文件中所有庫 mysql -u root -p < all.sql
SELECT col1, col2 FROM tbl INTO OUTFILE '/path/file.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n';
選項:FIELDS TERMINATED BY、ENCLOSED BY、OPTIONALLY ENCLOSED BY、ESCAPED BY、LINES STARTING BY、LINES TERMINATED BY。
mysqldump -u root -p -T /export/dir dbname tblname --fields-terminated-by=',' --fields-enclosed-by='"' --lines-terminated-by='\n'
LOAD DATA [LOCAL] INFILE '/path/file.txt' INTO TABLE tbl FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE n LINES (col1, col2, ...) SET col3 = expr;
LOCAL:從客戶端讀取文件。IGNORE n LINES 跳過標題。(col_list) 指定列映射。SET 列轉換表達式。
mysqlimport -u root -p [--local] dbname /path/file.txt --fields-terminated-by=',' --lines-terminated-by='\n' --ignore-lines=n
按文件名匹配表名(去掉擴展名)。
mysqldump -h host1 -u root -p --all-databases | mysql -h host2 -u root -p
管道流式傳輸,無中間文件。
mysqldump + mysql 還原。mysqlhotcopy。mysqldump 邏輯備份還原。MyODBC 驅動連接導入。mysqldump 導出 SQL → 手動調整 CREATE TABLE 語法(類型、自增、引號等)→ Oracle 導入。INTO OUTFILE 目標路徑需 MySQL 進程寫權限,文件不可存在。