Tác giả: Cade Kettner, Dipin Sahadevan và Nirupam Datta
Ngày xuất bản: 21/04/2025
Danh mục: Advanced (300), Amazon EC2, Amazon RDS, Amazon RDS Custom, Technical How-to
Amazon Relational Database Service (Amazon RDS) Custom for SQL Server là một dịch vụ cơ sở dữ liệu được quản lý cho phép tùy chỉnh hệ điều hành bên dưới và hỗ trợ khả năng sử dụng bộ cài SQL Server có bản quyền riêng của bạn hoặc sử dụng SQL Server Developer Edition, đồng thời vẫn cung cấp các lợi ích về tiết kiệm thời gian, độ bền và khả năng mở rộng của một dịch vụ cơ sở dữ liệu được quản lý. Trong bài viết này, chúng tôi trình bày một phương pháp thực tiễn để giải quyết một trong những thách thức lớn nhất mà các tổ chức thường gặp khi chuyển sang sử dụng RDS Custom: di chuyển các tập dữ liệu lớn từ SQL Server chạy trên Amazon Elastic Compute Cloud (Amazon EC2) sang Amazon RDS Custom for SQL Server một cách hiệu quả và tiết kiệm chi phí.
Bài viết này mô tả một chiến lược lift-and-shift được tùy chỉnh, tận dụng các khả năng độc đáo của RDS Custom để đơn giản hóa quá trình di chuyển cơ sở dữ liệu của bạn. Bằng cách sử dụng detach and attach method gốc của SQL Server kết hợp với bản kết xuất nhanh EBS, bạn có thể di chuyển cơ sở dữ liệu mà không cần đến Amazon Simple Storage Service (Amazon S3) hoặc AWS Database Migration Service (AWS DMS). Phương pháp đã được kiểm chứng của chúng tôi cung cấp một lộ trình chuyển đổi liền mạch, nhấn mạnh vào cả hiệu quả và tốc độ.
Các tổ chức có thể sử dụng giải pháp này để đơn giản hóa các quá trình di chuyển dữ liệu phức tạp trong khi giảm thiểu gián đoạn hoạt động kinh doanh. Chúng tôi cung cấp các bước chi tiết, những hiểu biết thực tiễn và các phương pháp hay nhất (best practices) để giúp bạn di chuyển thành công cơ sở dữ liệu SQL Server từ EC2 sang RDS Custom. Phương pháp này giúp bạn duy trì tính toàn vẹn dữ liệu và tận dụng đầy đủ các khả năng của RDS Custom với tư cách là một dịch vụ cơ sở dữ liệu được quản lý.
Tổng quan giải pháp
Quy trình di chuyển sử dụng các công cụ gốc của AWS để duy trì tính toàn vẹn dữ liệu và giảm thiểu thời gian gián đoạn. Toàn bộ quy trình bao gồm các bước sau:
- Tạo một EBS snapshot từ volume cơ sở dữ liệu SQL Server trên EC2 instance.
- Khôi phục snapshot đó thành một EBS volume mới.
- Tạm dừng tính năng tự động hóa của RDS Custom để cho phép cấu hình thủ công.
- Gắn EBS volume mới vào host instance của RDS Custom.
- Kết nối vào host RDS Custom for SQL Server và sao chép các tệp cơ sở dữ liệu từ EBS volume đã gắn vào ổ D của RDS SQL Server Custom Instance.
- Gắn (attach) các cơ sở dữ liệu vào SQL Server instance trên RDS Custom để hoàn tất quá trình di chuyển.
- Sau khi di chuyển xong, thực hiện dọn dẹp bằng cách tháo gỡ volume tạm thời và tiếp tục lại tính năng tự động hóa của RDS Custom.
Phương pháp này mang lại một số lợi ích nổi bật:
- Di chuyển cơ sở dữ liệu với thời gian gián đoạn tối thiểu
- Giảm thiểu sự gián đoạn vận hành
- Duy trì tính toàn vẹn dữ liệu xuyên suốt quá trình
- Đảm bảo chuyển đổi liền mạch từ EC2 instance tự quản lý sang nền tảng RDS Custom for SQL Server
Bằng cách tuân thủ quy trình này, các tổ chức có thể di chuyển cơ sở dữ liệu SQL Server một cách hiệu quả, đồng thời có thể cải thiện hiệu năng, độ tin cậy và khả năng quản lý của khối lượng công việc cơ sở dữ liệu. Cách tiếp cận này thể hiện một bước chuyển đổi mang tính chiến lược từ hạ tầng tự quản sang một môi trường cơ sở dữ liệu được quản lý và tối ưu hóa hơn.
Điều kiện tiên quyết
Để triển khai giải pháp này, bạn cần hoàn thành các bước chuẩn bị sau:
- Tạo một EC2 instance với một EBS volume.
- Tạo một RDS Custom for SQL Server instance.
- Phiên bản SQL Server trên RDS Custom (đích) phải bằng hoặc cao hơn phiên bản SQL Server trên EC2 (nguồn).
Lưu ý: Xem lại AWS Documentation để biết các vùng được hỗ trợ và các DB Engine được hỗ trợ cho RDS Custom for SQL Server. Đảm bảo rằng bạn xem xét khả năng tương thích Database edition để di chuyển.
Trong bài viết này, chúng tôi thực hiện di chuyển từ SQL Server 2022 Standard Edition chạy trên EC2 sang RDS Custom for SQL Server 2022 Standard Edition.
Tạo snapshot cho EBS volume
Thực hiện các bước sau để tạo một snapshot của EBS volume đang lưu trữ các cơ sở dữ liệu của bạn:
Lưu ý: Dừng toàn bộ lưu lượng ghi (write traffic) đến EC2 SQL Server để đảm bảo snapshot được nhất quán.
- Trên Amazon EC2 console, ở thanh điều hướng bên trái, chọn Volumes.
- Chọn EBS volume của bạn, sau đó trong menu Actions, chọn Create snapshot.
- Thêm mô tả (description), rồi chọn Create snapshot.
Tạo một volume từ EBS snapshot
Sau khi snapshot được tạo, thực hiện các bước sau:
- Trên Amazon EC2 console, ở thanh điều hướng bên trái, chọn Snapshots.
- Chọn snapshot bạn đã tạo, sau đó trong menu Actions, chọn Create volume from snapshot.
- Chọn các thiết lập volume mong muốn. Bạn phải chọn Availability Zone trùng với Availability Zone mà RDS Custom for SQL Server DB instance của bạn đang sử dụng. Nếu RDS instance được triển khai theo dạng Multi-AZ, hãy chọn Availability Zone chính.
- Chọn Create volume. Ghi lại tên của EBS Volume mới được tạo để sử dụng ở các bước sau.
Tạm dừng automation
Bước này là cần thiết trước khi di chuyển. Pause the RDS Custom automation.
Gắn volume đã khôi phục vào RDS Custom for SQL Server EC2 host instance
Thực hiện các bước sau để tiến hành di chuyển bằng cách gắn EBS volume vừa khôi phục vào RDS Custom for SQL Server underlying EC2 host instance.
- Trên Amazon EC2 console, ở thanh điều hướng bên trái, chọn Volumes.
- Chọn EBS volume mà bạn đã ghi chú trước đó, sau đó trong menu Actions, chọn Attach volume.
- Ở mục Instance, chọn RDS Custom for SQL Server underlying EC2 host instance.
- Ở mục Device name, chỉ định tên thiết bị bạn muốn sử dụng.
- Chọn Attach volume.
Kết nối đến underlying EC2 Instance của RDS Custom for SQL Server instance
Để kết nối đến EC2 host instance của RDS Custom for SQL Server, hãy tham khảo hướng dẫn Connecting to your RDS Custom DB instance using RDP.
Sao chép các tệp cơ sở dữ liệu vào RDS Custom for SQL Server
Sau khi bạn đã kết nối với RDS Custom for SQL Server EC2 host instance, bạn có thể sao chép các tệp từ EBS volume vừa khôi phục và gắn vào sang ổ D hiện có. Đảm bảo bạn không sao chép bất kỳ tệp cơ sở dữ liệu hệ thống nào từ EBS volume. Thực hiện các bước sau:
- Khi đã kết nối, hãy mở File Explorer (hoặc This PC).
- Truy cập vào ổ đĩa của EBS volume vừa gắn.
- Sao chép các tệp dữ liệu (.mdf) và tệp log (.ldf) của các cơ sở dữ liệu người dùng mà bạn dự định di chuyển.
- Điều hướng đến đường dẫn D:\rdsdbdata\DATA và dán các tệp này vào đó.
Gắn cơ sở dữ liệu (Attach the databases)
Bây giờ bạn có thể kết nối đến SQL Server và gắn (attach) các cơ sở dữ liệu mới để hoàn tất quá trình di chuyển từ SQL Server đang chạy trên EC2 instance sang RDS Custom for SQL Server DB instance. Thực hiện các bước sau:
- Kết nối đến instance SQL Server bằng SQL Server Management Studio (SSMS). Bạn có thể sử dụng thông tin đăng nhập của người dùng chính (primary user) đã được tạo khi triển khai RDS Custom for SQL Server DB instance.
- Nhấp chuột phải vào Databases, sau đó chọn Attach.

- Chọn Add, sau đó chọn các tệp cơ sở dữ liệu (.mdf) và tệp log (.ldf) từ ổ D mà bạn muốn gắn vào.

- Sau khi các cơ sở dữ liệu được thêm vào, chọn OK.

Như vậy, bạn đã di chuyển thành công các cơ sở dữ liệu từ SQL Server đang chạy trên EC2 sang RDS Custom for SQL Server.
Tháo EBS volume
Sau khi di chuyển thành công, hãy tháo (detach) EBS volume.
Để tháo volume, thực hiện các bước sau:
- Trên Amazon EC2 console, ở thanh điều hướng bên trái, chọn Volumes.
- Chọn EBS volume đã được khôi phục và đang gắn vào EC2 host instance nền, sau đó trong menu Actions, chọn Detach volume.
- Chọn Confirm detach để xác nhận tháo.
Bỏ tạm dừng automation
Sau khi bạn đã di chuyển thành công, unpause the RDS Custom automation.
Những lưu ý bổ sung
Trong quá trình khôi phục EBS volume, bạn có thể gặp hiện tượng suy giảm hiệu năng do lazy loading. Lazy loading có nghĩa là volume sẽ sẵn sàng ngay lập tức, nhưng các khối dữ liệu chỉ được tải từ Amazon S3 khi được truy cập lần đầu, điều này có thể khiến các thao tác I/O ban đầu có độ trễ cao hơn. Để giảm thiểu tác động này đối với các cơ sở dữ liệu quan trọng, bạn có thể thực hiện các truy vấn quét toàn bộ bảng (như SELECT *) trên các bảng quan trọng ngay sau khi di chuyển nhằm khởi tạo các block dữ liệu và đảm bảo hiệu năng tối ưu.
Ngoài ra, chúng tôi chỉ trình bày giải pháp để di chuyển các cơ sở dữ liệu người dùng, điều này không bao gồm các đối tượng phụ trợ trong SQL Server như SQL Server Agent jobs, linked servers, và các thành phần tương tự.
Dọn dẹp
Để tránh phát sinh chi phí trong tương lai, hãy xóa các tài nguyên bạn đã tạo trong quá trình thực hiện theo bài viết này:
- Để xóa EBS Volume đã được khôi phục, tham khảo hướng dẫn Delete an Amazon EBS Volume.
- Để xóa EBS Snapshot, tham khảo hướng dẫn Delete an Amazon EBS Snapshot.
Kết luận
Bài viết này hướng dẫn cách di chuyển cơ sở dữ liệu người dùng SQL Server từ EC2 sang RDS Custom for SQL Server bằng cách sử dụng EBS snapshot và chức năng attach của SQL Server. Phương pháp này mang lại giải pháp thay thế nhanh hơn và tiết kiệm chi phí hơn so với các phương pháp di chuyển truyền thống, đặc biệt là đối với các cơ sở dữ liệu lớn. Bạn có thể điều chỉnh giải pháp này để phù hợp với nhu cầu kinh doanh và yêu cầu di chuyển cụ thể của mình. Hãy để lại phản hồi của bạn trong phần bình luận.
Về Tác giả

