Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Di chuyển Cơ sở dữ liệu Oracle sang MySQL trên AWS, Phần 1

Dịch vụ di chuyển cơ sở dữ liệu AWS (DMS) là một dịch vụ di chuyển cơ sở dữ liệu sang AWS. Cơ sở dữ liệu đích phải là một trong những cơ sở dữ liệu được hỗ trợ trên AWS, chẳng hạn như cơ sở dữ liệu được lưu trữ trên Dịch vụ cơ sở dữ liệu quan hệ, DynamoDB và RedShift. Cơ sở dữ liệu nguồn có thể là cơ sở dữ liệu trên AWS hoặc cơ sở dữ liệu cục bộ hoặc cơ sở dữ liệu trên một số nền tảng Đám mây khác, chẳng hạn như Nền tảng đám mây Oracle. Cơ sở dữ liệu nguồn không có thời gian chết trong quá trình di chuyển.

Tại sao phải di chuyển cơ sở dữ liệu?

Cơ sở dữ liệu có thể cần được di chuyển vì một số lý do, chẳng hạn như sau:

  • Di chuyển không đồng nhất sang một công cụ cơ sở dữ liệu khác. Ví dụ, một cơ sở dữ liệu Oracle đến một cơ sở dữ liệu MySQL. Có thể yêu cầu di chuyển không đồng nhất để tận dụng các tính năng từ cơ sở dữ liệu khác, chẳng hạn như loại cơ sở dữ liệu không được hỗ trợ trên cơ sở dữ liệu nguồn. Cơ sở dữ liệu thương mại có thể được chuyển sang cơ sở dữ liệu nguồn mở. Cơ sở dữ liệu quan hệ có thể được hưởng lợi khi được chuyển sang cơ sở dữ liệu NoSQL.
  • Di chuyển đồng nhất vào cùng một loại công cụ cơ sở dữ liệu, nhưng trên một nền tảng khác. Di chuyển đồng nhất có thể được sử dụng để tạo bản sao lưu của cơ sở dữ liệu. Cơ sở dữ liệu cục bộ có thể được hưởng lợi khi được chuyển sang nền tảng Đám mây.
  • Sao chép dữ liệu liên tục tới các cơ sở dữ liệu mục tiêu khác nhau nhằm mục đích thử nghiệm và phát triển cũng như phân phối cơ sở dữ liệu theo khu vực.
  • Nhiều cơ sở dữ liệu nguồn có thể được chuyển sang một cơ sở dữ liệu duy nhất để hợp nhất.

Trong hai bài báo, chúng ta sẽ thảo luận về việc di chuyển Cơ sở dữ liệu Oracle sang Cơ sở dữ liệu MySQL với Dịch vụ Di chuyển Cơ sở dữ liệu. 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
  • Tạo khóa mã hóa
  • Tạo các phiên bản cơ sở dữ liệu Oracle và MySQL trên RDS
  • Chuẩn bị Oracle và MySQL DBs cho DMS
  • 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 liên kết này.

Tạo người dùng IAM

Người dùng cần có được các quyền và vai trò IAM để truy cập DMS. Các quyền IAM bổ sung được yêu cầu để truy cập các dịch vụ khác từ DMS; một số hành động được yêu cầu từ các dịch vụ AWS khác như KMS, IAM, EC2 hoặc CloudWatch. Trong phần này, chúng tôi sẽ tạo người dùng IAM và đính kèm chính sách cho tập hợp các quyền cần thiết. Chọn dịch vụ AWS IAM và nhấp vào Thêm người dùng , như trong Hình 1.


Hình 1: Thêm người dùng

Trong Thêm người dùng , chỉ định một Tên người dùng (dvohra) và chọn cả Loại truy cập các tùy chọn, như trong Hình 2.


Hình 2: Định cấu hình người dùng mới

Chọn Mật khẩu tùy chỉnh tùy chọn cho Mật khẩu bảng điều khiển, chỉ định mật khẩu tùy chỉnh và nhấp vào Tiếp theo, như trong Hình 3.


Hình 3: Chỉ định mật khẩu

Trong Quyền , chọn Đính kèm trực tiếp các chính sách hiện có và nhấp vào Tạo chính sách để tạo một chính sách để đính kèm, như trong Hình 4.


Hình 4: Thêm người dùng> 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 tùy chọn, như trong Hình 5.


