sql >> Base de Datos >  >> RDS >> Mysql

Migración de una base de datos Oracle a MySQL en AWS, Parte 1

AWS Database Migration Service (DMS) es un servicio para migrar bases de datos a AWS. La base de datos de destino debe ser una de las bases de datos admitidas en AWS, como las bases de datos alojadas del servicio de base de datos relacional, DynamoDB y RedShift. La base de datos de origen podría ser una base de datos en AWS o una base de datos local o una base de datos en alguna otra plataforma en la nube, como Oracle Cloud Platform. La base de datos de origen no tiene tiempo de inactividad durante la migración.

¿Por qué migrar bases de datos?

Es posible que sea necesario migrar una base de datos por varios motivos, como los siguientes:

  • Migración heterogénea a un motor de base de datos diferente. Por ejemplo, una base de datos Oracle a una base de datos MySQL. Es posible que se requiera una migración heterogénea para aprovechar funciones de otra base de datos, como un tipo de base de datos que no se admita en la base de datos de origen. Una base de datos comercial podría migrarse a una base de datos de código abierto. Una base de datos relacional podría beneficiarse si se migra a una base de datos NoSQL.
  • Migración homogénea al mismo tipo de motor de base de datos, pero en una plataforma diferente. La migración homogénea podría usarse para hacer una copia de seguridad de una base de datos. Una base de datos local podría beneficiarse si se migra a una plataforma en la nube.
  • Replicación continua de datos a diferentes bases de datos de destino con el fin de probar y desarrollar, y distribución regional de bases de datos.
  • Bases de datos de múltiples fuentes se puede migrar a una sola base de datos para la consolidación.

En dos artículos, analizaremos la migración de una base de datos Oracle a una base de datos MySQL con el Servicio de migración de bases de datos. Este artículo tiene las siguientes secciones:

  • Configuración del entorno
  • Creación de un usuario de IAM
  • Creación de una clave de cifrado
  • Creación de instancias de bases de datos de Oracle y MySQL en RDS
  • Preparación de bases de datos Oracle y MySQL para DMS
  • Conclusión

Configuración del entorno

El único requisito previo es una cuenta de AWS, que se puede crear en este enlace.

Crear un usuario de IAM

Un usuario debe obtener permisos y roles de IAM para acceder a DMS. Se requieren permisos de IAM adicionales para acceder a otros servicios de DMS; se requieren algunas acciones de otros servicios de AWS, como KMS, IAM, EC2 o CloudWatch. En esta sección, crearemos un usuario de IAM y adjuntaremos una política para el conjunto de permisos requerido. Seleccione el servicio AWS IAM y haga clic en Agregar usuario , como se muestra en la Figura 1.


Figura 1: Añadir usuario

En Añadir usuario , especifique un Nombre de usuario (dvohra) y seleccione tanto Tipo de acceso opciones, como se muestra en la Figura 2.


Figura 2: Configuración de nuevo usuario

Seleccione la Contraseña personalizada opción para la contraseña de la consola, especifique una contraseña personalizada y haga clic en Siguiente, como se muestra en la Figura 3.


Figura 3: Especificación de contraseña

En Permisos , seleccione Adjuntar políticas existentes directamente opción y haga clic en Crear política para crear una política para adjuntar, como se muestra en la Figura 4.


Figura 4: Añadir usuario>Crear política

En Crear política , seleccione Crear su propia política opción, como se muestra en la Figura 5.


Figura 5: Cree su propia póliza

En Política de revisión , especifique un Nombre de política (DMS) y copie la siguiente política en el Documento de política .

{
   "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": "*"
      }
   ]
}

Haga clic en Validar política y, si el mensaje La política es válida se genera (consulte la Figura 6), haga clic en Crear política , también mostrado en la Figura 6.


Figura 6: Crear política

En el Crear usuario asistente, seleccione el DMS recién creado política y haga clic en Siguiente, como se muestra en la Figura 7.


Figura 7: Selección de política para adjuntar al usuario

En Revisión, haga clic en Crear usuario , como se muestra en la Figura 8.


Figura 8: Revisar>Crear usuario

Se crea un nuevo usuario, como se muestra en la Figura 9.


Figura 9: Nuevo usuario creado

Se agrega un nuevo usuario a la Consola de IAM>Usuarios , como se muestra en la Figura 10.


Figura 10: Usuarios de gestión de identidades y accesos

