Hướng dẫn · 19/09/2026

Hướng dẫn chuyển WordPress sang hosting mới không downtime

Chuyển hosting WordPress không khó ở thao tác copy file, mà khó ở việc không mất đơn hàng, bình luận hoặc dữ liệu phát sinh trong lúc chuyển. Một quy trình tốt phải chuẩn bị đường lui, kiểm thử máy chủ mới trước khi đổi DNS và kiểm soát khoảng thời gian hai máy chủ cùng tồn tại.

Hướng dẫn chuyển WordPress sang hosting mới không downtime

Chuyển hosting WordPress không khó ở thao tác copy file, mà khó ở việc không mất đơn hàng, bình luận hoặc dữ liệu phát sinh trong lúc chuyển. Một quy trình tốt phải chuẩn bị đường lui, kiểm thử máy chủ mới trước khi đổi DNS và kiểm soát khoảng thời gian hai máy chủ cùng tồn tại.

Hướng dẫn này áp dụng cho website WordPress đơn lẻ giữ nguyên tên miền. Multisite, WooCommerce lưu lượng lớn hoặc hệ thống có nhiều dịch vụ ghi dữ liệu cần kế hoạch riêng và nên diễn tập trên staging.

Mục tiêu và nguyên tắc

  • Website công khai vẫn truy cập được trong phần lớn quá trình.
  • Bản sao trên máy chủ mới được kiểm thử trước khi nhận traffic thật.
  • Khoảng đóng băng ghi dữ liệu cuối cùng ngắn và có thông báo rõ ràng.
  • Máy chủ cũ được giữ nguyên đủ lâu để rollback.
  • Mọi secret, backup và tài khoản tạm được dọn sau khi hoàn tất.
DNS không chuyển người dùng đồng loạt. Trong thời gian cache, một số truy cập có thể đến máy chủ cũ và số khác đến máy chủ mới.

1. Kiểm kê trước khi di chuyển

Ghi lại PHP, MySQL/MariaDB, WordPress, web server, extension PHP, cron, dung lượng file/database và cấu hình email. Kiểm tra plugin cache, security, backup, object cache, CDN và các tích hợp thanh toán hoặc webhook.

wp core version
wp plugin list
wp theme list
wp db size
wp cron event list

Xác nhận hosting mới hỗ trợ phiên bản PHP và extension cần dùng. Kiểm tra giới hạn upload, memory, execution time, cron, SSL, HTTP/2 hoặc HTTP/3, quyền file và khả năng gửi mail. Không nâng cấp WordPress, PHP và plugin cùng lúc với chuyển hosting; quá nhiều thay đổi làm khó xác định nguyên nhân khi có lỗi.

2. Giảm TTL DNS trước ngày chuyển

Trước 24–48 giờ, giảm TTL của record web xuống khoảng 300 giây nếu DNS provider cho phép. Việc này không làm cache cũ biến mất ngay; phải chờ TTL trước đó hết hạn.

Kiểm kê toàn bộ record trước khi thay nameserver hoặc zone: A, AAAA, CNAME, MX, SPF, DKIM, DMARC và record xác minh. Nếu chỉ chuyển website, không thay đổi record email. Một record AAAA cũ có thể khiến người dùng IPv6 tiếp tục vào máy chủ cũ dù record A đã đổi.

3. Tạo và kiểm tra backup

Cần tối thiểu hai phần: toàn bộ file WordPress và database. Không quên wp-content/uploads, plugin, theme, mu-plugin, .htaccess, cấu hình Nginx/Apache và cron bên ngoài WordPress.

wp db export ~/backup/site-pre-migration.sql
tar -czf ~/backup/site-files.tar.gz \
  --exclude='wp-content/cache' \
  /var/www/example.com

Lưu backup ngoài máy chủ nguồn, mã hóa nếu chứa dữ liệu nhạy cảm và kiểm tra file có đọc được. Tốt nhất hãy thử restore vào môi trường tạm. Một file backup chưa từng được khôi phục chỉ là giả định.

4. Chuẩn bị hosting mới