Hình 5: 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) và sao chép chính sách sau vào Tài liệu chính sách .

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Action": "dms:*",
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "kms:ListAliases",
            "kms:DescribeKey"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "iam:GetRole",
            "iam:PassRole",
            "iam:CreateRole",
            "iam:AttachRolePolicy"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "ec2:DescribeVpcs",
            "ec2:DescribeInternetGateways",
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeSubnets",
            "ec2:DescribeSecurityGroups",
            "ec2:ModifyNetworkInterfaceAttribute",
            "ec2:CreateNetworkInterface",
            "ec2:DeleteNetworkInterface"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "cloudwatch:Get*",
            "cloudwatch:List*"
         ],
         "Resource": "*"
      },
      {
         "Effect": "Allow",
         "Action": [
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams",
            "logs:FilterLogEvents",
            "logs:GetLogEvents"
         ],
         "Resource": "*"
      }
   ]
}

Nhấp vào Xác thực chính sách và, nếu thông báo Chính sách hợp lệ được tạo (xem Hình 6), nhấp vào Tạo chính sách , cũng được thể hiện trong Hình 6.


Hình 6: Tạo chính sách

Trong phần Tạo người dùng trình hướng dẫn, chọn DMS mới được tạo và nhấp vào Tiếp theo, như trong Hình 7.


Hình 7: Chọn Chính sách để đính kèm với Người dùng

Trong Xem lại, nhấp vào Tạo người dùng , như trong Hình 8.


Hình 8: Xem lại> Tạo người dùng

Một người dùng mới sẽ được tạo, như trong Hình 9.


Hình 9: Người dùng mới được tạo

Một người dùng mới được thêm vào Bảng điều khiển IAM> Người dùng , như trong Hình 10.


Hình 10: Người dùng IAM

Sau khi tạo người dùng mới, chúng tôi cần đăng nhập với tư cách người dùng mới để tạo quá trình di chuyển DMS. Liên kết đăng nhập bảng điều khiển để đăng nhập khi người dùng mới được lấy từ Thông tin đăng nhập bảo mật cho người dùng mới (xem Hình 11).


Hình 11: Liên kết đăng nhập bảng điều khiển

Sau khi tạo người dùng IAM cho DMS, hãy đăng xuất với tư cách người dùng root, như trong Hình 12.


Hình 12: Đăng xuất với tư cách người dùng gốc

Mở URL đăng nhập trong trình duyệt, chỉ định Tên người dùng và mật khẩu, rồi nhấp vào Đăng nhập, như thể hiện trong Hình 13.


Hình 13: Đăng nhập với tư cách Người dùng IAM mới

Tạo khóa mã hóa

Đảm bảo rằng bạn đã đăng nhập với tư cách là người dùng IAM đã tạo trong phần trước. Chúng tôi cần tạo một khóa mã hóa sẽ được sử dụng làm khóa Chính khi tạo quá trình di chuyển DMS. Mã hóa phải được tạo khi đăng nhập với tư cách người dùng IAM mới chứ không phải người dùng root. Chọn Khóa mã hóa trong bảng điều khiển IAM và nhấp vào Tạo khóa , như trong Hình 14.


Hình 14: Tạo khóa

Trong Tạo bí danh và mô tả , chỉ định một Bí danh ( dms ) và nhấp vào Bước Tiếp theo, như trong Hình 15.


Hình 15: Chỉ định Bí danh

Trong Thêm thẻ, hãy nhấp vào Bước tiếp theo vì thẻ không bắt buộc. Trong Quản trị viên chính, chọn người dùng IAM được thêm làm quản trị viên (xem Hình 16). Chọn Xóa khóa làm Cho phép quản trị viên khóa xóa khóa này và nhấp vào Bước tiếp theo.


Hình 16: Quản trị viên chính

Trong Xác định quyền sử dụng khóa, hãy chọn người dùng và vai trò IAM có thể sử dụng khóa mã hóa; chọn người dùng IAM mới và dms-vpc-role , như trong Hình 17. Nhấp vào Bước Tiếp theo.


Hình 17: Xác định quyền sử dụng khóa

Trong Chính sách khóa xem trước, nhấp vào Kết thúc, như được hiển thị trong Hình 18.


Hình 18: Xem trước Chính sách chính

Một khóa mã hóa mới được tạo, như trong Hình 19.


Hình 19: Khóa mã hóa đã được tạo

Tạo các phiên bản cơ sở dữ liệu Oracle và MySQL trên RDS

Bởi vì chúng tôi sẽ sử dụng các phiên bản Oracle và MySQL RDS DB tương ứng làm nguồn và đích cho quá trình di chuyển DMS, hãy tạo hai phiên bản RDS, một cho cơ sở dữ liệu Oracle SE và một cho MySQL. Khi tạo các phiên bản RDS trong Cấu hình Cài đặt Nâng cao, hãy chọn Mạng &Bảo mật để tạo VPC mới, tạo Nhóm mạng con DB mới và tạo nhóm bảo mật mới, như thể hiện trong Hình 20 cho Oracle DB. Nếu tài khoản AWS có giới hạn về số lượng VPC tối đa, hãy xóa một số VPC không sử dụng trước khi tạo các phiên bản RDS.