Habiendo creado un nuevo usuario, necesitaríamos iniciar sesión como el nuevo usuario para crear la migración de DMS. El enlace de inicio de sesión de la consola para iniciar sesión como el nuevo usuario se obtiene de las Credenciales de seguridad para el nuevo usuario (consulte la Figura 11).


Figura 11: Enlace de inicio de sesión de la consola

Después de crear un usuario de IAM para DMS, cierre la sesión como usuario raíz, como se muestra en la Figura 12.


Figura 12: Cerrar sesión como usuario root

Abra la URL de inicio de sesión en un navegador, especifique el nombre de usuario y la contraseña y haga clic en Iniciar sesión, como se muestra en la Figura 13.


Figura 13: Iniciar sesión como el nuevo usuario de IAM

Crear una clave de cifrado

Asegúrese de haber iniciado sesión como el usuario de IAM creado en la sección anterior. Necesitamos crear una clave de cifrado que se usaría como clave maestra al crear una migración de DMS. El cifrado debe crearse mientras está conectado como el nuevo usuario de IAM y no como el usuario raíz. Seleccione Claves de cifrado. en la consola de IAM y haga clic en Crear clave , como se muestra en la Figura 14.


Figura 14: Crear clave

En Crear Alias ​​y Descripción , especifica un Alias (dms ) y haga clic en Siguiente paso, como se muestra en la Figura 15.


Figura 15: Especificación de alias

En Agregar etiquetas, haga clic en Siguiente paso porque no se requieren etiquetas. En Administradores clave, seleccione el usuario de IAM agregado como administrador (consulte la Figura 16). Seleccione Eliminación de clave como Permitir que los administradores de claves eliminen esta clave y haga clic en Siguiente paso.


Figura 16: Administradores clave

En Definir permisos de uso de clave, seleccione los usuarios y roles de IAM que pueden usar la clave de cifrado; seleccione el nuevo usuario de IAM y el dms-vpc-role , como se muestra en la Figura 17. Haga clic en Siguiente paso.


Figura 17: Definición de permisos de uso de claves

En Vista previa de la política de claves, haga clic en Finalizar, como se muestra en la Figura 18.


Figura 18: Vista previa de la política de claves

Se crea una nueva clave de cifrado, como se muestra en la Figura 19.


Figura 19: Clave de cifrado creada

Creación de instancias de base de datos Oracle y MySQL en RDS

Debido a que usaremos instancias de base de datos Oracle y MySQL RDS como origen y destino, respectivamente, para la migración de DMS, cree dos instancias RDS, una para la base de datos Oracle SE y la otra para MySQL. Al crear las instancias de RDS en Configurar ajustes avanzados, seleccione Red y seguridad para crear una nueva VPC, cree un nuevo grupo de subred de base de datos y cree un nuevo grupo de seguridad, como se muestra en la Figura 20 para Oracle DB. Si la cuenta de AWS tiene un límite en la cantidad máxima de VPC, elimine algunas VPC no utilizadas antes de crear las instancias de RDS.


Figura 20: Configuración de ajustes avanzados

Las instancias de RDS para Oracle y MySQL se muestran en la Figura 21.


Figura 21: Instancias de base de datos de RDS

Los grupos de seguridad creados automáticamente no tienen las reglas de entrada/salida requeridas, que deben modificarse. Haga clic en el enlace para grupos de seguridad en la consola RDS, como se muestra para la base de datos MySQL en la Figura 22.


Figura 22: Grupos de seguridad

Haga clic en Editar para el grupo de seguridad Entrante, como se muestra en la Figura 23.


Figura 23: Grupo de seguridad>Editar

En Editar reglas de entrada, seleccione Tipo como Todo el tráfico, Protocolo como Todo, Intervalo de puertos como 0-65535, Origen como Cualquier lugar y haga clic en Guardar, como se muestra en la Figura 24.


Figura 24: Editar reglas de entrada

Las reglas de entrada modificadas se muestran en la Figura 25.


Figura 25: Reglas de entrada modificadas

Las reglas de salida permiten todo el tráfico de forma predeterminada (consulte la Figura 26).


Figura 26: Reglas de salida

El grupo de seguridad predeterminado creado para Oracle DB en RDS tampoco permite todo el tráfico, como se muestra en la Figura 27.


Figura 27: Grupo de seguridad para Oracle DB en RDS

