Nội dung được biên soạn lại từ Anh Nguyen - kèm nguồn bài viết (nếu có)
Khi làm việc với WAMP (Windows + Apache + MySQL + PHP), bạn có sẵn MySQL server để quản lý database cho website. Tuy nhiên, khi cần import file SQL lớn (vài GB đến chục GB), dùng phpMyAdmin gần như luôn thất bại vì giới hạn upload_max_filesize và max_execution_time. Cách giải quyết tối ưu là import trực tiếp bằng dòng lệnh (CLI).
1️⃣ Xác định đường dẫn MySQL trong WAMP
Trên Windows, MySQL được cài kèm trong thư mục WAMP:
C:\wamp64\bin\mysql\mysql8.0.28\bin
(Thay 8.0.28 bằng đúng phiên bản MySQL của bạn.)
2️⃣ Mở Command Prompt và truy cập MySQL
-
Nhấn Windows + R → gõ
cmd→ Enter -
Di chuyển đến thư mục MySQL bin:
cd C:\wamp64\bin\mysql\mysql8.0.28\bin
- Đăng nhập MySQL:
mysql -u root -p
(Nhấn Enter nếu chưa đặt mật khẩu cho root.)
3️⃣ Tạo Database trước khi import
Nếu database chưa tồn tại:
CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;
4️⃣ Import file SQL qua CLI
Ví dụ bạn có file:
C:\Projects\DB\backup.sql
Import bằng lệnh:
mysql -u root -p my_database < C:\Projects\DB\backup.sql
Nếu MySQL chạy trên port khác (vd: 3307):
mysql -u root -p -P 3307 my_database < C:\Projects\DB\backup.sql
5️⃣ Import file nén (.zip / .gz)
Khi file database quá lớn (vài GB), bạn nên dùng file nén để tránh lỗi “Out of Memory” hoặc “Server has gone away”.
Cách 1: Giải nén trước rồi import
Giải nén file .zip ra .sql, rồi import như bình thường:
mysql -u root -p my_database < E:\Projects\DB\backup.sql
Cách 2: Import trực tiếp từ file .gz (Linux tools trên Windows)
Nếu bạn cài Git Bash hoặc WSL (Windows Subsystem for Linux):
zcat C:/Projects/DB/backup.sql.gz | "C:/wamp64/bin/mysql/mysql8.0.28/bin/mysql.exe" -u root -p my_database
hoặc
gunzip -c C:/Projects/DB/backup.sql.gz | "C:/wamp64/bin/mysql/mysql8.0.28/bin/mysql.exe" -u root -p my_database
Cách 3: Import file .zip bằng PowerShell
Dành cho Windows 10+:
powershell -command "Expand-Archive -Path 'C:\Projects\DB\backup.zip' -DestinationPath 'D:\Projects\DB\temp' -Force; Get-Content 'D:\Projects\DB\temp\backup.sql' | & 'C:\wamp64\bin\mysql\mysql8.0.28\bin\mysql.exe' -u root -p my_database"
(PowerShell sẽ tự giải nén và stream nội dung vào MySQL.)
6️⃣ Tại sao import file nén nhanh và ổn định hơn
| Tiêu chí | File .sql thường | File .zip / .gz |
|---|---|---|
| Kích thước | ~10GB | ~2GB (nén 70–80%) |
| Số lần đọc đĩa | Rất nhiều | Ít hơn đáng kể |
| RAM tiêu thụ | Cao, dễ lỗi Out of Memory | Thấp, do giải nén theo luồng |
| Tốc độ | 1–2 MB/s | 15–40 MB/s |
| Tỷ lệ thành công | Thấp, dễ timeout | Cao, ổn định hơn |
Lý do: File nén giúp MySQL đọc tuần tự (stream), giảm gánh nặng cho RAM và I/O.
7️⃣ Cấu hình MySQL để import file lớn
Mở file:
C:\wamp64\bin\mysql\mysql8.0.28\my.ini
Tìm và tăng các giá trị sau:
[mysqld]
max_allowed_packet = 1024M
innodb_log_file_size = 512M
net_read_timeout = 600
net_write_timeout = 600
wait_timeout = 28800
Rồi Restart WAMP để áp dụng thay đổi.
8️⃣ Khi database quá lớn (10GB+)
Giải pháp 1: Dùng file .gz và stream trực tiếp
gunzip -c D:/Projects/DB/backup.sql.gz | "C:/wamp64/bin/mysql/mysql8.0.28/bin/mysql.exe" -u root -p my_database
✔ Không cần giải nén ra ổ cứng ✔ Import nhanh hơn và ít lỗi hơn
Giải pháp 2: Chia nhỏ file .sql
Nếu bắt buộc dùng .sql, bạn có thể chia file bằng script như SplitMySQLDump hoặc công cụ CLI:
mysqldump --split --lines=500000 -u root -p my_database > part_
Sau đó import từng phần một:
mysql -u root -p my_database < part_1.sql
Giải pháp 3: Tăng dung lượng bộ nhớ tạm
Khi import các file cực lớn, nên tăng bộ nhớ hệ thống ảo (pagefile) hoặc đảm bảo còn trống ít nhất gấp 2 lần dung lượng file trên ổ C:/.
9️⃣ Tạo file batch tự động import
Nếu bạn thường xuyên import file .gz, có thể tạo file import_db.bat như sau:
@echo off
set MYSQL_PATH=C:\wamp64\bin\mysql\mysql8.0.28\bin
set DB_NAME=my_database
set FILE_PATH=E:\Projects\DB\backup.sql.gz
echo Importing %FILE_PATH% into %DB_NAME%
gunzip -c %FILE_PATH% | "%MYSQL_PATH%\mysql.exe" -u root -p %DB_NAME%
pause
Chỉ cần double click để import — không cần gõ lệnh thủ công.
🔟 Lưu ý bảo mật & hiệu năng
- Luôn backup database trước khi import (
mysqldump). - Khi import 10GB+, tắt antivirus tạm thời để giảm CPU usage.
- Không chạy nhiều tiến trình PHP/WAMP song song khi import.
- Sau khi import xong, **chạy lệnh optimize:**USE my_database; ANALYZE TABLE your_table; OPTIMIZE TABLE your_table;
Kết luận
Import MySQL qua CLI trên Windows bằng WAMP là phương pháp ổn định, nhanh và an toàn nhất cho database lớn.
Khi dữ liệu vượt quá vài GB:
- Luôn dùng file nén (.gz/.zip).
- Tăng cấu hình
my.ini. - Dùng streaming import (
gunzip -c | mysql) thay vì giải nén thủ công.
Làm đúng các bước này, bạn có thể import database 10-50GB mà không sợ treo CMD, lỗi Server has gone away hay Out of memory.
Trải nghiệm tốt nhất từ thực hành — Anh Nguyen
← Danh sách bài viết