Skip to content
VDS · Cơ sở dữ liệu

Di chuyển cơ sở dữ liệu từ máy chủ khác

Quy trình di chuyển cơ sở dữ liệu sang Millida VDS: chuẩn bị, truyền dump qua mạng, kiểm tra tính toàn vẹn, và chuyển ứng dụng với thời gian gián đoạn tối thiểu.

Cập nhật 23 tháng 8, 2026

Việc di chuyển cơ sở dữ liệu không thất bại ở các câu lệnh — nó thất bại ở thứ tự các bước: người ta chuyển domain trước rồi mới phát hiện ra một nửa dữ liệu chưa được chuyển sang. Dưới đây là trình tự giúp tránh điều đó.

Chuẩn bị

Trên máy mới, hãy cài đặt phiên bản máy chủ cơ sở dữ liệu tương đương hoặc mới hơn — PostgreSQL hoặc MySQL. Không hỗ trợ hạ cấp phiên bản.

psql --version
mysql --version
df -h /

Bạn cần khoảng 2,5 lần kích thước cơ sở dữ liệu dung lượng trống: bản dump, dữ liệu đã giải nén và một khoảng dự phòng. Trên VDS-1, tổng cộng là 40 GB, vì vậy hãy tính toán trước.

Tạo một người dùng và một cơ sở dữ liệu trống có cùng bảng mã như trên máy chủ cũ.

Di chuyển dữ liệu

Cách đơn giản nhất là dump qua SSH, không cần tệp trung gian:

ssh root@OLD 'pg_dump -Fc -U shop shop' > /srv/shop.dump
pg_restore -U postgres -d shop --no-owner --role=shop /srv/shop.dump

Với MySQL:

ssh root@OLD 'mysqldump --single-transaction --routines --events -u root shop' \
  | mysql -u root shop

Role và người dùng không nằm trong bản dump cơ sở dữ liệu — bạn xuất chúng riêng: pg_dumpall --roles-only, hoặc tạo thủ công — xem người dùng và quyền.

Băng thông lên tới 500 Mbps, nên một cơ sở dữ liệu 20 GB sẽ được di chuyển chỉ trong vài phút; nút thắt thường là tốc độ ghi đĩa, vốn bị giới hạn bởi tier.

Kiểm tra trước khi chuyển

Hãy kiểm tra các con số, không chỉ "trang web đã tải được":

SELECT relname, n_live_tup FROM pg_stat_user_tables ORDER BY n_live_tup DESC LIMIT 20;
SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema='shop';

So sánh số lượng bản ghi trong các bảng chính với máy chủ cũ, kiểm tra xem các sequence có bị đặt lại không (SELECT last_value FROM users_id_seq;), và chạy ứng dụng với cơ sở dữ liệu mới ở chế độ thử nghiệm.

Chuyển đổi

  1. Bật chế độ bảo trì hoặc dừng ứng dụng trên máy chủ cũ.
  2. Tạo bản dump cuối cùng cho những thay đổi phát sinh trong quá trình chuẩn bị.
  3. Khôi phục bản dump đó trên máy mới.
  4. Đổi chuỗi kết nối của ứng dụng và khởi động lại dịch vụ.
  5. Giữ máy chủ cũ chạy thêm một tuần mà không xóa dữ liệu.

Đừng bỏ qua bước năm: việc phát hiện một bảng bị thiếu sau ba ngày là chuyện thường gặp.

Những lỗi thường gặp

Triệu chứngNguyên nhân
role does not exist khi khôi phụcRole chưa được di chuyển — dùng --no-owner kèm tạo role thủ công
Ký tự bị lỗiBảng mã không khớp: khôi phục vào cơ sở dữ liệu dùng utf8mb4 hoặc UTF8
Sequence bắt đầu từ 1Bản dump chỉ chứa dữ liệu, không có setval
Khôi phục mất hàng giờCác index đang được xây dựng trong lúc chạy; với cơ sở dữ liệu lớn, dùng pg_restore -j 4
Hết dung lượng giữa chừngChưa tính đến kích thước bản dump cùng với dữ liệu

Trước khi di chuyển, hãy kiểm tra rằng cơ sở dữ liệu mới chỉ lắng nghe trên 127.0.0.1. Không cần phải mở nó ra công khai "trong suốt quá trình di chuyển" — việc truyền dữ liệu diễn ra qua SSH, xem truy cập từ xa.