從環境變量配置到 mysqldump/mysql 實操,再到 PHP 環境大文件導入限制破解,一站式覆蓋 MySQL 數據遷移核心技能。
桌面 → 我的電腦 → 屬性 → 環境變量 → 系統變量 Path 追加:
;C:\Program Files\MySQL\MySQL Server 5.7\bin(按實際安裝路徑調整)
mysql -h localhost -u root -p -- 登錄後 CREATE DATABASE dbname; USE dbname; SHOW TABLES; DESCRIBE tablename;
| 需求 | 命令 |
|---|---|
| 整庫導出 | mysqldump -h localhost -u root -p mydb > e:\mysql\mydb.sql |
| 單表導出 | mysqldump -h localhost -u root -p mydb mytable > e:\mysql\mytable.sql |
| 僅導出結構(含 DROP TABLE) | mysqldump -h localhost -u root -p mydb --add-drop-table > e:\mysql\mydb_stru.sql |
| 導出帶 INSERT 語句的數據 | mysqldump -h localhost -u root -p mydb --no-create-info > data.sql |
| 壓縮導出 | mysqldump ... | gzip > mydb.sql.gz |
-- 1. 建庫 mysql -h localhost -u root -p -e "CREATE DATABASE mydb2;" -- 2. 導入 mysql -h localhost -u root -p mydb2 < e:\mysql\mydb2.sql -- 或登錄後 source mysql> USE mydb2; mysql> SOURCE e:/mysql/mydb2.sql;
默認 max_allowed_packet=2M 導致大文件導入失敗。兩層配置:
[mysqld] max_allowed_packet = 512M -- 或更大 -- 重啟生效
; php.ini memory_limit = 512M upload_max_filesize = 512M post_max_size = 512M max_execution_time = 0 max_input_time = 0
split -l 10000 big.sql part_ 再循環 sourceSET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; SOURCE big.sql; SET autocommit=1; SET unique_checks=1; SET foreign_key_checks=1;
mysqlpump (5.7+) 並行導出/導入xtrabackup、mysqlbackup| 錯誤 | 原因 | 解決 |
|---|---|---|
| MySQL server has gone away | 包太大/超時 | 調大 max_allowed_packet、wait_timeout |
| Unknown collation | 字符集不匹配 | 導出時加 --default-character-set=utf8mb4 |
| Access denied | 權限不足 | 授予 FILE、SUPER 或用 root |