Chuyển đến nội dung chính

Hướng dẫn AWS DMS: Từng bước di chuyển cơ sở dữ liệu

Hướng dẫn này đưa bạn qua các bước thiết lập và sử dụng AWS DMS để di chuyển cơ sở dữ liệu lên AWS, tối ưu hiệu năng và khắc phục sự cố.
· 15 phút đọc

Khám phá cùng AI

Khi các tổ chức tiến tới hiện đại hóa hạ tầng bằng công nghệ đám mây, việc di chuyển cơ sở dữ liệu lên AWS là điều thiết yếu. AWS cung cấp một công cụ di chuyển mạnh mẽ gọi là AWS Database Migration Service (DMS), cho phép di chuyển với rủi ro thấp và gần như tức thì từ cơ sở dữ liệu on-premises, cơ sở dữ liệu đám mây tự quản và các dịch vụ AWS khác.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách thiết lập và sử dụng AWS DMS cho nhu cầu di chuyển cơ sở dữ liệu của mình. Bạn sẽ học được:

  • AWS DMS hoạt động như thế nào và các tính năng chính.
  • Quy trình từng bước để thiết lập và thực hiện một lần di chuyển.
  • Thực tiễn tốt nhất để tối ưu hiệu năng, bảo mật và chi phí.
  • Kỹ thuật khắc phục sự cố để xử lý các vấn đề di chuyển thường gặp.

Bắt đầu thôi!

AWS DMS là gì?

AWS Database Migration Service (DMS) giúp dễ dàng di chuyển cơ sở dữ liệu lên AWS mà không cần downtime. Dịch vụ hỗ trợ cả di chuyển đồng nhất và không đồng nhất, như MySQL sang MySQL hoặc Oracle sang PostgreSQL, trở thành công cụ quan trọng cho các tổ chức chuyển lên đám mây.

Với AWS DMS, bạn có thể:

  • Sử dụng Change Data Capture (CDC) để di chuyển dữ liệu liên tục, hầu như không làm gián đoạn môi trường sản xuất.
  • Để AWS DMS tự động hóa và quản lý các tác vụ di chuyển mà không cần chuyên gia am hiểu chi tiết cơ sở dữ liệu của bạn.
  • Nhân bản dữ liệu sang các dịch vụ như Amazon RDS, Aurora, Redshift, DynamoDB, S3, v.v.

AWS DMS được sử dụng rộng rãi cho:

  • Di chuyển lift-and-shift cơ sở dữ liệu từ on-premises lên AWS.
  • Nhân bản cơ sở dữ liệu giữa các vùng để khôi phục thảm họa.
  • Hợp nhất dữ liệu bằng cách di chuyển nhiều cơ sở dữ liệu vào một kho dữ liệu.

Các tính năng của AWS DMS

AWS DMS cung cấp nhiều tính năng quan trọng để hỗ trợ di chuyển cơ sở dữ liệu: 

1. Di chuyển đồng nhất và không đồng nhất

  • Di chuyển đồng nhất: Chuyển từ một loại cơ sở dữ liệu sang cùng loại (ví dụ: MySQL sang MySQL). 
  • Di chuyển không đồng nhất: Chuyển đổi schema và dữ liệu giữa các engine khác nhau (ví dụ: Oracle sang PostgreSQL).

2. Downtime tối thiểu với Change Data Capture (CDC)

  • Change Data Capture (CDC) theo dõi thay đổi trên cơ sở dữ liệu nguồn theo thời gian thực và chuyển các thay đổi đó sang cơ sở dữ liệu đích, giúp giảm downtime hệ thống.
  • Phù hợp với doanh nghiệp vận hành ứng dụng quan trọng yêu cầu dữ liệu luôn sẵn sàng.

3. Dịch vụ quản lý hoàn toàn và có thể mở rộng

  • AWS DMS tạo và quản lý tài nguyên, theo dõi hiệu năng và xử lý các trường hợp failover.
  • Hỗ trợ Multi-AZ để đảm bảo tính sẵn sàng cao.

4. Tương thích rộng với nhiều cơ sở dữ liệu

  • Nguồn: Oracle, SQL Server, MySQL, PostgreSQL, MongoDB, Amazon Aurora và nhiều hơn nữa.
  • Đích: Amazon RDS, Aurora, Redshift, DynamoDB, S3 và OpenSearch.

5. Chuyển đổi schema với AWS SCT

  • AWS Schema Conversion Tool (SCT) giúp chuyển đổi schema cơ sở dữ liệu khi thực hiện di chuyển không đồng nhất.
  • Tự động chuyển đổi stored procedure, view và trigger để phù hợp với cơ sở dữ liệu đích.

6. Giám sát và ghi nhật ký liên tục

  • Tích hợp AWS CloudWatch cho phép bạn theo dõi tiến độ di chuyển và xác định điểm nghẽn.
  • Ghi lại số liệu chi tiết, bao gồm tỉ lệ lỗi, độ trễ và độ trễ sao chép.

7. Bảo mật và tuân thủ

  • Hỗ trợ mã hóa TLS để truyền dữ liệu an toàn.
  • Tích hợp với AWS IAM để kiểm soát truy cập chi tiết.
  • Tuân thủ các tiêu chuẩn bảo mật lớn như HIPAA, PCI DSS và SOC.

Thiết lập AWS DMS

Hãy bắt tay vào làm và bắt đầu bằng việc thiết lập AWS DMS. Trong hướng dẫn này, bạn sẽ học cách di chuyển cơ sở dữ liệu Oracle sang Amazon Aurora (MySQL), bao gồm chuyển đổi schema, sao chép dữ liệu và các thực tiễn tốt nhất để đảm bảo quá trình chuyển đổi suôn sẻ.

Bước 1:  Điều kiện tiên quyết để sử dụng AWS DMS

Trước khi di chuyển cơ sở dữ liệu, bạn cần thiết lập các tài nguyên AWS thiết yếu. Sử dụng AWS CloudFormation, bạn có thể tự động cấp phát để tập trung vào các tác vụ di chuyển. Mẫu mà chúng ta sẽ dùng triển khai:

  • Một AWS VPC với Public Subnet cho mạng.
  • Một AWS DMS Replication Instance để thực hiện di chuyển dữ liệu.
  • Một Amazon RDS Instance làm cơ sở dữ liệu đích.
  • Một Amazon EC2 Instance để chứa các công cụ di chuyển như AWS Schema Conversion Tool (SCT) hoặc mô phỏng cơ sở dữ liệu nguồn.

Đăng nhập vào AWS Console

  1. Đăng nhập vào AWS Management Console bằng tài khoản của bạn.
  2. Nhấp vào menu thả xuống ở góc trên bên phải màn hình và chọn vùng của bạn. Tôi sẽ chọn khu vực N. Virginia cho hướng dẫn này.

AWS Management Console với danh sách chọn vùng mở, hiển thị các vùng sẵn có

Hình 1 Chọn vùng AWS trong AWS Management Console.

  1. Vào EC2 Console và điều hướng tới phần Key Pair. Đảm bảo bạn đang ở cùng vùng AWS như bước trước.
  2. Nhấp Create Key Pair và đặt tên là “DMS”.

Giao diện AWS EC2 hiển thị trang tạo key pair với các tùy chọn RSA và ED25519.                                        