Modifique el grupo de seguridad de entrada para Oracle DB en RDS con el botón Editar, similar a la modificación de las reglas de entrada del grupo de seguridad de la base de datos MySQL, para permitir todo el tráfico, como se muestra en la Figura 28.


Figura 28: Grupo de seguridad para Oracle DB en RDS

Tome nota del Nombre de usuario maestro y la Contraseña maestra configurados para cada una de las instancias de la base de datos mientras crea las instancias, como se muestra para la base de datos MySQL en la Figura 29. Además, al crear la base de datos MySQL en RDS, ninguno de los ajustes de configuración (Nombre de la base de datos , identificador de instancia de base de datos, nombre de usuario maestro, contraseña maestra) deben ser palabras reservadas de MySQL, como "MYSQL".


Figura 29: Nombre de usuario maestro y contraseña maestra

Preparación de bases de datos Oracle y MySQL para DMS

Para usar Oracle DB y MySQL DB en RDS como origen y destino de DMS, respectivamente, debemos configurar algunos ajustes en las instancias de base de datos. Conéctese a las instancias de base de datos de Oracle y MySQL en un shell de línea de comandos para configurar los ajustes. Para conectarnos a las instancias de base de datos de RDS en un shell de línea de comandos, necesitamos obtener el Endpoint para las instancias de RDS. El punto final para Oracle DB en RDS se muestra en la consola de RDS en la Figura 30.


Figura 30: Punto final para Oracle DB en RDS

Conéctese a la instancia de Oracle DB con el siguiente sqlplus comando, en el que el HOST, SID,PORT podría ser diferente para diferentes usuarios; el valor HOST se obtiene eliminando el sufijo del puerto del punto final.

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

La interfaz de línea de comandos de SQL*Plus se conecta a Oracle DB en RDS (consulte la Figura 31).


Figura 31: SQL*Plus CLI conectado a Oracle DB

Habilite el registro complementario a nivel de base de datos para DMS.

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

El procedimiento PL/SQL se completa, como se muestra en la Figura 32.


Figura 32: Habilitación del registro complementario a nivel de base de datos

Además, habilite CLAVE PRINCIPAL registro a nivel de base de datos.

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

La CLAVE PRINCIPAL el registro se habilita, como se muestra en la Figura 33.


Figura 33: Habilitación del registro PRIMARY KEY

Configure el archivado de los registros de rehacer para la instancia de Oracle DB en RDS.

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

El archivado se configura, como se muestra en la Figura 34.


Figura 34: Configuración de archivado

Al migrar una base de datos, las tablas y los datos de la tabla también se migran. Crear una tabla de base de datos wlslog en la base de datos de 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');

Para agregar registro complementario para una tabla sin una CLAVE PRIMARIA registro, o si CLAVE PRINCIPAL el registro a nivel de la base de datos no está configurado, modifique la tabla para agregar un registro complementario.

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

El registro complementario también se puede habilitar en CREAR TABLA declaración.

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);

El resultado de los dos comandos anteriores se muestra en la Figura 35.


Figura 35: Adición de registro complementario a una tabla ya creada o a una tabla nueva

A continuación, prepare la instancia de base de datos MySQL en RDS para la migración de DMS. Para conectarse a la base de datos MySQL, obtenga el Endpoint (vea la Figura 36.


Figura 36: Punto final para MySQL DB en RDS

El host se obtiene eliminando el sufijo del puerto del Dispositivo Periférico. Utilizando la CLI de MySQL, conéctese a MySQL desde una línea de comandos.

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

MySQL CLI se conecta a una instancia de base de datos MySQL en RDS, como se muestra en la Figura 37.


Figura 37: Conexión a MySQL desde la CLI de MySQL

A continuación, cree y otorgue privilegios de lectura y escritura para la base de datos MySQL al usuario de 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>'@'%';

Sustituyendo la cuenta de usuario por dvohra, el resultado de algunos de los comandos se muestra en la Figura 38.


Figura 38: Otorgar acceso a la base de datos MySQL al usuario de DMS

Conclusión

En este artículo, presentamos la migración de una base de datos Oracle en RDS a una base de datos MySQL en RDS mediante el servicio de migración de bases de datos de AWS. En este artículo, analizamos la configuración de las bases de datos de origen y de destino. En un artículo posterior, crearemos y ejecutaremos una migración.