# 基本導出
/usr/local/mysql/bin/mysqldump -u root -p db_name > db_name_$(date +%F).sql
# 壓縮導出 (節省空間)
mysqldump -u root -p db_name | gzip > db_name_$(date +%F).sql.gz
# 導出多個庫
mysqldump -u root -p --databases db1 db2 > multi_db.sql
# 導出全部庫 (含用戶權限)
mysqldump -u root -p --all-databases > all_db.sql
關鍵參數:--single-transaction (InnoDB 熱備份不鎖表)、--master-data=2 (記錄 binlog 位置用於主從)、--routines --triggers --events (導出存儲過程/觸發器/事件)。
upload_max_filesize、post_max_size、max_execution_time 限制大文件。yum install percona-xtrabackup-80 (匹配 MySQL 版本)。xtrabackup --backup --target-dir=/backup/full --user=root --password=xxx。xtrabackup --prepare --target-dir=/backup/full。xtrabackup --copy-back --target-dir=/backup/full → 修正權限 → 啟庫。
# 1. 創建目標庫 (如不存在)
mysql -u root -p -e "CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
# 2. 導入 SQL 文件
mysql -u root -p db_name < db_name.sql
# 3. 導入壓縮文件
zcat db_name.sql.gz | mysql -u root -p db_name
/home/wwwroot/phpmyadmin/upload/ (或直接選擇本地文件)。| 問題 | 優化措施 |
|---|---|
| 導出耗時長、鎖表影響業務 | InnoDB 必加 --single-transaction;考慮從庫備份 |
| 導入極慢 | 臨時關閉索引 ALTER TABLE t DISABLE KEYS (MyISAM) / 導入後重建;調大 innodb_buffer_pool_size、innodb_log_file_size、innodb_flush_log_at_trx_commit=2 (臨時) |
| 文件過大無法上傳/下載 | 分卷壓縮 split -b 1G;或用 XtraBackup 物理備份 |
| 字符集亂碼 | 導出導入指定 --default-character-set=utf8mb4,庫表創建同字符集 |
root 或擁有 LOCK TABLES, SELECT, SHOW VIEW, EVENT, TRIGGER, PROCESS 權限的專用備份賬號。--defaults-extra-file=/path/.my.cnf 配置文件。