Hình 2 Tạo cặp khóa để truy cập an toàn trong AWS EC2.

  1. Nhấp Create, trình duyệt của bạn sẽ tải xuống DMS.pem.
  2. Lưu tệp này một cách an toàn — bạn sẽ cần dùng trong phần sau của hướng dẫn.

Cấu hình môi trường

Ở bước này, bạn sẽ sử dụng mẫu CloudFormation (CFN) để thiết lập hạ tầng AWS cần thiết cho việc di chuyển cơ sở dữ liệu. Việc này tự động hóa cấp phát tài nguyên, giúp bạn tập trung vào các tác vụ di chuyển.

  1. Mở bảng điều khiển AWS CloudFormation và nhấp Create Stack.
  2. Chọn Choose an existing template, sau đó chọn Upload a template file.

Giao diện AWS CloudFormation với tùy chọn tải lên tệp mẫu để tạo stack.

Hình 3 Tải lên mẫu CloudFormation để tạo stack mới.

  1. Tải tệp từ Github Gist và nhấp Choose file.
  2. Tải lên tệp DMS.yaml và nhấp Next.
  3. Điền các tham số bắt buộc theo hướng dẫn, sau đó nhấp Next.

Trang thiết lập stack CloudFormation hiển thị các tham số di chuyển cơ sở dữ liệu, cấu hình EC2 và cài đặt mạng

Hình 4 Cấu hình tham số cho stack AWS DMS CloudFormation

Lưu ý: Bạn có thể điều chỉnh loại instance theo nhu cầu hoặc giữ nguyên.

  1. Ở trang Stack Options, giữ nguyên cài đặt mặc định và nhấp Next.
  2. Rà soát cấu hình và nhấp Create stack.
  3. Bạn sẽ được chuyển về bảng điều khiển CloudFormation, nơi trạng thái hiển thị “CREATE_IN_PROGRESS”. Chờ đến khi chuyển sang “CREATE_COMPLETE”.

Danh sách tài nguyên CloudFormation hiển thị ID logic và vật lý với trạng thái "CREATE_COMPLETE.

Hình 5  Xem lại trạng thái tạo tài nguyên trong AWS CloudFormation

  1. Khi hoàn tất, điều hướng tới phần Outputs và ghi lại các giá trị — bạn sẽ cần cho các phần tiếp theo của hướng dẫn.

Chuẩn bị cơ sở dữ liệu nguồn và đích cho việc di chuyển

Chúng ta sẽ bắt đầu với cấu hình cơ sở dữ liệu nguồn. Thực hiện các bước sau để truy cập vào EC2 instance bằng Remote Desktop Protocol (RDP).

Bước 1: Thiết lập quyền truy cập RDP
  • Với người dùng Mac: Tải Microsoft Remote Desktop từ App Store.
  • Với người dùng PC: Sử dụng Remote Desktop để kết nối tới PC bạn đã thiết lập.
Bước 2: Sửa quy tắc Security Group để truy cập RDP
  • Mở AWS EC2 Console.
  • Ở menu bên trái, nhấp Security Groups (có thể cần cuộn xuống).
  • Chọn security group kết thúc bằng “InstanceSecurityGroup” bằng cách đánh dấu chọn.
  • Nhấp Actions > Edit Inbound Rules.
  • Tìm quy tắc RDP (cổng 3389), nhấp Source và chọn My IP để bảo mật tốt hơn.
    • Nếu dùng VPN công ty hoặc mạng phức tạp, bạn có thể cần đổi sang “Anywhere (0.0.0.0/0)” sau này.

Trang cấu hình security group của AWS hiển thị inbound rules cho cơ sở dữ liệu và truy cập RDP.

Hình 6 Chỉnh sửa quy tắc bảo mật inbound trong AWS.

  • Nhấp Save rules.
Bước 3: Lấy thông tin xác thực RDP
  • Trong AWS EC2 Console, nhấp Instances ở menu bên trái.
  • Chọn instance có tên “<StackName>-EC2Instance”.
  • Nhấp Actions > Connect.
  • Đi tới mục RDP Client và nhấp Get password.
  • Nhấp Browse và tải lên tệp Key Pair đã tải trước đó.
  • Nhấp Decrypt password.

Giao diện AWS EC2 hiển thị trường tải khóa riêng để giải mã mật khẩu quản trị viên.

Hình 7 Lấy mật khẩu Windows cho một AWS EC2 instance.

  • Sao chép mật khẩu tạo ra vào ghi chú của bạn để dùng sau.
Bước 4: Kết nối tới EC2 instance
  • Nhấp Download Remote Desktop File để lưu tệp RDP.
  • Mở ứng dụng RDP (Microsoft Remote Desktop trên Mac).
  • Sử dụng mật khẩu đã giải mã để đăng nhập.
  • Nếu được nhắc, nhấp Done để hoàn tất thiết lập.
Bước 5: Kết nối tới Oracle SQL Developer

Khi đã kết nối tới EC2 instance, làm theo các bước sau để thiết lập kết nối tới cơ sở dữ liệu Oracle bằng Oracle SQL Developer.

Bước 1: Mở Oracle SQL Developer
  • Tìm Oracle SQL Developer trên Thanh tác vụ và mở ứng dụng.
    • Lưu ý: Biểu tượng của bạn có thể hiển thị theo thứ tự khác so với hình minh họa.

Giao diện Oracle SQL Developer hiển thị cửa sổ thiết lập kết nối với loại cơ sở dữ liệu, hostname, cổng và trường thông tin xác thực.

Hình 8 Cấu hình kết nối cơ sở dữ liệu mới trong Oracle SQL Developer.

Bước 2: Tạo kết nối cơ sở dữ liệu mới
  • Nhấp dấu cộng (+) ở menu bên trái để tạo New Database Connection.
  • Nhập các thông tin sau:
    • Connection Name: Source Oracle
    • Username: dbadmin
    • Password: Kiểm tra tab Outputs của CloudFormation Stack dưới DMSDBSecretP
    • Save Password: Đánh dấu chọn.
    • Hostname: Tìm Source Oracle Endpoint trong tab Output của CloudFormation. Hoặc vào bảng điều khiển RDS, chọn instance Oracle nguồn của bạn và dùng endpoint được cung cấp.
    • Port: 1521
    • SID: ORACLEDB
Bước 3: Kiểm tra và kết nối
  • Nhấp Test để xác minh kết nối.
  • Khi trạng thái kiểm tra hiển thị “Successful”, nhấp Connect.
Bước 4: Cấu hình Oracle cho di chuyển với AWS DMS

Trước khi sử dụng Oracle làm nguồn cho AWS DMS, đảm bảo các cấu hình sau đã được thiết lập:

1. Tạo người dùng DMS với quyền cần thiết

AWS DMS yêu cầu một tài khoản người dùng (DMS user) với quyền đọc và ghi trên cơ sở dữ liệu Oracle.

2. Bật ARCHIVELOG MODE
  • ARCHIVELOG MODE phải được bật để cung cấp thông tin log giao dịch cho LogMiner.
  • AWS DMS dựa vào LogMiner để thu thập dữ liệu thay đổi từ archive log.
  • Đảm bảo archive log được giữ lại ít nhất 24 giờ để tránh mất dữ liệu trong quá trình di chuyển.
3. Bật supplemental logging
  • Supplemental logging cấp cơ sở dữ liệu:
    • Đảm bảo LogMiner thu thập đủ chi tiết cho các cấu trúc bảng khác nhau (ví dụ: bảng cụm và bảng tổ chức theo chỉ mục).
  • Supplemental logging cấp bảng:
    • Cần bật cho từng bảng mà bạn dự định di chuyển.
