0
0
Lập trình
Admin Team
Admin Teamtechmely

Kinh nghiệm Migrate Microsoft SQL Server: Hướng dẫn chi tiết và giải pháp tối ưu

Đăng vào 1 tuần trước

• 5 phút đọc

Giới thiệu

Gần đây, mình đã có cơ hội làm việc với một loại cơ sở dữ liệu mới, đó là Microsoft SQL Server (MSSQL). Công việc của mình là di chuyển (migrate) dữ liệu từ các cơ sở dữ liệu này sang môi trường khác. Qua quá trình thực hiện, mình đã tích lũy được nhiều kinh nghiệm quý báu mà mình muốn chia sẻ. Trong bài viết này, mình sẽ cùng bạn tổng hợp các phương pháp di chuyển dữ liệu cho SQL Server, tập trung chủ yếu vào môi trường SQL Server On-premise. Các phương pháp trên Cloud cũng sẽ được đề cập qua kinh nghiệm cá nhân của mình.

Những điều cần chuẩn bị trước khi di chuyển cơ sở dữ liệu

Trước khi tiến hành di chuyển một cơ sở dữ liệu SQL Server, bạn cần trả lời một số câu hỏi quan trọng:

  • Có yêu cầu Zero Downtime cho hệ thống không?

    Điều này có nghĩa là khi chuyển đổi điểm cuối của cơ sở dữ liệu sang cơ sở dữ liệu mới, liệu hệ thống có bị ngừng hoạt động không? Nếu hệ thống không có yêu cầu SLA cao, việc có downtime khi di chuyển có thể chấp nhận. Tuy nhiên, nếu bạn có kế hoạch cho thời gian không hoạt động, hãy đánh giá chi phí và nỗ lực cần thiết để thực hiện di chuyển mà không làm gián đoạn dịch vụ.

  • Những thông tin nào cần được chuyển?

    Khi di chuyển SQL Server, bạn sẽ cần chuyển các thông tin như: schema (tables, indexes...), dữ liệu (data trong các bảng), stored procedures, views và người dùng của cơ sở dữ liệu. Hãy làm rõ với nhóm phát triển hoặc quản lý những thông tin cần chuyển để tiết kiệm thời gian.

Trong bài viết này, mình sẽ sử dụng một số thuật ngữ tiếng Anh để dễ diễn đạt:

  • Migrate: Dịch chuyển dữ liệu nói chung
  • Source database: Cơ sở dữ liệu nguồn cần sao chép dữ liệu từ
  • Destination database: Cơ sở dữ liệu đích được sao chép dữ liệu tới

Giải pháp di chuyển không có downtime

Trong nhiều trường hợp, di chuyển không có downtime luôn được ưu tiên chính vì nhiều lợi ích mà nó mang lại.

Tính năng replication

Replication là một tính năng có sẵn trong SQL Server, giúp cấu hình cơ sở dữ liệu đích (Destination SQL Server) như một Subscriber để theo dõi và sao chép sự thay đổi dữ liệu từ cơ sở dữ liệu nguồn (Publisher). Nói chung, có ba vai trò: Publisher, Subscriber và Distributor (thường được cài đặt trên cơ sở dữ liệu nguồn).

Cách thức hoạt động:

  1. Sau khi cấu hình Publication cho một cơ sở dữ liệu, cơ sở dữ liệu nguồn sẽ tạo một bản snapshot chứa dữ liệu hiện tại.
  2. Snapshot này sẽ được đẩy lên một shared folder, nơi mà cả hai cơ sở dữ liệu đều có thể truy cập.
  3. Tiếp theo, khi đã cấu hình Subscription cho cơ sở dữ liệu đích, nó sẽ kéo bản snapshot về để khởi tạo dữ liệu ban đầu.
  4. Sau khi khởi tạo, cơ sở dữ liệu đích sẽ liên tục giám sát và tiếp nhận các transaction logs (log file ghi lại tất cả câu lệnh SQL) từ cơ sở dữ liệu nguồn.

Ưu điểm:

  • Chuyển dữ liệu rất nhanh (vài giây).
  • Thiết lập dễ dàng bằng Server Management Studio (SSMS).
  • Hỗ trợ di chuyển tất cả các loại dữ liệu: schema, data, stored procedures, views và user.
  • Có khả năng phát hiện thay đổi schema.

Nhược điểm:

  • Hai cơ sở dữ liệu cần có mạng nối.
  • Nếu cần sao chép thay đổi schema, phải tạo snapshot thủ công.

Sao lưu toàn bộ và transaction log files

Bạn có thể sử dụng hai loại file này để di chuyển dữ liệu lên Cloud hoặc viết script để sao lưu và phục hồi dữ liệu định kỳ từ cơ sở dữ liệu nguồn tới cơ sở dữ liệu đích.

Cách thức hoạt động:

  1. Tạo bản Full Backup lần đầu từ cơ sở dữ liệu nguồn bằng lệnh BACKUP DATABASE.
  2. Khôi phục bản sao này vào cơ sở dữ liệu đích bằng lệnh RESTORE DATABASE.
  3. Sao lưu transaction log định kỳ cùng với các file logs từ cơ sở dữ liệu nguồn.

Ưu điểm:

  • Dễ dàng sao chép dữ liệu qua script định kỳ.
  • Bạn có thể khôi phục dữ liệu tại bất kỳ thời điểm nào nhờ có transaction logs.

Nhược điểm:

  • Có thể tắt encryption nếu đang mở trên cơ sở dữ liệu.
  • Không phải tất cả dịch vụ SQL Server trên Cloud đều hỗ trợ tự động sao lưu.

Always On Availability Group

Phương pháp này cho phép cơ sở dữ liệu đích hoạt động như một replica. Khi có sự cố, sẽ tự động failover điểm đến replica.

Change Data Capture (CDC) và Change Tracking

Cả hai tính năng này đều theo dõi sự thay đổi trong table và lưu lại thông tin để sau đó có thể sao chép qua cơ sở dữ liệu đích.

Ưu điểm:

  • Có thể tích hợp với công cụ bên thứ ba để sao chép dữ liệu.

Nhược điểm:

  • Chi phí cao khi sử dụng công cụ bên thứ ba.
  • Mức sử dụng tài nguyên trên cơ sở dữ liệu nguồn tăng lên.

Giải pháp di chuyển với downtime

Đối với các giải pháp có downtime, mình sử dụng phương thức backup & restore. Thời gian downtime sẽ bao gồm thời gian sao lưu và thời gian phục hồi.

Sử dụng công cụ command line

  • bcp: Công cụ này cho phép dump dữ liệu nhanh chóng, rất hiệu quả cho quy trình sao lưu lớn.
  • sqlcmd: Công cụ để lưu trữ và phục hồi dữ liệu của một table, mặc dù có thể gặp một số lỗi.

Sử dụng công cụ UI

SQL Server Management Studio (SSMS) cũng hỗ trợ backup và restore dữ liệu. Tuy nhiên, cần lưu ý về định dạng file và dung lượng dữ liệu.

Kết luận

Mặc dù bài viết này đã trình bày một số phương pháp di chuyển dữ liệu đến từ kinh nghiệm của mình, mình tin rằng vẫn còn nhiều cách khác để làm điều này. Hy vọng bài viết này sẽ hữu ích cho bạn trong việc di chuyển dữ liệu SQL Server. Nếu bạn thấy bài viết này thú vị, hãy cho mình một UpVote và theo dõi để biết thêm bài viết khác nhé. Chúc bạn một ngày tốt lành!

Quảng cáo

Nếu bạn đang gặp khó khăn trong vấn đề chuyên môn hoặc cần hỗ trợ về hệ thống, hãy liên hệ với mình để nhận sự hỗ trợ tốt nhất: https://hoangviet.io.vn/
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào