Amazon Aurora MySQL Bài 33: Sử dụng AWS Schema Conversion Tool (SCT) khi chuyển đổi cơ sở dữ liệu sang Aurora MySQL
Ở Bài 32, chúng ta đã tìm hiểu cách di chuyển dữ liệu từ một hệ thống MySQL truyền thống sang Aurora MySQL thông qua DMS. Tuy nhiên, trong thực tế vận hành tại các doanh nghiệp lớn, bài toán migration không chỉ dừng lại ở việc chuyển dữ liệu (Data Migration), mà còn phức tạp hơn rất nhiều khi bạn phải chuyển đổi cấu trúc cơ sở dữ liệu và mã nguồn lập trình bên trong (Schema & Code Conversion) – đặc biệt là khi chuyển đổi từ các hệ thống thương mại đắt đỏ như Oracle hoặc Microsoft SQL Server sang mã nguồn mở tương thích MySQL của Aurora.
Bài viết này sẽ mổ xẻ cách sử dụng AWS Schema Conversion Tool (SCT) để tự động hóa quá trình chuyển đổi đầy chông gai này.
1. Thách thức lớn nhất khi đổi nền tảng cơ sở dữ liệu (Cross-Engine Migration)
Khi bạn muốn chuyển đổi từ một RDBMS độc quyền (ví dụ: Oracle hoặc SQL Server) sang Aurora MySQL:
-
Khác biệt về kiểu dữ liệu (Data Types): Kiểu
VARCHAR2hoặcNUMBERcủa Oracle không khớp hoàn toàn vớiVARCHARhayBIGINTcủa MySQL. -
Stored Procedures, Functions & Triggers: Đây là "cơn ác mộng" lớn nhất. Các đoạn code PL/SQL của Oracle hay T-SQL của SQL Server sử dụng cú pháp hoàn toàn khác biệt và không thể chạy trực tiếp trên MySQL.
-
Xử lý thủ công: Nếu DBA phải ngồi đọc từng ngàn dòng Stored Procedure và viết lại thủ công sang MySQL, quá trình này có thể kéo dài hàng tháng trời và tiềm ẩn rủi ro sót lỗi logic cực cao.
2. AWS Schema Conversion Tool (SCT) là gì?
AWS SCT (AWS Schema Conversion Tool) là một ứng dụng client-side miễn phí do AWS cung cấp, chuyên dùng để tự động hóa việc phân tích và chuyển đổi cấu trúc cơ sở dữ liệu nguồn sang các đích lưu trữ trên Cloud của AWS (như Aurora MySQL hoặc Aurora PostgreSQL).
-
Cách thức hoạt động:
-
Bạn cài đặt SCT trên máy trạm hoặc môi trường làm việc, sau đó kết nối nó trực tiếp tới cơ sở dữ liệu nguồn (ví dụ: Oracle, SQL Server, PostgreSQL) và cơ sở dữ liệu đích (Aurora MySQL).
-
SCT tiến hành quét toàn bộ schema, bảng, chỉ mục, view, stored procedures, và functions của hệ thống cũ.
-
Nó tự động dịch các đoạn code không tương thích sang cú pháp chuẩn tương thích với MySQL.
-
3. Quy trình thực tế sử dụng AWS SCT để Migration
Quy trình chuẩn khi sử dụng SCT bao gồm 4 bước cốt lõi:
Bước 1: Phân tích báo cáo đánh giá (Assessment Report)
-
Trước khi dịch code, SCT tạo ra một báo cáo chi tiết (
Assessment Report) phân loại rõ ràng:-
Phần nào tự động chuyển đổi được 100%.
-
Phần nào không thể tự động chuyển đổi và cần sự can thiệp thủ công của lập trình viên (ví dụ các hàm đặc thù của hãng cũ).
-
-
Báo cáo này giúp đội ngũ quản lý ước tính chính xác thời gian và nhân lực cần thiết cho toàn bộ dự án migration.
Bước 2: Tự động chuyển đổi Schema (Schema Conversion)
- Bạn nhấn nút "Convert", SCT sẽ tự động sinh ra mã lệnh DDL tương đương cho Aurora MySQL. Đối với các Stored Procedures phức tạp mà nó không tự dịch hết, SCT sẽ đánh dấu cảnh báo (
Conversion Warnings) để kỹ sư backend vào chỉnh sửa lại phần logic cú pháp cho phù hợp với MySQL.
Bước 3: Áp dụng lên Aurora MySQL đích (Apply Schema)
- Sau khi đã tinh chỉnh xong, SCT cho phép bạn thực thi trực tiếp các câu lệnh DDL vừa chuyển đổi để tạo toàn bộ cấu trúc bảng, index, và stored procedures sang cụm Aurora MySQL mới một cách tự động.
Bước 4: Kết hợp với AWS DMS để chuyển dữ liệu
- Khi cấu trúc schema đã sẵn sàng trên Aurora MySQL, bạn sử dụng AWS DMS (như đã học ở Bài 32) để đổ toàn bộ dữ liệu lịch sử và đồng bộ CDC sang, hoàn tất toàn bộ chu trình migration.
4. Góc nhìn vận hành cho Backend Engineer
-
Hạn chế lạm dụng Stored Procedures: Một bài học kinh nghiệm xương máu từ các dự án migration là nên chuyển đổi bớt logic nghiệp vụ từ Stored Procedures sang ứng dụng backend (Go, PHP, Node.js) trước khi thực hiện migration. Việc này không chỉ giúp quá trình chuyển đổi sang Aurora MySQL dễ dàng hơn rất nhiều mà còn giúp hệ thống dễ scale-out, dễ kiểm thử (unit test) và dễ bảo trì hơn trong dài hạn.
-
Kiểm tra kỹ kiểu dữ liệu thời gian (Timestamp & Timezones): Hãy đặc biệt chú ý đến cách lưu trữ múi giờ khi chuyển đổi giữa các hệ thống cũ sang Aurora MySQL để tránh việc lệch giờ của các mốc thời gian giao dịch quan trọng của người dùng.
All rights reserved