4. Cấp quyền cần thiết cho người dùng AWS DMS
  • Trong Oracle SQL Developer, nhấp vào biểu tượng SQL Worksheet. 
  • Kết nối tới cơ sở dữ liệu Oracle nguồn. 
  • Sao chép, dán và thực thi các câu lệnh từ Github Gist để cấp quyền cần thiết cho người dùng AWS DMS.

Các script SQL đang chạy trong Oracle SQL Developer, thực hiện supplemental logging và thay đổi bảng

Hình 9 Thực thi script SQL trong Oracle SQL Developer.

Bước 6: Cấu hình đích Amazon Aurora (MySQL)

Sau khi chọn thiết lập ban đầu và cơ sở dữ liệu nguồn, bạn có thể di chuyển một cơ sở dữ liệu mẫu. Hướng dẫn này mô tả cách sử dụng AWS Schema Conversion Tool (AWS SCT) và AWS Database Migration Service (AWS DMS) để chuyển đổi cấu trúc cơ sở dữ liệu và di chuyển dữ liệu sang Amazon Aurora (MySQL). 

Ngoài ra, AWS DMS sẽ đóng vai trò công cụ bật sao chép liên tục, nghĩa là mọi thay đổi trên cơ sở dữ liệu nguồn sẽ được phản chiếu theo thời gian thực sang cơ sở dữ liệu đích.

  • Kết nối lại tới EC2 instance qua RDP.
  • Mở thư mục DMS Workshop trên Desktop và nhấp đúp AWS Schema Conversion Tool Download để cài phiên bản mới nhất.
  • Giải nén và cài đặt AWS SCT bằng trình hướng dẫn cài đặt (giữ mặc định và nhấp Finish).
  • Khởi chạy AWS SCT từ Start Menu hoặc biểu tượng màu cam SCT trên Desktop và chấp nhận điều khoản.
  • Mở MySQL Workbench 8.0 CE và tạo kết nối cơ sở dữ liệu mới cho Aurora MySQL đích sử dụng:
    • Connection Name: Target Aurora RDS (MySQL)
    • Host Name: <TargetAuroraMySQLEndpoint> (Tìm trong CloudFormation Outputs hoặc bảng điều khiển RDS)
    • Port: 3306
    • Username: dbadmin
    • Password: Lấy từ tab CloudFormation Output
    • Default Schema: Để trống

Giao diện MySQL Workbench hiển thị thiết lập kết nối mới với hostname, cổng, tên người dùng và mật khẩu.

Hình 10 Thiết lập kết nối MySQL Workbench tới Amazon Aurora.

  • Nhấp Test Connection, xác nhận thành công, rồi kết nối tới Aurora MySQL.
  • Thực thi các câu lệnh SQL cấp quyền từ GitHub Gist trong MySQL Workbench (nhấp biểu tượng tia sét để chạy).

Giờ bạn đã cài đặt AWS Schema Conversion Tool, bước tiếp theo là tạo một Database Migration Project bằng công cụ này.

Bước 1: Bắt đầu dự án mới
  • Mở AWS Schema Conversion Tool (SCT).
  • Nếu New Project Wizard không tự khởi động, vào File > New Project Wizard.
  • Nhập các thông tin sau:
    • Project Name: AWS Schema Conversion Tool Source DB to Aurora MySQL
    • Location: C:\Users\Administrator\AWS Schema Conversion Tool
    • Database Type: Chọn SQL Database
    • Source Engine: Oracle
    • Migration Type: Chọn I want to switch engines and optimize for the cloud
  • Nhấp Next.
Bước 2: Kết nối tới cơ sở dữ liệu nguồn
  • Điền cấu hình cơ sở dữ liệu nguồn:
    • Connection Name: Oracle Source
    • Type: SID
    • Server Name: <SourceOracleEndpoint> (Tìm trong CloudFormation Outputs hoặc RDS Console)
    • Server Port: 1521
    • Oracle SID: ORACLEDB
    • User Name: dbadmin
    • Password: Lấy từ tab CloudFormation Output
    • Use SSL: Bỏ chọn
    • Store Password: Chọn
    • Oracle Driver Path: C:\Users\Administrator\Desktop\DMS Workshop\JDBC\ojdbc11.jar
  • Nhấp Test Connection. Nếu thành công, nhấp Next.

AWS Schema Conversion Tool hiển thị thông báo kết nối thành công sau khi kiểm tra kết nối Oracle.

Hình 11 Kiểm tra kết nối cơ sở dữ liệu trong AWS Schema Conversion Tool.

Bước 3: Chọn cơ sở dữ liệu và xem báo cáo đánh giá
  • Chọn cơ sở dữ liệu dms_sample, sau đó nhấp Next.
  • Bỏ qua cảnh báo tải metadata nếu xuất hiện.
  • Xem Báo cáo Đánh giá Di chuyển Cơ sở dữ liệu:

Báo cáo đánh giá của AWS Schema Conversion Tool tóm tắt các hành động chuyển đổi và khả năng tương thích đối tượng lưu trữ.

Hình 12 Xem xét kết quả đánh giá di chuyển cơ sở dữ liệu.

  • Sau khi xem, nhấp Next.

Lưu ý: SCT tự động chuyển đổi hầu hết đối tượng và làm nổi bật các đối tượng cần can thiệp thủ công. Hãy chú ý tới procedure, package và function vì có thể cần chỉnh sửa.

Bước 4: Kết nối tới cơ sở dữ liệu đích
  • Điền cấu hình cơ sở dữ liệu đích:
    • Target Engine: Amazon Aurora (tương thích MySQL) (đổi từ mặc định)
    • Connection Name: Aurora MySQL Target
    • Server Name: <TargetAuroraMySQLEndpoint> (Tìm trong CloudFormation Outputs hoặc RDS Console)
    • Server Port: 3306
    • User Name: dbadmin
    • Password: Lấy từ tab CloudFormation Output
    • Use SSL: Bỏ chọn
    • Store Password: Chọn
    • MySQL Driver Path: C:\Users\Administrator\Desktop\DMS Workshop\JDBC\mysql-connector-j-8.3.0.jar
  • Nhấp Test Connection. Nếu thành công, nhấp Finish.

Giờ bạn đã tạo một Database Migration Project, bước tiếp theo là chuyển đổi schema của cơ sở dữ liệu nguồn sang Amazon Aurora MySQL.

Bước 5: Chuyển đổi schema cơ sở dữ liệu nguồn sang Amazon Aurora MySQL
  • Nhấp View ở menu trên và chọn Assessment Report View.
  • Chọn DMS_SAMPLE ở bảng bên trái để hiển thị cây cấu trúc cơ sở dữ liệu.
  • Đi tới tab Action Items để xem các thành phần schema không thể chuyển đổi tự động.
  • AWS SCT phân loại các mục như:
    • Màu xanh lá – Chuyển đổi thành công.
    • Màu xanh dương – Cần chỉnh sửa thủ công trước khi di chuyển.
  • Bạn có hai lựa chọn với các thành phần schema không thể chuyển đổi tự động:
    • Chỉnh sửa schema nguồn.
    • Chỉnh sửa script SQL sinh ra trước khi áp dụng lên cơ sở dữ liệu đích. Chúng ta sẽ chỉnh tay một stored procedure trong AWS SCT để tương thích với Aurora MySQL.
Bước 6: Chỉnh sửa mã SQL
  • Nhấp chuột phải vào cơ sở dữ liệu DMS_SAMPLE ở bảng bên trái.
  • Chọn Convert Schema để tạo các câu lệnh DDL cho cơ sở dữ liệu đích.
  • Khi được hỏi về các đối tượng đã tồn tại, nhấp Yes.

AWS Schema Conversion Tool hiển thị cấu trúc cơ sở dữ liệu Oracle và MySQL với hộp thoại thay thế đối tượng

Hình 13 Chuyển đổi schema Oracle bằng AWS Schema Conversion Tool.

  • Nhấp chuột phải vào schema dms_sample_dbo (nguồn SQL Server) hoặc dms_sample (các nguồn khác) ở bảng bên phải.
  • Chọn Apply to database.
  • Khi được hỏi, nhấp Yes để xác nhận.
  • Mở rộng schema dms_sample_dbo hoặc dms_sample ở bảng bên phải.
  • Bây giờ bạn sẽ thấy bảng, view, stored procedure và các đối tượng khác đã được tạo thành công trong Aurora MySQL.

Bạn đã chuyển đổi thành công schema và các đối tượng cơ sở dữ liệu sang định dạng tương thích với Amazon Aurora MySQL!

Bước 2: Tạo replication instance

Làm theo các bước sau để tạo một DMS Replication Instance:

  • Mở bảng điều khiển AWS Database Migration Service (DMS) hoặc tìm DMS trên thanh tìm kiếm AWS.
  • Ở menu bên trái, nhấp Replication Instances để vào màn hình quản lý replication instance.
  • Đã có một replication instance cấu hình sẵn, bạn có thể bỏ qua bước này. Tuy nhiên, nếu muốn thực hành, hãy tiếp tục tạo instance mới:
  • Nhấp Create replication instance ở góc trên bên phải. Sau đó, điền các thông tin sau:
    • Name: DMSReplication-dms
    • Descriptive Amazon Resource Name (ARN): Để trống
    • Description: (Tùy chọn) Nhập "Replication server for Database Migration"
    • Instance Class: dms.c5.xlarge
    • Engine Version: Giữ giá trị mặc định.
    • High Availability / Multi-AZ: Chọn Dev or Test workload (Single-AZ)
    • Allocated Storage (GB): 50
    • VPC: Chọn VPC ID có DMSVpc trong tên (điều chỉnh danh sách thả xuống nếu cần)
    • Publicly Accessible: Đặt No (bỏ chọn)
    • Advanced -> VPC Security Group(s): Chọn default security group

Tạo replication instance

Hình 14 Tạo replication instance.

  • Nhập các thông tin yêu cầu cho replication instance, sau đó nhấp Create.

Bước 3: Cấu hình endpoint nguồn và đích

Khi đã có replication instance, bước tiếp theo là tạo endpoint nguồn và đích cho việc di chuyển cơ sở dữ liệu. Thực hiện các bước sau để cấu hình cả hai endpoint.

Tạo endpoint nguồn

  • Mở AWS DMS Console.
  • Ở menu bên trái, nhấp Endpoints.
  • Nhấp Create endpoint (góc trên bên phải).
  • Nhập các thông tin yêu cầu cho endpoint cơ sở dữ liệu nguồn:
    • Endpoint Type: Source endpoint
    • Select RDS DB Instance: Chỉ chọn cho Oracle (để trống với loại khác)
    • RDS Instance: Chọn <StackName>-SourceOracleDB
    • Endpoint Identifier: oracle-source (hoặc dùng giá trị có sẵn)
    • Descriptive ARN: Để trống
    • Source Engine: Oracle
    • Access to Endpoint Database: Chọn “Provide access information manually”
    • Server Name: <SourceOracleEndpoint> (nên tự điền).
    • Port: 1521
    • SSL Mode: None
    • User Name: dbadmin
    • Password: Kiểm tra tab Outputs của CloudFormation Stack dưới 2DMSDBSecretP
    • SID/Service Name: ORACLEDB
    • VPC: Chọn VPC ID có DMSVpc từ bước thiết lập môi trường
    • Replication Instance: Chọn cfn-DMSReplication, DMSReplication, hoặc instance bạn đã tạo (nếu sẵn sàng)
  • Nhấp Run Test để xác minh kết nối.

xác minh kết nối

Hình 15 xác minh kết nối.

  • Khi trạng thái kiểm tra chuyển sang “Successful”, nhấp Create endpoint.

Tạo endpoint đích

Thực hiện quy trình tương tự để tạo Target Endpoint cho cơ sở dữ liệu Aurora RDS:

  • Nhấp Create endpoint một lần nữa.
  • Nhập các thông tin sau:
    • Endpoint Type: Target endpoint
    • Select RDS DB Instance: Đánh dấu chọn cho tất cả đích cơ sở dữ liệu RDS
    • RDS Instance: Chọn <StackName>-AuroraMySQLInstance
    • Endpoint Identifier: aurora-mysql-target
    • Descriptive ARN: Để trống
    • Target Engine: Amazon Aurora MySQL
    • Access to Endpoint Database: Chọn “Provide access information manually”
    • Server Name: TargetAuroraMySQLEndpoint (hoặc sẽ tự điền).
    • Port: 3306
    • SSL Mode: None
    • User Name: dbadmin
    • Password: kiểm tra tab Outputs của CloudFormation Stack dưới 2DMSDBSecretP
    • VPC: Chọn VPC ID có DMSVpc từ bước thiết lập môi trường
    • Replication Instance: Chọn cfn-DMSReplication, DMSReplication, hoặc instance bạn đã tạo (nếu sẵn sàng)
  • Nhấp Run Test để xác minh kết nối.
  • Khi trạng thái kiểm tra chuyển sang “Successful”, nhấp Create endpoint.

Bước 4: Thiết lập tác vụ di chuyển

Xử lý ràng buộc khóa ngoại trong di chuyển bằng AWS DMS

AWS DMS không đặt thứ tự tải bảng trong quá trình full load, điều này có thể dẫn tới vi phạm khóa ngoại nếu ràng buộc được bật. Ngoài ra, trigger trên cơ sở dữ liệu đích có thể dẫn tới thay đổi dữ liệu ngoài mong đợi. Chúng tôi cũng đã loại bỏ ràng buộc khóa ngoại khỏi cơ sở dữ liệu Aurora MySQL đích.

  • Khởi chạy MySQL Workbench 8.0 CE (đã dùng trước đó để thiết lập quyền).
  • Mở cửa sổ truy vấn mới.
  • Xóa ràng buộc khóa ngoại: AWS SCT không tự động tạo ràng buộc khi di chuyển từ Oracle; công cụ chỉ tạo index. Chạy script SQL sau để xóa các index:
DROP INDEX set_seat_idx ON dms_sample.sporting_event_ticket;
DROP INDEX set_ticketholder_idx ON dms_sample.sporting_event_ticket;
DROP INDEX set_sporting_event_idx ON dms_sample.sporting_event_ticket;
  • Nhấp biểu tượng Execute (tia sét) để chạy script.

Giao diện MySQL Workbench hiển thị các truy vấn SQL

Hình 16 Giao diện MySQL Workbench hiển thị truy vấn SQL.

Sau khi loại bỏ ràng buộc, cơ sở dữ liệu Aurora MySQL đích đã sẵn sàng để di chuyển dữ liệu bằng AWS DMS!

Tạo tác vụ di chuyển DMS

AWS DMS sử dụng Database Migration Task để chuyển dữ liệu từ nguồn sang đích. Thực hiện các bước sau để tạo và giám sát tác vụ di chuyển.

Bước 1: Tạo tác vụ di chuyển
  • Mở AWS DMS Console.
  • Nhấp Database migration tasks ở menu bên trái.
  • Nhấp Create task (góc trên bên phải).
Bước 2: Cấu hình cài đặt tác vụ
  • Task Identifier: source-to-AuroraMySQL-target
  • Replication Instance: cfn-dmsreplication
  • Source Database Endpoint: Chọn cơ sở dữ liệu nguồn của bạn
  • Target Database Endpoint: cfn-auroramysqlinstance
  • Migration Type: Migrate existing data and replicate ongoing changes
  • CDC Stop Mode: Don’t use custom CDC stop mode
  • Create Recovery Table on Target DB: Bỏ chọn
  • Target Table Preparation Mode: Do nothing (không phải mặc định)
  • Stop Task After Full Load Completes: Don’t stop
  • LOB Column Settings / Include LOB Columns in Replication: Limited LOB mode
  • Max LOB Size (KB): 32
  • Data Validation: Bỏ chọn
  • Enable CloudWatch Logs: Chọn
  • Log Context: Mức mặc định
  • Batch-Optimized Apply: Bỏ chọn
Bước 3: Cấu hình ánh xạ bảng
  • Mở rộng phần Table mappings.
  • Chọn Wizard làm chế độ chỉnh sửa.
  • Nhấp Add new selection rule, sau đó nhập:
    • Schema: DMS_SAMPLE%
    • Table Name: %
    • Action: Include

Phần cấu hình ánh xạ bảng hiển thị nhiều quy tắc có thể áp dụng

Hình 17 Cấu hình Table Mapping.

Bước 4: Cấu hình quy tắc chuyển đổi
  • Mở rộng phần Transformation rules.
  • Nhấp Add new transformation rule và nhập các quy tắc sau:
    • Rule 1:
      • Target: Schema
      • Schema Name: DMS_SAMPLE
      • Action: Make lowercase
    • Rule 2:
      • Target: Table
      • Schema Name: DMS_SAMPLE
      • Table Name: %
      • Action: Make lowercase
    • Rule 3:
      • Target: Column
      • Schema Name: DMS_SAMPLE
      • Table Name: %
      • Action: Make lowercase
Bước 5: Hoàn tất và khởi động tác vụ di chuyển
  • Bỏ chọn Turn on premigration assessment (không cần cho hướng dẫn này).
  • Đảm bảo Migration task startup configuration được đặt là Start automatically on create.
  • Nhấp Create task.

Thực hiện di chuyển

Đã đến lúc thực hiện quá trình di chuyển!

Bước 1: Khởi động quá trình di chuyển

Tác vụ sẽ đi qua các trạng thái sau:

  • Creating → Ready → Starting → Running.
  • Nhấp nút làm mới hình tròn để cập nhật trạng thái.

Hình ảnh hiển thị trạng thái di chuyển dữ liệu

Hình 18 Giao diện tác vụ di chuyển AWS DMS hiển thị quá trình sao chép đang diễn ra.

Bước 2: Giám sát quá trình di chuyển

AWS DMS cung cấp các chỉ số CloudWatch để theo dõi hiệu năng của replication instance và tác vụ di chuyển.

Xem chỉ số CloudWatch cho replication instance:

  • Mở AWS DMS Console.
  • Nhấp Replication Instances ở menu bên trái.
  • Chọn replication instance của bạn.
  • Đi tới tab CloudWatch Metrics để xem dữ liệu hiệu năng.

Biểu đồ giám sát AWS CloudWatch hiển thị xu hướng CPU, bộ nhớ và bộ nhớ còn trống.

Hình 19 Biểu đồ sử dụng tài nguyên của AWS DMS Instance.

Xem chỉ số CloudWatch cho tác vụ di chuyển:

  • Mở AWS DMS Console.
  • Nhấp Database Migration Tasks ở menu bên trái.
  • Chọn tác vụ DMS của bạn từ danh sách.
  • Đi tới tab Monitor để phân tích hiệu năng tác vụ.

AWS CloudWatch hiển thị băng thông thông lượng full load và chỉ số chuyển hàng hàng.

Hình 20 Chỉ số thông lượng Full Load của AWS DMS.

Với CloudWatch, bạn có thể theo dõi các chỉ số chính như độ trễ, độ trễ sao chép và trạng thái tác vụ.

Bước 3: Xử lý lỗi và cảnh báo trong quá trình di chuyển

Trong quá trình di chuyển bằng AWS DMS, lỗi và cảnh báo có thể phát sinh do lỗi kết nối, vấn đề toàn vẹn dữ liệu hoặc cấu hình sai. Dưới đây là các vấn đề phổ biến và bước khắc phục để giải quyết.

1. Lỗi kết nối

  • Vấn đề: DMS không thể kết nối tới cơ sở dữ liệu nguồn hoặc đích.
  • Cách khắc phục:
    • Kiểm tra cài đặt VPC, quy tắc Security Group và khả dụng của Subnet.
    • Đảm bảo sử dụng đúng hostname, cổng và thông tin xác thực của cơ sở dữ liệu.
    • Kiểm tra kết nối bằng cách nhấp Test Endpoint Connection trong DMS Console.

2. Vấn đề toàn vẹn dữ liệu

  • Vấn đề: Thiếu hoặc không nhất quán dữ liệu giữa nguồn và đích.
  • Cách khắc phục:
    • Bật xác thực CDC để kiểm tra giao dịch bị thiếu.
    • So sánh số dòng bằng chỉ số CloudWatch.
    • Chạy truy vấn kiểm tra checksum trên cả hai cơ sở dữ liệu để đảm bảo tính nhất quán.

3. Nút nghẽn hiệu năng

  • Vấn đề: Di chuyển chậm hoặc bị trễ.
  • Cách khắc phục:
    • Bật Parallel Load để tăng tốc truyền dữ liệu hàng loạt.
    • Điều chỉnh chế độ LOB (dùng Full LOB mode nếu xử lý đối tượng lớn).
    • Giám sát chỉ số CloudWatch cho CPU, bộ nhớ và độ trễ sao chép.

4. Ràng buộc và trigger trên cơ sở dữ liệu đích

  • Vấn đề: Vi phạm khóa ngoại hoặc thay đổi dữ liệu bất ngờ.
  • Cách khắc phục:
    • Tắt ràng buộc khóa ngoại trước khi di chuyển.
    • Tạm thời bỏ trigger trên cơ sở dữ liệu đích để tránh xung đột.

5. CDC dừng đột ngột

  • Vấn đề: Tác vụ dừng trước khi áp dụng thay đổi liên tục.
  • Cách khắc phục:
    • Kiểm tra vị trí bắt đầu CDC trong log.
    • Đảm bảo thời gian lưu log đủ dài (ví dụ: 24 giờ cho Oracle LogMiner).
    • Khởi động lại tác vụ CDC từ giao dịch đã áp dụng cuối cùng.

6. Không khớp schema giữa nguồn và đích

  • Vấn đề: Một số đối tượng không di chuyển được do khác biệt schema.
  • Cách khắc phục:
    • Sử dụng AWS SCT (Schema Conversion Tool) để đánh giá các điểm không tương thích.
    • Áp dụng chỉnh sửa schema thủ công nếu cần.

7. Kiểm tra log và gỡ lỗi

  • Sử dụng AWS CloudWatch logs:
    • Đi tới AWS DMS Console > Migration Tasks > View Logs.
    • Lọc log theo từ khóa lỗi như failure, timeout, hoặc constraint violation.
  • Bật Verbose Logging nếu cần thông tin sâu hơn.

Các bước sau di chuyển

Giờ hãy xem một số bước bạn có thể thực hiện sau khi di chuyển bằng DMS.

Bước 1: Xác thực toàn vẹn dữ liệu

Khi AWS DMS hoàn tất di chuyển, việc xác thực toàn vẹn dữ liệu và đảm bảo cơ sở dữ liệu đích phản ánh chính xác nguồn là rất quan trọng. Dưới đây là các kỹ thuật xác thực chính:

Sử dụng tính năng xác thực dữ liệu của AWS DMS

  • Nếu đã bật xác thực dữ liệu trong AWS DMS, điều hướng tới:
    • AWS DMS Console > Migration Tasks > Table Statistics
    • Kiểm tra các lỗi xác thực và chạy lại di chuyển cho các bảng bị ảnh hưởng.

Tóm tắt xác thực AWS DMS hiển thị không có mục chờ, thất bại hoặc tạm dừng.

Hình 21 Tóm tắt xác thực của AWS DMS.

Bước 2: Thực hiện cutover sang cơ sở dữ liệu đích

Khi AWS DMS đã di chuyển toàn bộ dữ liệu và hoàn tất sao chép liên tục (CDC), bước cuối cùng là chuyển sang sử dụng cơ sở dữ liệu đích làm hệ thống chính. Thực hiện các bước sau để chuyển đổi suôn sẻ:

Bước 1: Xác minh tính nhất quán dữ liệu

Trước khi chuyển đổi, xác nhận rằng tất cả dữ liệu đã được sao chép đầy đủ:

  • Kiểm tra số lượng dòng giữa nguồn và đích.
  • Chạy kiểm tra checksum trên các bảng quan trọng.
  • Xem chỉ số CloudWatch về độ trễ sao chép (nên bằng 0 trước khi cutover).

Bước 2: Dừng mọi thay đổi mới trên cơ sở dữ liệu nguồn

Để tránh không nhất quán dữ liệu:

  • Vô hiệu ghi trên cơ sở dữ liệu nguồn bằng chế độ chỉ đọc.
  • Đảm bảo tất cả ứng dụng ghi dữ liệu trỏ sang cơ sở dữ liệu đích mới.

Bước 3: Dừng sao chép AWS DMS

  • Trong AWS DMS Console, điều hướng tới Database Migration Tasks.
  • Chọn tác vụ di chuyển đang hoạt động của bạn.
  • Nhấp Stop Task để dừng sao chép liên tục.

Dừng tác vụ Di chuyển AWS DMS

Hình 22 Dừng tác vụ Di chuyển AWS DMS.

Bước 4: Thăng hạng cơ sở dữ liệu đích thành chính

  • Gỡ bỏ hạn chế chỉ đọc trên cơ sở dữ liệu đích
  • Cập nhật chuỗi kết nối ứng dụng để trỏ tới cơ sở dữ liệu mới.

Bước 5: Xác thực và kiểm thử cuối cùng

  • Kiểm thử các truy vấn ứng dụng quan trọng để xác nhận chức năng.
  • Xác nhận giao dịch mới được xử lý đúng trên hệ thống đích.
  • Chạy kiểm thử end-to-end để đảm bảo quy trình nghiệp vụ vẫn nguyên vẹn.

Bước 6: Ngừng sử dụng cơ sở dữ liệu nguồn cũ (nếu cần)

  • Cơ sở dữ liệu nguồn có thể được lưu trữ lưu trữ hoặc ngừng sử dụng nếu không còn cần thiết.
  • Giữ bản sao lưu trước khi gỡ bỏ hoàn toàn hệ thống nguồn.

Bước 3: Dọn dẹp và hoàn tất

Bước 1: Dừng và xóa tác vụ di chuyển

  • Mở AWS DMS Console.
  • Ở menu bên trái, nhấp Database Migration Tasks.
  • Chọn các tác vụ di chuyển bạn đã tạo.
  • Nhấp Actions > Stop và xác nhận.
  • Khi trạng thái tác vụ chuyển sang “Stopped”, nhấp Actions > Delete và xác nhận.

Bước 2: Xóa DMS endpoints

  • Trong AWS DMS Console, nhấp Endpoints ở menu bên trái.
  • Chọn các endpoint đã tạo trong hướng dẫn.
  • Nhấp Actions > Delete và xác nhận.

Xóa AWS DMS Endpoints

Hình 23 Xóa AWS DMS Endpoints.

Bước 3: Xóa CloudFormation stack

  • Mở AWS CloudFormation Console.
  • Chọn CloudFormation Stack đã tạo trong hướng dẫn.
  • Nhấp Delete (góc trên bên phải).

Giao diện AWS yêu cầu xác nhận xóa CloudFormation stack.

Hình 24 Xác nhận Xóa Stack trong AWS.

  • Xác nhận xóa — CloudFormation sẽ tự động gỡ bỏ tất cả tài nguyên liên quan (có thể mất tới 15 phút).
  • Theo dõi bảng điều khiển CloudFormation để đảm bảo stack được xóa hoàn toàn.

Các tính năng nâng cao của AWS DMS

Giờ hãy xem một số kịch bản phức tạp hơn mà bạn có thể giải quyết với AWS DMS.

Biến đổi dữ liệu trong quá trình di chuyển

AWS DMS cho phép biến đổi dữ liệu trong khi di chuyển, như thay đổi kiểu dữ liệu cột, đổi tên bảng/cột và lọc dữ liệu. Các chuyển đổi này giúp điều chỉnh schema nguồn phù hợp với cấu trúc cơ sở dữ liệu đích. Sử dụng quy tắc chuyển đổi trong phần Table Mappings, bạn có thể áp dụng thay đổi động mà không cần sửa cơ sở dữ liệu nguồn. 

Để biết các bước chi tiết, xem bài viết trên blog về biến đổi nội dung cột.

Sử dụng AWS DMS với S3 làm đích

AWS DMS có thể di chuyển dữ liệu tới Amazon S3, cho phép lưu trữ tiết kiệm chi phí phục vụ phân tích, machine learning hoặc xử lý tiếp theo bằng các dịch vụ như AWS Glue, Athena hoặc Redshift.

Làm theo các bước sau để cấu hình Amazon S3 làm đích cho di chuyển bằng AWS DMS.

Bước 1: Tạo S3 bucket

  • Mở Amazon S3 Console.
  • Nhấp Create bucket.
  • Đặt Bucket Name: dmstargetbucket-<random 4-digit number>
  • Đảm bảo vùng trùng với tài nguyên AWS DMS.
  • Giữ các cài đặt khác mặc định và nhấp Create bucket.

Bước 2: Tạo thư mục trong S3 bucket

  • Mở bucket vừa tạo.
  • Nhấp Create folder.
  • Đặt tên thư mục dmstargetfolder.
  • Giữ mặc định và nhấp Create folder.

Bước 3: Tạo chính sách AWS IAM cho truy cập S3

  • Mở IAM Console và vào Policies.
  • Nhấp Create policy, sau đó chọn tab JSON.
  • Sao chép và dán chính sách sau, thay "REPLACE-WITH-YOUR-BUCKET-NAME" bằng tên bucket thực tế của bạn:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::REPLACE-WITH-YOUR-BUCKET-NAME*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::REPLACE-WITH-YOUR-BUCKET-NAME*"
      ]
    }
  ]
}
  • Nhấp Review policy.
  • Đặt Policy Name là DMS-tutorial-S3-Access-Policy, sau đó nhấp Create policy.

Bước 4: Gắn policy vào IAM role

  • Trong IAM Console, vào Roles.
  • Tìm “dms-vpc” và chọn dms-vpc-role.
  • Nhấp Add permissions > Attach policies.

Giao diện quản lý quyền AWS IAM hiển thị các policy đã gắn

Hình 25 Quản lý Policy AWS IAM.

  • Chọn DMS-LAB-S3-Access-Policy và nhấp Add permissions.

Bước 5: Lưu IAM Role ARN

  • Trên trang tóm tắt dms-vpc-role, sao chép Role ARN.
  • Lưu lại để sử dụng sau trong cấu hình AWS DMS.

Tạo S3 target endpoints

Khi S3 bucket đã được cấu hình với policy và role phù hợp, bước tiếp theo là tạo endpoint đích trong AWS DMS.

  • Mở AWS DMS Console.
  • Nhấp Endpoints ở menu bên trái.
  • Nhấp Create endpoint (góc trên bên phải).
  • Cấu hình endpoint đích S3.
  • Nhập các giá trị sau:
    • Endpoint Type: Target endpoint
    • Endpoint Identifier: S3-target
    • Descriptive ARN: Để trống
    • Target Engine: Amazon S3
    • Server Name: <ARN of the dms-vpc-role>
    • Bucket Name: <Your S3 Bucket Name>
    • Bucket Folder: dmstargetfolder
  • Nhấp Run Test để xác minh kết nối.
  • Khi kiểm tra “Successful”, nhấp Create endpoint.

Tạo tác vụ di chuyển DMS

Bước 1: Tạo tác vụ di chuyển
  • Mở AWS DMS Console.
  • Nhấp Database migration tasks ở menu bên trái.
  • Nhấp Create task (góc trên bên phải).
Bước 2: Cấu hình cài đặt tác vụ
  • Task Identifier: source-to-AuroraMySQL-target
  • Replication Instance: cfn-dmsreplication
  • Source Database Endpoint: Chọn cơ sở dữ liệu nguồn của bạn
  • Target Database Endpoint: cfn-auroramysqlinstance
  • Migration Type: Migrate existing data and replicate ongoing changes
  • CDC Stop Mode: Don’t use custom CDC stop mode
  • Create Recovery Table on Target DB: Bỏ chọn
  • Target Table Preparation Mode: Do nothing (không phải mặc định)
  • Stop Task After Full Load Completes: Don’t stop
  • LOB Column Settings / Include LOB Columns in Replication: Limited LOB mode
  • Max LOB Size (KB): 32
  • Data Validation: Bỏ chọn
  • Enable CloudWatch Logs: Chọn
  • Log Context: Mức mặc định
  • Batch-Optimized Apply: Bỏ chọn
Bước 3: Cấu hình ánh xạ bảng
  • Mở rộng phần Table mappings.
  • Chọn Wizard làm chế độ chỉnh sửa.
  • Nhấp Add new selection rule, sau đó nhập:
    • Schema: DMS_SAMPLE%
    • Table Name: %
    • Action: Include

Cấu hình Table Mapping

Hình 26 Cấu hình Table Mapping

Bước 4: Cấu hình quy tắc chuyển đổi
  • Mở rộng phần Transformation rules.
  • Nhấp Add new transformation rule và nhập các quy tắc sau:
    • Rule 1:
      • Target: Schema
      • Schema Name: DMS_SAMPLE
      • Action: Make lowercase
    • Rule 2:
      • Target: Table
      • Schema Name: DMS_SAMPLE
      • Table Name: %
      • Action: Make lowercase
    • Rule 3:
      • Target: Column
      • Schema Name: DMS_SAMPLE
      • Table Name: %
      • Action: Make lowercase
Bước 5: Hoàn tất và khởi động tác vụ di chuyển
  • Bỏ chọn Turn on premigration assessment (không cần cho workshop này).
  • Đảm bảo Migration task startup configuration được đặt là Start automatically on create.
  • Nhấp Create task.
Bước 6: Giám sát tiến độ di chuyển
  • Nhấp vào tác vụ di chuyển (source-to-s3-target).
  • Cuộn tới Table Statistics để xem số lượng hàng đã chuyển.
  • Nếu trạng thái chuyển sang đỏ (lỗi), nhấp View Logs để khắc phục bằng log CloudWatch.

Thực tiễn tốt nhất cho AWS DMS

Giờ hãy xem một số thực tiễn tốt nhất cần áp dụng khi di chuyển dữ liệu bằng AWS DMS.

Tối ưu hiệu năng

Để đảm bảo quá trình di chuyển cơ sở dữ liệu hiệu quả và nhanh với AWS DMS, cân nhắc các tối ưu sau:

  • Chọn kích thước replication instance phù hợp
    • Dùng loại instance lớn hơn (ví dụ: dms.r5.large hoặc cao hơn) cho di chuyển băng thông lớn.
    • Giám sát CPU, bộ nhớ và IOPS bằng CloudWatch và nâng cấp instance nếu cần.
  • Sử dụng nhiều tác vụ di chuyển để xử lý song song
    • Chia nhỏ di chuyển lớn thành nhiều tác vụ theo nhóm bảng để giảm thời gian.
    • Di chuyển bảng lớn riêng với bảng nhỏ để cân bằng hiệu năng.
  • Tối ưu kết nối mạng
    • Đặt DMS replication instance trong cùng VPC và Availability Zone với cơ sở dữ liệu nguồn và đích.
    • Dùng VPC endpoint hoặc Direct Connect để ổn định mạng và giảm độ trễ.
  • Điều chỉnh cài đặt LOB
    • Với đối tượng lớn (LOB), dùng Limited LOB Mode với kích thước LOB phù hợp để giảm tác động hiệu năng.
  • Bật parallel load và batch apply
    • Bật Batch Optimized Apply để chèn dữ liệu nhanh hơn vào cơ sở dữ liệu đích.
    • Sử dụng Parallel Load cho di chuyển quy mô lớn để xử lý nhiều bảng đồng thời.

Lên kế hoạch cho downtime