Tạo virtual host, database và database user với quyền tối thiểu. Cài đúng runtime, bật HTTPS và cấu hình redirect nhưng chưa đổi DNS. Nếu dùng Let's Encrypt mà domain chưa trỏ sang máy mới, dùng DNS challenge hoặc chứng chỉ tạm theo khả năng nhà cung cấp.

Copy file bằng công cụ giữ timestamp và permission. Với SSH, rsync thuận tiện cho nhiều lần đồng bộ:

rsync -aH --delete \
  --exclude='wp-content/cache/' \
  user@old-server:/var/www/example.com/ \
  /var/www/example.com/

Thận trọng với --delete: chạy dry-run và kiểm tra đúng source/destination trước. Không copy cache, session hoặc backup cũ nếu không cần.

5. Import database và cập nhật cấu hình

wp db import ~/backup/site-pre-migration.sql
wp db check

Cập nhật DB_NAME, DB_USER, DB_PASSWORDDB_HOST trong wp-config.php. Không đưa file cấu hình hoặc SQL dump vào thư mục public có thể tải qua web.

Nếu giữ nguyên domain và đường dẫn, thường không cần search-replace URL. Nếu domain hoặc giao thức thay đổi, không dùng lệnh SQL REPLACE() mù quáng vì WordPress lưu nhiều giá trị serialized. WP-CLI xử lý serialized data:

wp search-replace 'http://old.example' 'https://new.example' \
  --skip-columns=guid --dry-run

wp search-replace 'http://old.example' 'https://new.example' \
  --skip-columns=guid

Luôn chạy --dry-run trước. Với Multisite, cần tùy chọn và quy trình riêng; không áp dụng nguyên xi ví dụ của single site.

6. Kiểm thử trước khi đổi DNS

Cách chính xác nhất là sửa file hosts trên máy kiểm thử để domain thật trỏ tạm đến IP hosting mới. Trình duyệt gửi đúng hostname, WordPress dùng đúng URL và HTTPS/SNI được kiểm tra gần giống production.

203.0.113.20 example.com www.example.com

Sau khi lưu, xóa DNS cache nếu cần và mở cửa sổ riêng tư. Chỉ máy đã sửa hosts nhìn thấy hosting mới; người dùng vẫn ở máy cũ.

Kiểm tra tối thiểu:

  • Trang chủ, bài viết, category, tìm kiếm và URL 404.
  • Đăng nhập/đăng xuất quản trị, upload ảnh và chỉnh sửa bài.
  • Form liên hệ, email giao dịch, CAPTCHA và webhook.
  • Giỏ hàng, checkout, callback thanh toán trên môi trường test phù hợp.
  • Permalink, redirect, robots.txt, sitemap và canonical URL.
  • Ảnh, CSS, JavaScript, font và mixed content.
  • WP-Cron, cron hệ thống, queue và tác vụ backup.
wp core verify-checksums
wp plugin status
wp rewrite flush
wp cache flush

wp rewrite flush chỉ chạy khi cần và sau khi web server đã có rule permalink đúng. Xem PHP error log, web server log và console trình duyệt thay vì chỉ nhìn trang chủ.

7. Đồng bộ lần cuối mà không mất dữ liệu

Website nội dung ít thay đổi có thể bật maintenance/read-only ngắn trên máy cũ, dừng cron/queue, export database lần cuối và rsync phần upload phát sinh. Với WooCommerce hoặc membership, đây là bước quan trọng nhất.

  1. Thông báo cửa sổ bảo trì ngắn và tạm chặn thao tác ghi.
  2. Dừng worker, WP-Cron hoặc webhook consumer trên máy cũ.
  3. Export database cuối cùng.
  4. Đồng bộ lại wp-content/uploads và file phát sinh.
  5. Import database cuối vào máy mới.
  6. Xóa cache, chạy smoke test và mở ghi trên máy mới.

Không để cron và queue chạy trên cả hai máy cùng lúc vì email, subscription hoặc job có thể bị xử lý hai lần. Với website không chấp nhận maintenance window, cần replication hoặc cơ chế đồng bộ cấp ứng dụng phức tạp hơn.

