Dịch vụ di chuyển cơ sở dữ liệu AWS (DMS) được thiết kế để di chuyển cơ sở dữ liệu trên AWS một cách đáng tin cậy, không có thời gian chết. Ban đầu, DMS chỉ hỗ trợ cơ sở dữ liệu quan hệ, bao gồm AWS Redshift. Vào tháng 4 năm 2017, DMS đã thêm hai cơ sở dữ liệu NoSQL:MongoDB làm cơ sở dữ liệu nguồn và AWS DynamoDB làm cơ sở dữ liệu đích. Trong hướng dẫn gồm hai bài viết này, chúng ta sẽ thảo luận về việc di chuyển cơ sở dữ liệu MongoDB sang DynamoDB trên DMS. Một trong những yêu cầu để sử dụng MongoDB làm nguồn DMS là MongoDB phải chạy dưới dạng một tập hợp bản sao, mà chúng tôi sẽ tạo bằng cách sử dụng hình ảnh Docker trong phần đầu tiên của hai bài viết này.
Bài viết này có các phần sau:
- Thiết lập Môi trường
- Tạo Người dùng IAM cho Dịch vụ Di chuyển Cơ sở dữ liệu
- Tạo khóa mã hóa
- Tạo Cơ sở dữ liệu MongoDB
- Tạo Bảng DynamoDB
- Kết luận
Thiết lập Môi trường
Điều kiện tiên quyết duy nhất là tài khoản AWS, có thể được tạo tại https://aws.amazon.com/resources/create-account/. Chúng tôi sẽ chạy cả cơ sở dữ liệu nguồn và cơ sở dữ liệu đích trên AWS. Đối với nguồn MongoDB, chúng tôi sẽ sử dụng Docker, mà chúng tôi sẽ khởi chạy phiên bản EC2 với AMI Container Linux bằng CoreOS (Ổn định) được chọn từ AWS Marketplace, như trong Hình 1. CoreOS được chọn làm nền tảng Linux vì nó có Docker được cài đặt sẵn trên đó.
Hình 1: Chọn CoreOS AMI để khởi chạy Phiên bản EC2
Nhóm bảo mật được sử dụng bởi phiên bản CoreOS EC2 phải có các quy tắc Đến / Đi được đặt để chấp nhận tất cả lưu lượng. Điều này ngụ ý lưu lượng của tất cả các giao thức trên tất cả các cổng giữa tất cả các nguồn và đích ( 0.0.0.0/0,::/0 ).
Tạo người dùng IAM cho Dịch vụ di chuyển cơ sở dữ liệu
Trong phần này, chúng tôi sẽ tạo một người dùng IAM để truy cập các dịch vụ AWS khác nhau được sử dụng để tạo quá trình di chuyển, bao gồm DMS, EC2, DynamoDB, KMS, IAM và CloudWatch. Đầu tiên, chúng ta cần tạo Chính sách với các quyền cần thiết. Sau đó, chúng tôi sẽ tạo một người dùng và chỉ định chính sách cho người dùng đó. Để tạo chính sách IAM, hãy chọn Chính sách trong bảng điều khiển IAM và nhấp vào Tạo chính sách . Trong Tạo chính sách, chọn Tạo chính sách của riêng bạn . Trong Chính sách Đánh giá, chỉ định Tên Chính sách ( DMS làm ví dụ) và sao chép và dán tài liệu chính sách sau vào trường Tài liệu chính sách.
{"Phiên bản":"2012-10-17", "Tuyên bố":[{"Hiệu ứng":"Cho phép", "Hành động":"dms:*", "Tài nguyên":"*"}, { "Hiệu ứng":"Cho phép", "Hành động":"dynamicodb:*", "Tài nguyên":"*"}, {"Hiệu ứng":"Cho phép", "Hành động":"kms:*", "Tài nguyên":"*"}, {"Hiệu ứng":"Cho phép", "Hành động":"iam:*", "Tài nguyên":"*"}, {"Hiệu ứng":"Cho phép", "Hành động":"ec2:* "," Tài nguyên ":" * "}, {" Hiệu ứng ":" Cho phép "," Hành động ":" cloudwatch:* "," Tài nguyên ":" * "}, {" Hiệu ứng ":" Cho phép "," Hành động ":" aws-marketplace:* "," Tài nguyên ":" * "}, {" Hiệu ứng ":" Cho phép "," Hành động ":" nhật ký:* "," Tài nguyên ":" * "}, {" Hiệu ứng ":" Allow "," Action ":[" redshift:Describe * "," redshift:ModifyClusterIamRoles "]," Resource ":" * "}]}Nhấp vào Xác thực chính sách . Nếu đầu ra là "Chính sách này hợp lệ", hãy nhấp vào Tạo chính sách , như trong Hình 2.
Hình 2: Tạo Chính sách IAMChính sách IAM mới được tạo, như trong Hình 3.
Hình 3: Chính sách IAM “DMS”Tiếp theo, tạo một người dùng IAM. Chọn Người dùng và nhấp vào Thêm người dùng , như trong Hình 4.
Hình 4: Thêm người dùngTrong Thêm người dùng , chỉ định một Tên người dùng , như trong Hình 5. Đối với Loại truy cập , chọn Truy cập có lập trình và quyền truy cập Bảng điều khiển quản lý AWS .
Hình 5: Thêm người dùngĐối với mật khẩu bảng điều khiển , chọn Mật khẩu tùy chỉnh và chỉ định mật khẩu (xem Hình 6). Nhấp vào Tiếp theo.
Hình 6: Chọn Loại truy cập AWS> Tiếp theoTrong Đặt quyền, nhấp vào Đính kèm trực tiếp các chính sách hiện có , như trong Hình 7.
Hình 7: Đặt quyềnChọn chính sách DMS đã tạo trước đó và nhấp vào Tiếp theo, như trong Hình 8.
Hình 8: Chọn Chính sách DMSTrong Xem lại, nhấp vào Tạo người dùng , như trong Hình 9.
Hình 9: Xem lại> Tạo người dùngMột người dùng IAM được tạo. Sao chép URL hiển thị trong Hình 10 để đăng nhập vào Bảng điều khiển quản lý AWS do người dùng tạo.
Hình 10: URL người dùng IAMNgười dùng mới được liệt kê trong Người dùng (xem Hình 11).
Hình 11: URL người dùng IAMTạo khóa mã hóa
Tiếp theo, tạo một khóa mã hóa để sử dụng cho quá trình di chuyển DMS. Đăng nhập với tư cách người dùng IAM đã tạo và sử dụng URL được sao chép trong Hình 10. Chọn IAM trong bảng điều khiển quản lý AWS và chọn Khóa mã hóa . Nhấp vào Tạo khóa để khởi động trình hướng dẫn tạo khóa mã hóa. Sử dụng trình hướng dẫn để tạo khóa mã hóa ( dms ), như trong Hình 12.
Hình 12: Khóa mã hóa mớiTạo cơ sở dữ liệu MongoDB
Trong phần này, chúng tôi sẽ tạo cơ sở dữ liệu MongoDB mà sau đó chúng tôi sẽ chuyển sang DynamoDB. Chúng tôi sẽ sử dụng Docker để chạy một phiên bản MongoDB, một phiên bản CoreOS đã được khởi chạy. Để đăng nhập vào một phiên bản CoreOS, hãy lấy Địa chỉ IP Công cộng của phiên bản CoreOS, như trong Hình 13.
Hình 13: Địa chỉ IP công khai của Phiên bản CoreOSSSH đăng nhập vào phiên bản CoreOS bằng cặp khóa và IP Công cộng.
ssh -i "docker.pem" [email protected]Dòng lệnh phiên bản CoreOS sẽ được hiển thị, như trong Hình 14.
Hình 14: Phiên bản CoreOSTiếp theo, chạy lệnh sau để khởi động vùng chứa Docker cho MongoDB bằng cách sử dụng hình ảnh MongoDB “mongo”. Cổng vùng chứa Docker 27017 cũng được hiển thị trên máy chủ lưu trữ là 27017 bằng cách sử dụng -p tùy chọn để chạy docker . Tên vùng chứa được đặt thành “mongo1” và lệnh mongod --replSet repl0 được chạy trong vùng chứa được tạo để bắt đầu một tập hợp bản sao MongoDB được gọi là “repl0”. Như đã đề cập trước đây, để sử dụng MongoDB làm nguồn DMS, cần phải có bộ bản sao MongoDB và không thể sử dụng MongoDB độc lập làm nguồn.
docker run -p 27017:27017 mongo mongod --replSet repl0Hình ảnh Docker mongo được kéo và như được chỉ ra bởi thông báo “MongoDB đang bắt đầu” trong Hình 15 MongoDB bắt đầu được khởi động.
Hình 15: Tải xuống Docker Image dockerMột cá thể MongoDB được bắt đầu trên cổng 27017 (xem Hình 16). Một tập hợp bản sao vẫn chưa được tạo và chúng tôi sẽ khởi tạo một tập hợp bản sao tiếp theo.
Hình 16: Phiên bản Mongo đã bắt đầuMột vùng chứa Docker được liệt kê với docker ps như trong Hình 17.
Hình 17: Liệt kê vùng chứa Docker cho MongoSử dụng lệnh sau để bắt đầu trình bao lệnh cho giao diện dòng lệnh Mongo (CLI).
docker execute -it mongo1 mongoMongoDB shell phiên bản 3.4.4 được kết nối với URL mongodb://127.0.0.1:27017 , như trong Hình 18.
Hình 18: Kết nối MongoDB ShellDấu nhắc lệnh Mongo CLI được hiển thị, như trong Hình 19.
Hình 19: Mongo Shell Command PromptĐặt cơ sở dữ liệu MongoDB để sử dụng làm kiểm tra với kiểm tra sử dụng như trong Hình 20.
Hình 20: Đặt Cơ sở dữ liệu làm thử nghiệmTiếp theo, chúng ta sẽ khởi tạo một tập hợp bản sao mà chúng ta cần xác định các thành viên hoặc thể hiện của tập hợp bản sao. Lấy IP riêng của phiên bản CoreOS EC2 mà vùng chứa Docker cho MongoDB đang chạy (xem Hình 21).
Hình 21: IP riêng của phiên bản CoreOSTrong Mongo CLI, chỉ định cấu hình sau cho cấu hình tập hợp bản sao.
config ={"_id":"repl0", "thành viên":[{"_id":0, "host":"172.30.2.20:27017"}]}Cấu hình tập hợp bản sao được thiết lập, như trong Hình 22.
Hình 22: Đặt cấu hình đặt bản saoBắt đầu cấu hình tập hợp bản sao bằng cách sử dụng cấu hình.
rs.initiate (config)Tập hợp bản sao được khởi tạo, như trong Hình 23.
Hình 23: Bộ bản sao được khởi tạoXuất ra cấu hình tập hợp bản sao.
rs.conf ()repl0:PRIMARY dấu nhắc lệnh chỉ ra rằng tập hợp bản sao đã được khởi tạo và thành viên chính của tập hợp bản sao đã được thiết lập để chạy các lệnh Mongo CLI. Chính là thành viên duy nhất trong một tập hợp bản sao cho các hoạt động ghi. Tạo bộ sưu tập MongoDB có tên wlslog với db.createCollection (
) lệnh.db.createCollection ("wlslog")Một bộ sưu tập MongoDB được tạo, như thể hiện trong Hình 24. Bộ sưu tập MongoDB là một tập hợp các tài liệu. Các tài liệu ở định dạng BSON (JSON nhị phân).
Hình 24: Tạo Bộ sưu tậpChạy các câu lệnh sau để xác định tài liệu JSON trong Mongo CLI.
doc1 ={"timestamp":"Ngày 8 tháng 4 năm 2014 7:06:16 CH PDT", "category":"Thông báo", "type":"WebLogicServer", "servername":"AdminServer", "mã ":" BEA-000365 "," msg ":" Trạng thái máy chủ đã thay đổi thành STANDBY "} doc2 ={" timestamp ":" Ngày 8 tháng 4 năm 2014 7:06:17 CH PDT "," category ":" Thông báo "," gõ ":" WebLogicServer "," servername ":" AdminServer "," code ":" BEA-000365 "," msg ":" Trạng thái máy chủ được thay đổi thành STARTING "} doc3 ={" dấu thời gian ":" 8 tháng 4 năm 2014 7 :06:18 PM PDT "," category ":" Thông báo "," type ":" WebLogicServer "," servername ":" AdminServer "," code ":" BEA-000365 "," msg ":" Trạng thái máy chủ đã thay đổi tới ADMIN "} doc4 ={" timestamp ":" Ngày 8 tháng 4 năm 2014 7:06:19 CH PDT "," thể loại ":" Thông báo "," type ":" WebLogicServer "," servername ":" AdminServer "," code ":" BEA-000365 "," msg ":" Trạng thái máy chủ đã thay đổi thành RESUMING "} doc5 ={" timestamp ":" Ngày 8 tháng 4 năm 2014 7:06:20 CH PDT "," category ":" Thông báo ", "type":"WebLogicServer", "servername":"AdminServer", "code":"BEA-000331", "msg":"Started WebLogic Admin Server"} doc6 ={"timestamp":"8 thg 4, 2014 7 :06:21 PM PDT ", "Category":"Thông báo", "type":"WebLogicServer", "servername":"AdminServer", "code":"BEA-000365", "msg":"Trạng thái máy chủ được thay đổi thành RUNNING"} doc7 ={" dấu thời gian ":" 8 tháng 4 năm 2014 7:06:22 CH PDT "," danh mục ":" Thông báo "," loại ":" WebLogicServer "," tên máy chủ ":" AdminServer "," mã ":" BEA-000360 " , "msg":"Máy chủ đã khởi động ở chế độ RUNNING"}Các biến của tài liệu JSON được xác định, như thể hiện trong Hình 25.
Hình 25: Xác định các biến cho tài liệu JSONThêm tài liệu JSON vào wlslog bộ sưu tập.
db.wlslog.insert ([doc1, doc2, doc3, doc4, doc5, doc6, doc7])Như được chỉ ra bởi kết quả trong Hình 26, bảy tài liệu được thêm vào wlslog bộ sưu tập.
Hình 26: Tài liệu JSON đã được thêm vào bộ sưu tậpLiệt kê các tài liệu được thêm vào wlslog bộ sưu tập.
db.wlslog.find ()Bảy tài liệu được thêm vào sẽ được liệt kê, như trong Hình 27.
Hình 27: Tìm hoặc Lấy tài liệu từ Bộ sưu tập MongoTạo bảng DynamoDB
Sau khi tạo bộ bản sao MongoDB cho nguồn DMS, tiếp theo chúng ta sẽ tạo một bảng DynamoDB cho mục tiêu DMS. Đăng nhập với tư cách là người dùng IAM (dvohra) đã tạo trước đó và được chỉ định một chính sách. Chọn dịch vụ DynamoDB trong Bảng điều khiển quản lý AW và chọn Tạo bảng , như trong Hình 28.
Hình 28: DynamoDB> Tạo bảngTrong bảng Tạo DynamoDB, chỉ định Tên bảng và chỉ định Khóa chính , cũng là khóa Phân vùng, là _id , như trong Hình 29. Mặc dù tên Bảng là tùy ý và được đặt thành wlslog , giống như bộ sưu tập MongoDB được tạo trong bộ bản sao MongoDB, Khóa chính phải được đặt thành _id vì mỗi tài liệu MongoDB được gán trường khóa chính _id .
Hình 29: Tạo bảng DynamoDBBảng DynamoDB wlslog được tạo, như trong Hình 30.
Hình 30: Đã tạo wlslog bảng DynamoDBNhấp vào bảng DynamoDB wlslog trong Trang tổng quan và chi tiết bảng, bao gồm cả khóa chính _id , được hiển thị (xem Hình 31).
Hình 31: Chi tiết wlslog bảng DynamoDBKhi quá trình di chuyển DMS được tạo, vai trò IAM dms-vpc-role với chính sách được quản lý AmazonDMSVPCManagementRole được tạo tự động. Để dịch vụ DMS truy cập dịch vụ DynamoDB, chúng tôi cần sửa đổi vai trò truy cập dịch vụ dms-vpc-role để thêm tài liệu chính sách sau, tài liệu này cung cấp quyền truy cập vào DynamoDB từ DMS.
{"Phiên bản":"2012-10-17", "Tuyên bố":[{"Hiệu ứng":"Cho phép", "Hành động":["dynamicodb:*"], "Tài nguyên":["*" ]}]}Sử dụng quy trình tương tự được sử dụng để tạo chính sách DMS, tạo DynamoDB chính sách và chỉ định tài liệu chính sách trước đó trong hộp trường Tài liệu chính sách, như thể hiện trong Hình 32. Nhấp vào Tạo chính sách .
Hình 32: Xem lại chính sách> Tạo chính sáchChính sách DynamoDB được tạo, như trong Hình 33.
Hình 33: Đã tạo DynamoDB chính sách IAMdms-vpc-role mà chính sách DynamoDB sẽ được thêm vào được thể hiện trong Hình 34.
Hình 34: Vai trò VPC của DMSNhấp vào dms-vpc-role và thêm chính sách DynamoDB bằng cách sử dụng Chính sách Đính kèm. Các chính sách AmazonDMSVPCManagementRole và DynamoDB phải được liệt kê là Chính sách được quản lý, như thể hiện trong Hình 35.
Hình 35: Chính sách quyền trong DMS VPC RoleKết luận
Trong bài viết này, chúng tôi đã giới thiệu cách sử dụng Dịch vụ di chuyển cơ sở dữ liệu AWS (DMS) để di chuyển MongoDB sang Amazon DynamoDB. Chúng tôi bắt đầu bằng cách tạo một bộ bản sao MongoDB làm nguồn dữ liệu để di chuyển và cũng tạo một bảng DynamoDB làm bảng đích. Trong bài viết tiếp theo, chúng ta sẽ thảo luận về việc tạo và chạy quá trình di chuyển DMS để di chuyển dữ liệu.