Hình 20: Định cấu hình cài đặt nâng cao

Các phiên bản RDS cho Oracle và MySQL được hiển thị trong Hình 21.


Hình 21: Phiên bản DB RDS

Các nhóm bảo mật được tạo tự động không có các quy tắc Inbound / Outbound bắt buộc, cần được sửa đổi. Nhấp vào liên kết cho Nhóm bảo mật trong Bảng điều khiển RDS, như được hiển thị cho Cơ sở dữ liệu MySQL trong Hình 22.


Hình 22: Nhóm bảo mật

Nhấp vào Chỉnh sửa cho nhóm bảo mật Inbound, như trong Hình 23.


Hình 23: Nhóm bảo mật> Chỉnh sửa

Trong Chỉnh sửa quy tắc gửi đến, chọn Loại là Tất cả lưu lượng, Giao thức là Tất cả, Phạm vi cổng là 0-65535, Nguồn là Bất kỳ nơi nào và nhấp vào Lưu, như thể hiện trong Hình 24.


Hình 24: Chỉnh sửa quy tắc đến

Các quy tắc Inbound được sửa đổi được thể hiện trong Hình 25.


Hình 25: Quy tắc đến được sửa đổi

Theo mặc định, các quy tắc Outbound cho phép tất cả lưu lượng truy cập (xem Hình 26).


Hình 26: Quy tắc đi

Nhóm bảo mật mặc định được tạo cho Oracle DB trên RDS cũng không cho phép tất cả lưu lượng, như trong Hình 27.


Hình 27: Nhóm bảo mật cho Oracle DB trên RDS

Sửa đổi nhóm bảo mật Inbound cho Oracle DB trên RDS bằng nút Edit, tương tự như sửa đổi các quy tắc Inbound của nhóm bảo mật cơ sở dữ liệu MySQL, để cho phép tất cả lưu lượng, như trong Hình 28.


Hình 28: Nhóm bảo mật cho Oracle DB trên RDS

Ghi lại Tên người dùng chính và Mật khẩu chính được định cấu hình cho mỗi cá thể DB trong khi tạo các phiên bản, như được hiển thị cho MySQL DB trong Hình 29. Ngoài ra, khi tạo MySQL DB trên RDS, không có cài đặt cấu hình nào (Tên cơ sở dữ liệu , Mã định danh phiên bản DB, Tên người dùng chính, Mật khẩu chính) phải là các từ dành riêng cho MySQL, chẳng hạn như “MYSQL”.


Hình 29: Tên người dùng chính và mật khẩu chính

Chuẩn bị Oracle và MySQL DBs cho DMS

Để sử dụng Oracle DB và MySQL DB trên RDS làm nguồn và đích DMS tương ứng, chúng ta cần định cấu hình một số cài đặt trên các phiên bản DB. Kết nối với các phiên bản Oracle và MySQL DB trong một trình bao dòng lệnh để định cấu hình cài đặt. Để kết nối với các cá thể RDS DB trong một trình bao dòng lệnh, chúng ta cần lấy Điểm cuối cho các cá thể RDS. Điểm cuối cho Oracle DB trên RDS được hiển thị trong Bảng điều khiển RDS trong Hình 30.


Hình 30: Điểm cuối cho Oracle DB trên RDS

Kết nối với phiên bản Oracle DB bằng sqlplus sau lệnh, trong đó HOST, SID, PORT có thể khác nhau đối với những người dùng khác nhau; giá trị HOST nhận được bằng cách xóa hậu tố cổng khỏi Điểm cuối.

sqlplus [email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
   (HOST=orcl.crbmlbxmp8qi.us-east-1.rds.amazonaws.com)(PORT=1521))
   (CONNECT_DATA=(SID=ORCL)))

Giao diện dòng lệnh SQL * Plus được kết nối với Oracle DB trên RDS (xem Hình 31).


Hình 31: SQL * Plus CLI được kết nối với Oracle DB

Bật ghi nhật ký bổ sung ở mức cơ sở dữ liệu cho DMS.

exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');

Thủ tục PL / SQL được hoàn thành, như trong Hình 32.


Hình 32: Bật tính năng ghi nhật ký bổ sung ở cấp độ cơ sở dữ liệu

Ngoài ra, hãy bật PRIMARY KEY ghi nhật ký ở cấp cơ sở dữ liệu.