8. Chuyển DNS

Đổi record A/AAAA sang IP mới, hoặc cập nhật load balancer theo kiến trúc. Không xóa cấu hình cũ. Theo dõi access log ở cả hai máy để thấy traffic dịch chuyển.

dig +short example.com A
dig +short example.com AAAA
curl -I https://example.com

Kiểm tra từ nhiều mạng hoặc resolver, không chỉ máy đã chỉnh hosts. Nếu dùng CDN/proxy, purge cache có kiểm soát và xác nhận origin mới. Giữ maintenance/read-only trên máy cũ trong giai đoạn DNS chuyển tiếp để không phát sinh dữ liệu phân mảnh.

9. Theo dõi sau chuyển đổi

Trong 24–72 giờ đầu, theo dõi:

  • HTTP 4xx/5xx, PHP fatal error và slow query.
  • CPU, RAM, disk, inode, I/O và connection database.
  • Đăng nhập, form, đơn hàng, thanh toán và email.
  • WP-Cron, queue, backup và webhook.
  • SSL chain, redirect HTTP→HTTPS và mixed content.
  • Traffic còn đến IP cũ và bot dùng DNS cache dài.

Khi ổn định, tăng TTL về mức vận hành thông thường. Tạo backup mới từ hosting mới và thử một thao tác restore nhỏ.

10. Kế hoạch rollback

Nếu lỗi nghiêm trọng trước khi có dữ liệu mới trên hosting mới, đổi DNS về IP cũ và mở lại dịch vụ cũ. Nếu máy mới đã nhận đơn hàng hoặc nội dung, rollback không còn là đổi DNS đơn giản: phải quyết định cách hợp nhất dữ liệu phát sinh.

Đặt ngưỡng rollback trước khi chuyển, ví dụ tỷ lệ lỗi, checkout thất bại hoặc latency. Ghi rõ người ra quyết định, thời gian chờ DNS và cách xử lý dữ liệu mới. Giữ máy cũ, database và backup nguyên trạng ít nhất vài ngày hoặc theo yêu cầu tuân thủ.

Dọn dẹp an toàn

Sau thời gian quan sát và khi không còn traffic hợp lệ tới máy cũ:

  • Thu hồi SSH key, tài khoản và token di chuyển tạm.
  • Xóa SQL dump khỏi web root và thư mục tạm.
  • Tắt cron/worker cũ, sau đó mới hủy hosting cũ.
  • Cập nhật tài liệu hạ tầng, monitoring, backup và danh sách IP.
  • Kiểm tra lại quyền file: thư mục thường 755, file 644, tránh 777.
  • Đổi secret nếu chúng từng được chia sẻ qua kênh không an toàn.

Checklist nhanh

  1. Kiểm kê runtime, plugin, cron và tích hợp.
  2. Giảm TTL trước 24–48 giờ.
  3. Backup file và database, kiểm tra khả năng restore.
  4. Dựng hosting mới, copy và import bản đầu.
  5. Kiểm thử bằng hosts với domain thật.
  6. Đóng băng ghi ngắn, đồng bộ database/file lần cuối.
  7. Chuyển DNS và theo dõi cả hai máy.
  8. Giữ máy cũ cho rollback, sau đó dọn secret và backup tạm.

Kết luận

Một lần chuyển WordPress an toàn cần nhiều vòng đồng bộ và kiểm chứng, không phải một cú copy rồi đổi DNS. Chuẩn bị backup có thể restore, thử hosting mới bằng hosts, kiểm soát thao tác ghi trong lần đồng bộ cuối và giữ đường rollback sẽ giảm đáng kể rủi ro mất dữ liệu hoặc gián đoạn dịch vụ.

Tài liệu tham khảo

Thảo luận

Bình luận 0

Đăng nhập để bình luận

Bạn cần có tài khoản để tham gia thảo luận và trả lời độc giả khác.

Đăng nhậpĐăng ký

Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến.