Làm sao để migrate database từ SQL Server lên Azure SQL Database?

Trong bài viết này mình xin giới thiệu qua về các phương pháp để migrate database từ SQL Server lên SQL Database. Nhìn chung có các bước chính sau cần làm:

  • Test for Compatibility: Chúng ta cần kiểm tra độ tương thích của database hiện tại với SQL Database V12, version được sử dụng trên Azure.
  • Fix Compatibility Issues: Fix các lỗi không tương thích nếu có.
  • Perform the migration: Sau khi đảm bảo độ tương thích, tiến hành migrate database lên SQL Database.

Biểu đồ sau đây biểu thị các bước và các phương pháp để thực hiện migration:

Azure Migration Steps

Bước 1: Test for Compatibility

Để kiểm tra độ tương thích của database hiện tại với SQL Database, bạn có thể dùng một số công cụ sau:

  • SQL Server Data Tools (SSDT) kèm trong Visual Studio: SSDT kiểm tra các lỗi không tương thích dựa theo những rules mới nhất. Nếu phát hiện lỗi, bạn có thể trực tiếp sử dụng tool để fix lỗi. Hiện tại đây là phương pháp được khuyến cáo sử dụng để test và fix các lỗi không tương thích với SQL Database V12.
  • SqlPackage: Công cụ này là tập hợp các câu lệnh command-prompt dùng để check lỗi không tương thích. Nó sẽ tạo ra report chỉ rõ các lỗi mà nó tìm thấy. Hãy luôn kiểm tra chắc chắn rằng bạn đang dùng phiên bản mới nhất. Nếu database của bạn có lỗi không tương thích, bạn phải sử dụng một tool khác để fix các lỗi đó, chẳng hạn như SSDT.
  • SQL Server Management Studio (SSMS): Sử dụng tính năng Export Data-tier Application trong SSMS để phát hiện lỗi. Cũng giống như SqlPackage, nếu có lỗi, bạn cũng cần dùng tool khác để fix.
  • The Microsoft SQL Server 2016 Upgrade Advisor Preview (Upgrade Advisor): Đây là một công cụ chạy riêng biệt, dùng để kiểm tra và phát hiện các lỗi không tương thích với SQL Database V12. Hiện tại công cụ này mới chỉ là phiên bản preview và chưa được cập nhật đầy đủ các rules để check lỗi. Tương tự như SqlPackge, nếu có lỗi, bạn cần dùng tool khác để fix.
  • SQL Azure Migration Wizard (SAMW): đây là một công cụ trên Codeplex sử dụng bộ rules tương thích của Azure SQL Database V11 để kiểm tra và phát hiện lỗi tương thích với SQL Database V12. Nếu phát hiện lỗi, một số lỗi có thể được fix ngay bằng công cụ này. Sau khi check và fix lỗi, nó cũng hộ trợ việc migrate lên SQL Database luôn.

Bước 2: Fix Compatibility Issues

Nếu phát hiện các lỗi không tương thích, bạn cần fix nó trước khi migrate data lên SQL Database. Có rất nhiều các loại lỗi mà bạn có thể gặp phải, tùy thuộc vào version và độ phức tạp của database. Nếu database của bạn càng cũ thì khả năng gặp phải các lỗi không tương thích càng lớn. Các công cụ được khuyến cáo để fix các lỗi không tương thích là:

  • SSDT: bạn dùng SSDT trong visual studio để tạo database project và import database schema của bạn vào. Sau đó, bạn cấu hình và build project đó để tương thích cho SQL Database V12. Ở bước này, SSDT có thể phát hiện lỗi và bạn cần phải fix chúng, sau đó đồng bộ sự thay đổi lên database của bạn, hoặc lên một database copy.
  • SSMS: bạn chạy các T-SQL scripts để fix các lỗi không tương thích. Phương pháp này chủ yếu được sử dụng khi bạn thực sự có nhiều kinh nghiệm để trực tiếp thay đổi chỉnh sửa database của mình.
  • SAMW: bạn tạo ra một T-SQL script từ database của bạn, sau đó SAMW sẽ thay đổi script để tương thích với SQL Database V12. Sau khi hoàn tất, SAMW có thể kết nối đến SQL Database V12 để chạy script đó.

Bước 3: Perform the Migration

Microsoft giới thiệu vài phương pháp để migrate một database đã tương thích với SQL Database V12. Việc bạn lựa chọn phương pháp nào tùy thuộc vào từng hoàn cảnh, ví dụ như bạn chấp nhận việc downtime bao lâu, dung lượng và độ phức tạp database của bạn ra sao, hoặc là cân nhắc về khả năng kết nối với Microsoft Azure cloud có ổn định không.

Câu hỏi đầu tiên khi lựa chọn phương pháp migration thường là, bạn có chấp nhận việc lấy database ra khỏi môi trường production hay không? Bởi nếu thực hiện migration trong khi database vẫn đang hoạt động thì sẽ dễ gây ra lỗi về database integrity dẫn đến database bị corrupt. Nếu bạn không thể lấy database ra khỏi môi trường production, bạn có thể sử dụng phương pháp SQL Server transaction replication để giảm thiểu thời gian downtime xuống thấp nhất. Khi sử dụng phương pháp này, nôm na là bạn cấu hình Azure SQL Database như một subscriber tới SQL Server on-premise mà bạn muốn migrate. Và database on-premise sẽ đóng vai trò là publisher, đồng bộ data lên cloud.

Nếu bạn có thể sắp xếp được thời gian downtime, bạn có thể lựa chọn các phương pháp sau đây:

  • SSMS Migration Wizard: bạn sẽ sử dụng task Deploy Database to Microsoft Azure Database trong SQL Server Management Studio để migrate database đã tương thích lên SQL Database V12. Phương pháp này phù hợp cho các database vừa và nhỏ.
  • Export to BACPAC File và Import from BACPAC File: Nếu bạn gặp các vấn đề kết nối với Azure (bandwidth thấp hoặc lỗi timeout), bạn có thể sử dụng BACPAC File. Phương pháp này phù hợp cho database vừa và lớn. Bạn sẽ export SQL Server schema và data thành BACPAC File sau đó import BACPAC file này lên SQL Database bằng cách sử dụng task Export Data Tier Application Wizard trong SQL Server Management Studio hoặc bằng các command-prompt trong SqlPackage.
  • Sử dụng cả BACPAC và BCP: Phương pháp này sử dụng cho các database rất lớn. Khi sử dụng, nó sẽ migrate riêng biệt database schema và data. Các bước chính là:
    • Export riêng schema thành BACPAC File.
    • Import schema đó từ BACPAC file lên SQL Database
    • Sử dụng BCP để extract data thành flat files, sau đó song song load dữ liệu đó  lên Azure SQL Database.

BACPACnBCP

Phạm Anh Tuấn

Anh Phạm Anh Tuấn là chuyên gia công nghệ web trên nển tảng của Microsoft, hiện đang công tác tại FPT Asia Pacific tại đảo quốc sư tử Singapore. Anh Tuấn có hơn 5 năm kinh nghiệm trong lĩnh vực phần mềm và hơn 3 năm làm việc cho tập đoàn viễn thông lớn thứ 2 tại Singapore. Anh đam mê về công nghệ Microsoft, đặc biệt các giải pháp trên nền tảng Web. Đến với AzureVN.NET, anh Tuấn muốn đóng góp và chia sẻ kinh nghiệm khi làm việc trên Azure App Service và Azure SQL Database.

tuan has 5 posts and counting.See all posts by tuan

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *