Estamos explorando la migración de una base de datos Oracle desde una instancia EC2 a un RDS de servicio administrado. En el primero de cuatro artículos, "Migración de una base de datos Oracle de AWS EC2 a AWS RDS, parte 1", creamos instancias de base de datos en EC2 y RDS. En el segundo artículo, "Migración de una base de datos Oracle de AWS EC2 a AWS RDS, parte 2", creamos un usuario de IAM para la migración de la base de datos y también creamos una tabla de base de datos para migrar. Solo en el segundo artículo, creamos una instancia de replicación y puntos finales de replicación. En el tercer artículo, "Migración de una base de datos Oracle de AWS EC2 a AWS RDS, parte 3", creamos una tarea de migración para migrar los cambios existentes. En este artículo de continuación, migraremos los cambios en curso a los datos. Este artículo tiene las siguientes secciones:
- Creación y ejecución de una tarea de replicación para migrar cambios en curso
- Agregar registro complementario
- Agregar una tabla a una instancia de Oracle Database en EC2
- Adición de datos de tabla
- Exploración de la tabla de la base de datos replicada
- Soltar y recargar datos
- Detener e iniciar una tarea
- Eliminación de bases de datos
- Conclusión
Creación y ejecución de una tarea de replicación para migrar cambios en curso
En las siguientes subsecciones, crearemos una tarea para replicar los cambios en curso. Para demostrar la replicación en curso, primero comenzaremos la tarea y luego crearemos una tabla y agregaremos datos. Suelte la tabla DVOHRA.WLSLOG , como se muestra en la Figura 1; crearemos la misma tabla para demostrar la replicación continua.
Figura 1: Tabla de eliminación DVOHRA.WLSLOG
Agregar registro complementario
Servicio de migración de bases de datos requiere que se habilite el registro complementario para habilitar la captura de datos de cambio (CDC) que se usa para replicar cambios continuos. El registro complementario es el proceso de almacenar información sobre qué filas de datos en una tabla han cambiado. El registro complementario agrega datos de columna complementarios o adicionales en los archivos de registro de rehacer cada vez que se realiza una actualización en una tabla. Las columnas que han cambiado se registran como datos complementarios en archivos de registro de rehacer junto con una clave de identificación, que podría ser la clave principal o el índice único. Si una tabla no tiene una clave principal o un índice único, todas las columnas escalares se registran en los archivos de registro de rehacer para identificar de forma única una fila de datos, lo que podría hacer que los archivos de registro de rehacer sean de gran tamaño. Oracle Database admite los siguientes tipos de registro complementario:
- Registro suplementario mínimo: Solo la cantidad mínima de datos que requiere LogMiner para los cambios de DML se registra en los archivos de registro de rehacer.
- Registro de clave de identificación de nivel de base de datos: Se admiten diferentes tipos de registro de clave de identificación a nivel de base de datos:TODO, CLAVE PRIMARIA, ÚNICA y CLAVE EXTERNA. Con el nivel ALL, todas las columnas (excepto LOB, Longs y ADT) se registran en archivos de registro de rehacer. Para PRIMARY KEY, solo las columnas de clave principal se almacenan en los archivos de registro de rehacer cuando se actualiza una fila que contiene una clave principal; no es necesario que se actualice una columna de clave principal. El tipo FOREIGN KEY almacena solo las claves externas de una fila en los archivos de registro de rehacer cuando se actualiza cualquiera de los archivos de registro rojos. El tipo ÚNICO almacena solo las columnas en una clave compuesta única o índice de mapa de bits cuando cualquier columna en la clave compuesta única o índice de mapa de bits ha cambiado.
- Registro complementario a nivel de tabla: Especifica en el nivel de la tabla qué columnas se almacenan en los archivos de registro de rehacer. El registro de claves de identificación a nivel de tabla admite los mismos niveles que el registro de claves de identificación a nivel de base de datos; TODO, CLAVE PRINCIPAL, ÚNICA y CLAVE EXTRANJERA. A nivel de tabla, también se admiten grupos de registros complementarios definidos por el usuario, que permiten al usuario definir qué columnas se registrarán de forma complementaria. Los grupos de registros complementarios definidos por el usuario pueden ser condicionales o incondicionales.
Para la replicación continua, debemos establecer un registro complementario mínimo y un registro complementario a nivel de tabla para TODAS las columnas.
En SQL*Plus, ejecute la siguiente declaración para establecer un registro complementario mínimo:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
La salida es la siguiente:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Database altered.
Para encontrar el estado del registro suplementario mínimo, ejecute la siguiente declaración. Y, si la salida tiene un valor de columna SUPLEMENTO como SÍ, se habilita el registro suplementario mínimo.
SQL> SELECT supplemental_log_data_min FROM v$database; SUPPLEME -------- YES
En la Figura 2 se muestra la configuración mínima de registro complementario y la salida de estado de verificación.
Figura 2: Configuración y verificación del registro suplementario mínimo
También estableceremos el registro de claves de identificación a nivel de tabla cuando agreguemos tablas y datos de tablas para demostrar la replicación continua después de que haya comenzado la tarea. Si agregamos tablas y datos de tablas antes de crear e iniciar una tarea, no podremos demostrar la replicación continua.
Para crear una tarea para la replicación continua, haga clic en Crear tarea , como se muestra en la Figura 3.
Figura 3: Tareas>Crear tarea
En Crear tarea asistente, especifique un nombre de tarea y una descripción, y seleccione la instancia de replicación, el punto final de origen y el punto final de destino, como se muestra en la Figura 4. Seleccione Tipo de migración como Migrar datos existentes y replicar cambios continuos .
Figura 4: Selección del tipo de migración para la replicación continua
Un mensaje que se muestra en la Figura 5 indica que es necesario habilitar el registro complementario para la replicación en curso. El mensaje no es para indicar que el registro complementario no se ha habilitado, sino solo como recordatorio. Ya hemos habilitado el registro complementario. Seleccione la casilla de verificación Iniciar tarea al crear .
Figura 5: Mensaje sobre el requisito de registro complementario para replicar cambios en curso
La Configuración de tareas son los mismos que para migrar solo los datos existentes (consulte la Figura 6).
Figura 6: Configuración de tareas
Para las asignaciones de tablas, se requiere al menos una regla de selección. Agregue una regla de selección para incluir todas las tablas en el DVOHRA tabla, como se muestra en la Figura 7.
Figura 7: Agregar una regla de selección
La regla de selección agregada se muestra en la Figura 8.
Figura 8: Regla de selección
Haz clic en Crear tarea para crear la tarea, como se muestra en la Figura 9.
Figura 9: Crear tarea
Se agrega una nueva tarea con el estado Creando , como se muestra en la Figura 10.
Figura 10: Tarea añadida con estado Creando
Cuando se han aplicado las reglas de selección y transformación para todos los datos existentes y se han migrado los datos, el estado de la tarea pasa a ser Carga completa, replicación en curso. (ver Figura 11).
Figura 11: Carga completa, replicación en curso
Las estadísticas de la tabla La pestaña no muestra ninguna tabla que haya migrado o replicado, como se muestra en la Figura 12.
Figura 12: Estadísticas de la tabla
Para explorar los registros de CloudWatch, haga clic en Registros y haga clic en el enlace, como se muestra en la Figura 13.
Figura 13: Registros
Se muestran los registros de CloudWatch, como se muestra en la Figura 14. La última entrada en los registros trata sobre el inicio de la replicación. La tarea en curso de replicación no finaliza después de cargar los datos existentes, si los hay, pero continúa ejecutándose.
Figura 14: Registros de CloudWatch
Agregar una tabla a una instancia de Oracle Database en EC2
A continuación, cree una tabla y agregue datos de tabla para demostrar la replicación continua. Ejecute las siguientes dos declaraciones juntas para que el registro complementario a nivel de tabla se establezca cuando se cree la tabla. Modifique el script para que el esquema sea diferente.
CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255) PRIMARY KEY, category VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255)); alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns;
El registro complementario a nivel de tabla se establece cuando se crea la tabla.
SQL> CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,category VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255)); alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns; Table created. SQL> Table altered.
El resultado se muestra en SQL*Plus en la Figura 15.
Figura 15: Creación de tabla y configuración de registro complementario
Hasta el momento, solo hemos creado la tabla y no hemos agregado ningún dato de tabla. El DDL de la tabla se migra, como lo indican las estadísticas de la tabla en la Figura 16.
Figura 16: DDL para tabla migrada
Adición de datos de tabla
A continuación, ejecute el siguiente script SQL para agregar datos a la tabla creada. Modifique el script para que el esquema sea diferente.
SQL> INSERT INTO DVOHRA.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 DVOHRA.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 DVOHRA.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 DVOHRA.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 DVOHRA.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 DVOHRA.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'); 1 row created. SQL> 1 row created. SQL> 1 row created. SQL> 1 row created. SQL> 1 row created. SQL> 1 row created.
Posteriormente, ejecute la instrucción Commit.
SQL> COMMIT; Commit complete.
Exploración de la tabla de la base de datos replicada
Las estadísticas de la tabla enumeran las inserciones como el número de filas de datos agregados, como se muestra en la Figura 17.
Figura 17: Lista de estadísticas de la tabla 6 inserciones
La tarea continúa ejecutándose después de replicar los cambios en curso. Agregue otra fila de datos.
SQL> INSERT INTO DVOHRA.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'); 1 row created. SQL> COMMIT; Commit complete. SQL>
Haz clic en Actualizar datos del servidor, como se muestra en la Figura 18.
Figura 18: Actualizar datos del servidor
El número total de inserciones en las estadísticas de la tabla se convierte en 7, como se muestra en la Figura 19.
Figura 19: Estadísticas de tabla con inserciones como 7
Soltar y recargar datos
Para soltar y volver a cargar los datos de la tabla, haga clic en Soltar y volver a cargar los datos de la tabla , como se muestra en la Figura 20.
Figura 20: Soltar y recargar datos de la tabla
Haz clic en Actualizar datos desde el servidor (ver Figura 21).
Figura 21: Actualizar datos del servidor
El icono y Estado columna de la tabla indica que la tabla se está recargando, como se muestra en la Figura 22.
Figura 22: La mesa se está recargando
Cuando se completa la recarga de la tabla, la columna Estado de la tabla se convierte en Tabla completada , como se muestra en la Figura 23. Después de recargar los datos de la tabla, las Filas de carga completa muestra un valor de 7 e Inserts es 0 porque una recarga no es una replicación en curso, sino una carga completa.
Figura 23: Recarga de mesa completada
Debido a que los datos de la tabla se descartan y vuelven a cargar y los datos de la tabla de origen no han cambiado, los registros de CloudWatch incluyen un mensaje "Algunos cambios de la base de datos de origen no tuvieron impacto cuando se aplicaron a la base de datos de destino", como se muestra en la Figura 24.
Figura 24: Algunos cambios de la base de datos de origen no tuvieron impacto cuando se aplicaron a la base de datos de destino
Cuando la recarga del DVOHRA.wlslog la tabla se ha completado, aparece el mensaje “Carga finalizada para la tabla DVOHRA.wlslog. 7 filas recibidas”, como se muestra en la Figura 25.
Figura 25: Mensaje de registro de CloudWatch para que la carga haya finalizado
Detener e iniciar una tarea
Una tarea del tipo que incluye la replicación continua no se detiene sola a menos que ocurra un error. Para detener la tarea, haga clic en Detener (ver Figura 26).
Figura 26: Detener una tarea
En Detener tarea cuadro de diálogo, haga clic en Detener , como se muestra en la Figura 27.
Figura 27: Diálogo de confirmación para detener una tarea
El estado de la tarea pasa a ser Deteniéndose , como se muestra en la Figura 28.
Figura 28: Detener una tarea
Cuando una tarea se detiene, el estado pasa a ser Detenido. , como se muestra en la Figura 29.
Figura 29: Tarea detenida
Para iniciar una tarea detenida, haga clic en Iniciar/Reanudar , como se muestra en la Figura 30.
Figura 30: Iniciar o reanudar una tarea
En Iniciar tarea cuadro de diálogo, haga clic en Inicio para iniciar la tarea desde el punto de parada (ver Figura 31). La otra opción es reiniciar la tarea.
Figura 31: Iniciar tarea después de detener
El estado de la tarea pasa a ser Iniciando , como se muestra en la Figura 32.
Figura 32: Comenzando una tarea
Cuando se completa la migración de los datos existentes, la tarea continúa ejecutándose con el Estado como Carga completada, replicación en curso , como se muestra en la Figura 33.
Figura 33: Carga completa, replicación en curso
Eliminación de bases de datos
La instancia de base de datos de RDS se puede eliminar con Acciones de instancia>Eliminar dominio. La base de datos de Oracle en la instancia EC2 se puede detener con Acciones>Estado de la instancia>Detener , como se muestra en la Figura 34.
Figura 34: Deteniendo la instancia EC2
Conclusión
En cuatro artículos, discutimos la migración de una base de datos Oracle de AWS EC2 a AWS RDS.