Nirupam Datta là Kỹ sư Hỗ trợ Cơ sở dữ liệu cấp cao (Senior Cloud Support DBE) tại AWS. Anh đã làm việc tại AWS hơn 5 năm. Với hơn 12 năm kinh nghiệm trong lĩnh vực kỹ thuật cơ sở dữ liệu và kiến trúc hạ tầng, Nirupam cũng là chuyên gia về các hệ thống cốt lõi của Amazon RDS, Amazon RDS for SQL Server và Amazon Aurora MySQL. Anh cung cấp hỗ trợ kỹ thuật cho khách hàng, hướng dẫn họ trong quá trình di chuyển, tối ưu hóa và vận hành trên nền tảng AWS Cloud.

Dipin Sahadevan là Kỹ sư Hỗ trợ đám mây (Cloud Support Engineer) đã làm việc tại AWS hơn 3 năm. Dipin cũng là chuyên gia về Amazon RDS for SQL Server. Anh có 15 năm kinh nghiệm làm việc với các hệ quản trị cơ sở dữ liệu quan hệ. Tại AWS, anh làm việc với các khách hàng bên ngoài để xử lý nhiều tình huống khác nhau, chẳng hạn như khắc phục sự cố hạ tầng RDS và xây dựng cũng như cải tiến tài liệu nội bộ.

Cade Kettner là Kỹ sư Hỗ trợ Cloud (Cloud Support Engineer) đã làm việc với Nhóm Cơ sở dữ liệu AWS gần 2 năm. Trong vai trò của mình, anh cung cấp hỗ trợ kỹ thuật cho các dịch vụ AWS bao gồm RDS MySQL, RDS MariaDB, RDS SQL Server, Aurora MySQL và AWS DMS, nhằm giúp khách hàng khắc phục sự cố kỹ thuật và đưa ra các giải pháp phù hợp theo nhu cầu cụ thể.