exec rdsadmin.rdsadmin_util.alter_supplemental_logging
   ('ADD','PRIMARY KEY');

CHÌA KHÓA CHÍNH ghi nhật ký được kích hoạt, như trong Hình 33.


Hình 33: Bật ghi nhật ký KHÓA CHÍNH

Định cấu hình lưu trữ nhật ký làm lại cho phiên bản Oracle DB trên RDS.

exec rdsadmin.rdsadmin_util.set_configuration
   ('archivelog retention hours',24);

Lưu trữ được cấu hình, như trong Hình 34.


Hình 34: Định cấu hình lưu trữ

Khi di chuyển cơ sở dữ liệu, các bảng và dữ liệu bảng cũng được di chuyển. Tạo bảng cơ sở dữ liệu wlslog trong cơ sở dữ liệu Oracle.

CREATE TABLE wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,category
   VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),
   code VARCHAR2(255),msg VARCHAR2(255));
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:16-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to STANDBY');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:17-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to STARTING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:18-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to ADMIN');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:19-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to RESUMING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:20-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000361','Started WebLogic AdminServer');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:21-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000365','Server state changed to RUNNING');
INSERT INTO wlslog(time_stamp,category,type,servername,code,msg)
   VALUES('Apr-8-2014-7:06:22-PM-PDT','Notice','WebLogicServer',
   'AdminServer','BEA-000360','Server started in RUNNING mode');

Để thêm ghi nhật ký bổ sung cho bảng không có KHÓA CHÍNH ghi nhật ký hoặc nếu CHÌA KHÓA CHÍNH ghi nhật ký ở cấp cơ sở dữ liệu chưa được đặt, hãy thay đổi bảng để thêm ghi nhật ký bổ sung.

alter table wlslog add supplemental log data (ALL) columns;

Ghi nhật ký bổ sung cũng có thể được kích hoạt trong TẠO BẢNG tuyên bố.

CREATE TABLE wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,
   category VARCHAR2(255),type VARCHAR2(255),
   servername VARCHAR2(255), code VARCHAR2(255),msg VARCHAR2(255),
   supplemental log data(ALL) columns);

Kết quả từ hai lệnh trước được hiển thị trong Hình 35.


Hình 35: Thêm ghi nhật ký bổ sung vào bảng đã được tạo hoặc vào một bảng mới

Tiếp theo, chuẩn bị phiên bản MySQL DB trên RDS để di chuyển DMS. Để kết nối với MySQL DB, hãy lấy Điểm cuối (xem Hình 36.


Hình 36: Điểm cuối cho MySQL DB trên RDS

Máy chủ có được bằng cách xóa hậu tố cổng khỏi Điểm cuối. Sử dụng MySQL CLI, kết nối với MySQL từ một dòng lệnh.

mysql -h mysqldb.crbmlbxmp8qi.us-east-1.rds.amazonaws.com -P 3306
   -u dvohra -p

MySQL CLI được kết nối với một phiên bản MySQL DB trên RDS, như thể hiện trong Hình 37.


Hình 37: Kết nối với MySQL từ MySQL CLI

Tiếp theo, tạo và cấp đặc quyền đọc và ghi cho cơ sở dữ liệu MySQL cho người dùng DMS (dvohra).

CREATE USER '<user acct>'@'%' IDENTIFIED BY
   <user password>';??? Remove as user dvohra already exists
GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE,
   SELECT ON myschema.* TO '<user acct>'@'%';
GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';

Thay thế tài khoản người dùng là dvohra, kết quả từ một số lệnh được hiển thị trong Hình 38.


Hình 38: Cấp quyền truy cập cơ sở dữ liệu MySQL cho người dùng DMS

Kết luận

Trong bài viết này, chúng tôi đã giới thiệu cách di chuyển Cơ sở dữ liệu Oracle trên RDS sang cơ sở dữ liệu MySQL trên RDS bằng dịch vụ Di chuyển Cơ sở dữ liệu AWS. Trong bài viết này, chúng ta đã thảo luận về việc thiết lập cơ sở dữ liệu nguồn và cơ sở dữ liệu đích. Trong bài viết tiếp theo, chúng tôi sẽ tạo và chạy quá trình di chuyển.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về SEC_TO_TIME () - MySQL

  2. Cách khắc phục:Không tìm thấy trình điều khiển phù hợp cho lỗi jdbc:mysql:// localhost / dbname khi sử dụng pool?

  3. Sử dụng đối chiếu nhị phân có những tác dụng gì?

  4. Kết xuất MySQL theo truy vấn

  5. MySQL chọn một cột DISTINCT, với các cột khác tương ứng