Hướng Dẫn Migrate VPS Sang Provider Mới Không Downtime 2026 - Chuyển Dữ Liệu An Toàn
VPS hiện tại chậm, đắt, hoặc support kém? Bạn muốn chuyển sang provider tốt hơn nhưng sợ downtime, mất dữ liệu, khách hàng không truy cập được? Bài viết này hướng dẫn migrate VPS không downtime, từng bước một, áp dụng cho WordPress, PHP, Node.js, database.
Bước 1: Chuẩn Bị VPS Mới
# Trên VPS mới (TrumVPS)
apt update && apt upgrade -y
apt install nginx php8.2-fpm mariadb-server redis-server certbot python3-certbot-nginx -y
Cài đặt cùng stack với VPS cũ (cùng version Nginx, PHP, MySQL) để tránh lỗi tương thích. Ghi lại version VPS cũ:
# Trên VPS cũ
nginx -v && php -v && mysql --version
Bước 2: Đồng Bộ File Website
Dùng rsync (nhanh nhất)
# Từ VPS cũ, đồng bộ sang VPS mới
rsync -avzP -e "ssh -p 22" /var/www/yourdomain.com/ root@NEW_IP:/var/www/yourdomain.com/
Rsync chỉ copy file thay đổi — lần đầu copy toàn bộ, lần sau chỉ copy delta. Với 10GB data, lần đầu ~10-30 phút, lần sync cuối ~1-2 phút.
Dùng tar + scp (nếu không có rsync)
tar -czf - /var/www/yourdomain.com | ssh root@NEW_IP "tar -xzf - -C /"
Bước 3: Đồng Bộ Database
# Trên VPS cũ — dump database
mysqldump -u root -p --all-databases > /tmp/all-db.sql
# Copy sang VPS mới
scp /tmp/all-db.sql root@NEW_IP:/tmp/
# Trên VPS mới — import
mysql -u root -p < /tmp/all-db.sql
# Tạo lại user + grant permissions nếu cần
Với database đang chạy (có user truy cập), dùng mysqldump --single-transaction để không lock bảng.
Bước 4: Đồng Bộ Cấu Hình Server
# Copy Nginx config
rsync -avz /etc/nginx/ root@NEW_IP:/etc/nginx/
# Copy PHP config
rsync -avz /etc/php/ root@NEW_IP:/etc/php/
# Copy cron jobs
crontab -l > /tmp/crontab.txt
scp /tmp/crontab.txt root@NEW_IP:/tmp/
ssh root@NEW_IP "crontab /tmp/crontab.txt"
# Copy SSL certificates
rsync -avz /etc/letsencrypt/ root@NEW_IP:/etc/letsencrypt/
Bước 5: Test VPS Mới
Trước khi chuyển DNS, test VPS mới bằng cách thêm domain vào file hosts local:
# Trên máy tính của bạn (Windows: C:\Windows\System32\drivers\etc\hosts, Mac/Linux: /etc/hosts)
1.2.3.4 yourdomain.com
Mở browser → https://yourdomain.com (bỏ qua cảnh báo SSL nếu có) → kiểm tra mọi thứ hoạt động. Test: đăng nhập admin, đặt hàng, form liên hệ, upload file... Đảm bảo không có lỗi gì.
Bước 6: Chuyển DNS — Bước Quan Trọng Nhất
- Giảm TTL DNS xuống 300 (5 phút) ít nhất 24h trước khi migrate, để DNS propagate nhanh
- Sync dữ liệu lần cuối (rsync delta + mysqldump cuối)
- Đổi DNS A record về IP VPS mới
- Đợi 5-30 phút cho DNS propagate
- Kiểm tra: DNS đã trỏ về IP mới chưa:
dig yourdomain.com - Giữ VPS cũ chạy thêm 24-48h để đảm bảo không mất traffic
- Tắt VPS cũ sau khi xác nhận mọi thứ OK
WordPress: Migrate Đặc Biệt
Nếu chuyển domain hoặc IP, cần update WordPress:
# Update site URL trong database
mysql -u root -p wordpress
UPDATE wp_options SET option_value='https://yourdomain.com' WHERE option_name='siteurl';
UPDATE wp_options SET option_value='https://yourdomain.com' WHERE option_name='home';
# Hoặc dùng WP-CLI
wp search-replace 'http://old-domain.com' 'https://new-domain.com'
Bước 7: Timeline Migrate Chuẩn — Timeline 48 Giờ
Dưới đây là timeline migrate VPS KHÔNG downtime được các sysadmin chuyên nghiệp sử dụng:
| Thời điểm | Công việc | Ai làm | Thời gian |
|---|---|---|---|
| T-48h | Giảm TTL DNS xuống 300s, thuê VPS mới | Admin | 30 phút |
| T-24h | Cài stack trên VPS mới, rsync lần đầu | Admin | 1-2 giờ |
| T-12h | Import database, cấu hình Nginx/PHP | Admin | 1 giờ |
| T-6h | Test VPS mới qua file hosts, sửa lỗi | Admin + Dev | 2-3 giờ |
| T-2h | Thông báo team/khách hàng về migrate | PM/Support | 15 phút |
| T-30min | Bật maintenance mode, sync database cuối | Admin | 5-10 phút |
| T-0 | Đổi DNS → IP mới | Admin | 1 phút |
| T+5min | Kiểm tra DNS propagate: dig +short yourdomain.com | Admin | 1 phút |
| T+30min | Tắt maintenance mode trên VPS mới, test toàn bộ | Admin + Dev | 30 phút |
| T+24h | Theo dõi log lỗi, kiểm tra backup chạy đúng | Admin | 30 phút |
| T+48h | Xác nhận mọi thứ OK, tắt VPS cũ | Admin | 15 phút |
Bước 8: Database Replication — Đồng Bộ Thời Gian Thực
Với website có nhiều user đang hoạt động, sync database 1 lần chưa đủ. Dùng MySQL Replication để đồng bộ liên tục từ VPS cũ → VPS mới:
# Trên VPS cũ (Master) - /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = your_database
# Tạo user replication
CREATE USER 'repl'@'NEW_VPS_IP' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'NEW_VPS_IP';
FLUSH PRIVILEGES;
# Trên VPS mới (Slave) - /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
read_only = 1 # Không cho ghi trực tiếp
# Import database từ master, rồi:
CHANGE MASTER TO
MASTER_HOST='OLD_VPS_IP',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=12345;
START SLAVE;
SHOW SLAVE STATUS\G # Kiểm tra Seconds_Behind_Master = 0
Với replication, database VPS mới luôn đồng bộ với VPS cũ. Khi đổi DNS, chỉ cần: dừng slave → tắt read_only → promote làm master mới. Downtime: 0 giây.
Bước 9: Migrate Email Server
Nếu VPS cũ đang chạy mail server (Postfix/Dovecot), cần migrate email data:
# Sync email data
rsync -avz /var/mail/ root@NEW_IP:/var/mail/
rsync -avz /etc/postfix/ root@NEW_IP:/etc/postfix/
rsync -avz /etc/dovecot/ root@NEW_IP:/etc/dovecot/
# Đừng quên update MX record trong DNS!
Lưu ý: Email rất nhạy cảm với downtime. Nên set up VPS mới làm MX backup (priority thấp hơn) trong 24-48h để không mất email nào trong quá trình chuyển DNS.
Các Lỗi Thường Gặp & Cách Khắc Phục
1. Website Hiển Thị Sai Sau Migrate
- Cache cũ: Xóa tất cả cache — Nginx FastCGI cache, Redis, WordPress cache plugin, Cloudflare cache
- PHP version khác: Kiểm tra
php -vtrên cả 2 VPS, cài đúng version - PHP extensions thiếu:
php -mtrên VPS cũ → cài thiếu trên VPS mới - File permission sai:
chown -R www-data:www-data /var/www/
2. SSL Không Hoạt Động
- Copy thiếu thư mục
/etc/letsencrypt/ - Giải pháp: chạy lại
certbot --nginx -d yourdomain.comtrên VPS mới sau khi DNS propagate
3. Email Không Gửi/Nhận Được
- MX record chưa cập nhật → kiểm tra
dig MX yourdomain.com - SPF/DKIM/DMARC record cần update IP mới
- Port 25 bị chặn trên VPS mới → kiểm tra với provider
4. Database Import Bị Lỗi
- File dump quá lớn: dùng
mysql < dump.sqlthay vì phpMyAdmin - Charset mismatch: thêm
--default-character-set=utf8mb4khi dump và import - Definer error: thay user definer trong dump hoặc tạo user tương ứng
Migration Checklist — Đừng Bỏ Sót Bước Nào
- ✅ Ghi lại toàn bộ version: OS, Nginx, PHP, MySQL, Redis, Node.js...
- ✅ Backup toàn bộ VPS cũ (snapshot hoặc tar toàn bộ)
- ✅ Giảm TTL DNS về 300s, đợi 24h cho propagate
- ✅ Cài đúng stack trên VPS mới
- ✅ Rsync file code
- ✅ Dump & import database
- ✅ Copy cấu hình Nginx, PHP, Cron, SSL
- ✅ Test qua file hosts local
- ✅ Bật maintenance mode trên VPS cũ
- ✅ Sync database lần cuối
- ✅ Đổi DNS → IP mới
- ✅ Theo dõi DNS propagate (dùng whatsmyDNS.net)
- ✅ Tắt maintenance mode, test toàn bộ
- ✅ Cập nhật SPF/DKIM/DMARC nếu có mail server
- ✅ Theo dõi 48h, giữ VPS cũ chạy
- ✅ Tắt VPS cũ sau khi xác nhận OK
Câu Hỏi Thường Gặp (FAQ)
Migrate VPS mất bao lâu?
Với website nhỏ (1-2GB data): 2-4 giờ. Website lớn (10-50GB data): 1-2 ngày (chủ yếu do rsync lần đầu). Database >10GB: dùng replication để tránh downtime khi dump. Tổng downtime thực tế: 0 phút (nếu làm đúng).
Có cần thuê người migrate không?
Nếu bạn hiểu Linux cơ bản và làm theo hướng dẫn này → tự làm được. Nếu website có revenue (bán hàng, SaaS) hoặc database >5GB → nên thuê sysadmin (500K-1.5M/lần) để an toàn. TrumVPS có team hỗ trợ migrate miễn phí nếu bạn chuyển về.
Provider cũ có hỗ trợ migrate đi không?
Thường là KHÔNG (họ không muốn mất khách). Bạn phải tự làm hoặc nhờ provider mới. TrumVPS hỗ trợ migrate vào miễn phí — ngược lại, nhiều provider không hỗ trợ migrate ra.
Làm sao để biết DNS đã propagate xong?
Dùng WhatsMyDNS.net — check A record của bạn từ 20+ locations toàn cầu. Khi tất cả đều trỏ về IP mới → propagate hoàn tất. Thường mất 5-30 phút với TTL 300s.
Migrate Về TrumVPS — Nhanh Hơn, Rẻ Hơn
NVMe SSD, CPU Platinum, test trước khi mua. Team hỗ trợ migrate miễn phí.
🚀 Chuyển Về TrumVPS