Giảm thiểu downtime trong quá trình di chuyển cơ sở dữ liệu là rất quan trọng để duy trì liên tục hoạt động kinh doanh. Dưới đây là các chiến lược đảm bảo cutover suôn sẻ:

  • Di chuyển vào thời điểm ít truy cập
    • Lên lịch cutover vào giờ thấp điểm để giảm ảnh hưởng tới người dùng.
    • Thông báo trước cho các bên liên quan để chuẩn bị cho gián đoạn tạm thời.
  • Sử dụng sao chép liên tục (CDC)
    • Bật Change Data Capture (CDC) để giữ đồng bộ cơ sở dữ liệu đích với nguồn.
    • Điều này cho phép ứng dụng chuyển đổi với mất mát dữ liệu tối thiểu.
  • Thực hiện cutover thử nghiệm
    • Chạy thử di chuyển trên môi trường staging trước cutover cuối cùng.
    • Xác thực hiệu năng và xử lý các vấn đề schema hoặc dữ liệu không nhất quán.
  • Giảm tác động chuyển đổi DNS
    • Chuẩn bị kết nối cơ sở dữ liệu qua DNS để việc chuyển sang đích mới liền mạch.
    • Chỉ cập nhật chuỗi kết nối ứng dụng khi đã xác minh di chuyển.
  • Giữ nguồn ở chế độ chỉ đọc trước cutover cuối
    • Ngăn giao dịch mới trên nguồn bằng cách đặt chế độ chỉ đọc.
    • Đảm bảo mọi thay đổi tồn đọng đã được sao chép trước khi trỏ ứng dụng sang đích.

Bảo mật dữ liệu của bạn

Bảo mật dữ liệu khi di chuyển rất quan trọng để bảo vệ thông tin nhạy cảm và tuân thủ yêu cầu.

  • Mã hóa dữ liệu khi truyền bằng SSL/TLS
    • Bật SSL/TLS cho kết nối cơ sở dữ liệu nguồn và đích để ngăn chặn đánh chặn.
    • Sử dụng xác thực dựa trên chứng chỉ để tăng cường bảo mật.
  • Hạn chế truy cập bằng role và policy AWS IAM
    • Gán các role IAM theo nguyên tắc đặc quyền tối thiểu cho replication instance và endpoint của DMS.
    • Sử dụng IAM policy để hạn chế truy cập vào cơ sở dữ liệu cụ thể, S3 bucket và CloudWatch logs.
  • Bật mã hóa khi lưu trữ
    • Sử dụng AWS Key Management Service (KMS) để mã hóa dữ liệu Amazon S3 hoặc RDS.
    • Đảm bảo cơ sở dữ liệu đích hỗ trợ mã hóa để lưu trữ an toàn.

Khắc phục sự cố AWS DMS

DMS là một công cụ mạnh mẽ, nhưng không tránh khỏi vấn đề. Dưới đây là cách xử lý những vấn đề phổ biến nhất.

Lỗi thường gặp và cách giải quyết

Quá trình di chuyển bằng AWS DMS có thể gặp lỗi liên quan đến kết nối cơ sở dữ liệu, không tương thích schema và lỗi sao chép.

1. Lỗi kết nối cơ sở dữ liệu

  • Lỗi: "Failed to connect to database endpoint."
  • Giải pháp:
    • Xác minh VPC, security group và cài đặt subnet.
    • Kiểm tra cơ sở dữ liệu có thể truy cập từ DMS replication instance hay không.
    • Đảm bảo host, cổng và thông tin xác thực đúng trong cài đặt endpoint DMS.
    • Kiểm tra kết nối bằng tùy chọn "Test Endpoint Connection" trong DMS console.

2. Vấn đề tương thích kiểu dữ liệu

  • Lỗi: "Unsupported data type conversion between source and target."
  • Giải pháp:
    • Dùng AWS Schema Conversion Tool (SCT) để xác định kiểu dữ liệu không tương thích.
    • Sửa kiểu dữ liệu cột thủ công ở schema đích nếu cần.
    • Bật quy tắc chuyển đổi trong DMS để tự động chuyển kiểu không tương thích.

3. Vi phạm ràng buộc khóa ngoại

  • Lỗi: "Foreign key constraint violation in target database."
  • Giải pháp:
    • Tắt ràng buộc khóa ngoại trước di chuyển và bật lại sau khi hoàn tất.
    • Dùng "Truncate before load" nếu tải lại dữ liệu vào bảng hiện có.

4. Hiệu năng di chuyển chậm

  • Lỗi: "Replication lag increasing significantly."
  • Giải pháp:
    • Dùng DMS replication instance lớn hơn (dms.r5.large hoặc cao hơn).
    • Bật Parallel Load và Batch Optimized Apply để tăng tốc nhập liệu.
    • Tối ưu kết nối mạng bằng cách đặt DMS, nguồn và đích trong cùng VPC.

5. Sao chép liên tục (CDC) dừng bất ngờ

  • Lỗi: "CDC task stopped due to missing log files."
  • Giải pháp:
    • Đảm bảo thời gian lưu log đủ trên cơ sở dữ liệu nguồn (ví dụ: 24 giờ cho Oracle LogMiner).
    • Khởi động lại tác vụ CDC từ giao dịch đã áp dụng cuối.

Sử dụng log DMS để khắc phục sự cố

AWS DMS cung cấp log tác vụ và tích hợp CloudWatch giúp xác định và giải quyết sự cố di chuyển hiệu quả.

1. Truy cập log tác vụ DMS

  • Trong AWS DMS Console, vào Database Migration Tasks.
  • Chọn tác vụ gặp sự cố.
  • Nhấp Monitoring để truy cập thông báo lỗi và chi tiết thực thi.

AWS CloudWatch logs hiển thị lỗi và cảnh báo liên quan đến di chuyển DMS.

Hình 27 AWS CloudWatch Logs với lỗi di chuyển

2. Sử dụng AWS CloudWatch để gỡ lỗi chi tiết

  • Đi tới AWS CloudWatch Console > Logs.
  • Tìm nhóm log replication instance DMS (/aws/dms/replication-instance-ID).
  • Bật verbose logging trong cài đặt tác vụ DMS để thu thập chi tiết hơn.

AWS CloudWatch hiển thị chi tiết sự kiện log cho một tác vụ di chuyển.

Hình 28 Tổng quan Sự kiện AWS CloudWatch

Kết luận

AWS Database Migration Service (DMS) giúp việc di chuyển dữ liệu giữa các engine cơ sở dữ liệu khác nhau trở nên dễ dàng hơn với downtime tối thiểu. Bằng cách tuân theo các thực tiễn tốt nhất — như tối ưu hiệu năng, bảo mật dữ liệu, quản lý thay đổi schema và khắc phục sự cố thường gặp — bạn có thể đảm bảo một quy trình di chuyển trơn tru.

Bây giờ bạn đã hoàn thành một quy trình di chuyển AWS DMS end-to-end, bạn sẵn sàng tận dụng tối đa cơ sở dữ liệu trên đám mây mới cho khả năng mở rộng tốt hơn, phân tích và tối ưu hóa theo hướng cloud-native. Nếu bạn muốn nâng cao kiến thức AWS, hãy khám phá lộ trình Chứng chỉ AWS Cloud Practitioner hoặc bắt đầu với AWS Concepts và AWS Security & Cost Management.

Rahul Sharma

Tác giả

Rahul Sharma

Rahul Sharma là AWS Ambassador, Kiến trúc sư DevOps và blogger kỹ thuật, chuyên về điện toán đám mây, thực hành DevOps và công nghệ mã nguồn mở. Với chuyên môn về AWS, Kubernetes và Terraform, anh giúp đơn giản hóa các khái niệm phức tạp cho người học và chuyên gia thông qua những bài viết và hướng dẫn hấp dẫn. Rahul đam mê giải quyết các thách thức DevOps và chia sẻ hiểu biết nhằm trao quyền cho cộng đồng công nghệ.

Chủ đề

Liên quan