sql >> Base de Datos >  >> RDS >> MariaDB

Migración de Oracle Database a MariaDB:lo que debe saber

Gartner predice que para 2022, el 50 % de las bases de datos comerciales existentes se habrán convertido en bases de datos de código abierto. Aún más, el 70 % de las nuevas aplicaciones internas se desarrollarán en una plataforma de base de datos de código abierto (State of the Open-Source DBMS Market, 2018).

Estos son números altos considerando la madurez, la estabilidad y la criticidad del popular software de base de datos patentado. Lo mismo se puede observar en el ranking de bases de datos principales, donde la mayoría de las diez principales bases de datos son de código abierto.

https://db-engines.com/en/ranking

¿Qué está empujando a las empresas a hacer tales movimientos?

Puede haber muchas razones para migrar sistemas de bases de datos. Para algunos, la razón principal será el costo de la licencia y la propiedad; pero es realmente sólo sobre el costo? ¿Y es el código abierto lo suficientemente estable como para mover los sistemas de producción críticos a ese nuevo mundo de código abierto?

Las bases de datos de código abierto, especialmente las nuevas que se incorporan a una organización, a menudo provienen de un desarrollador en un equipo de proyecto. Se elige porque es gratuito (no afecta el gasto externo directo del proyecto) y cumple con los requisitos técnicos del momento.

Pero el aspecto gratuito en realidad no viene simplemente sin costo, ya que debe considerar muchos factores, incluida la migración y el costo de las horas de mano de obra. Cuanto más fluida sea la migración, menos tiempo y dinero se gastará en el proyecto.

Las migraciones de bases de datos pueden ser un desafío, especialmente para migraciones de bases de datos propietarias heterogéneas, como Oracle a PostgreSQL, Oracle a Percona o MySQL. La estructura del esquema complejo, los tipos de datos y el código de la base de datos como PL/SQL pueden ser bastante diferentes de los de las bases de datos de destino,
que requieren un paso de transformación del esquema y el código antes de que comience la migración de datos.

En el artículo reciente de mi colega Paul Namuag, examinó cómo migrar Oracle a Percona.

Esta vez vamos a echar un vistazo a lo que debe saber antes de migrar de Oracle a MariaDB.

MariaDB promete funciones empresariales y funciones de migración que pueden ayudar a migrar las bases de datos de Oracle al mundo de código abierto.

En esta publicación de blog, cubriremos lo siguiente:

  • ¿Por qué migrar?
  • Diferencias del motor de almacenamiento
  • Consideraciones sobre la conectividad de la base de datos
  • Simplicidad de instalación y administración
  • Diferencias de seguridad
  • Replicación y alta disponibilidad
  • PL/SQL y código de base de datos
  • Clustering y escalado
  • Copia de seguridad y recuperación
  • Compatibilidad con la nube
  • Consideraciones varias

¿Por qué migrar desde Oracle?

La mayoría de las empresas ejecutarán Oracle o SQL Server, o una combinación de ambos, con pequeños bolsillos de bases de datos de código abierto aisladas que funcionan de forma independiente. Las pequeñas y medianas empresas tenderían a implementar principalmente bases de datos de código abierto, especialmente para nuevas aplicaciones. Pero esto está cambiando y, a menudo, el código abierto es la opción principal incluso para las grandes organizaciones.

Una comparación rápida de estos dos sistemas de bases de datos es la siguiente:

  • Solo Oracle Express Edition es gratuito, pero tiene funciones muy limitadas en comparación con MariaDB. Para funciones amplias, se debe comprar Oracle Standard Edition o Oracle Enterprise Edition.
  • Por otro lado, la comunidad de MariaDB y MySQL estaba trabajando arduamente para minimizar la posible brecha de características. El cumplimiento de la seguridad, las copias de seguridad activas y muchas otras funciones empresariales ahora están disponibles en MariaDB.

Hay cosas que siempre fueron más flexibles en MariaDB/MySQL que en configuraciones masivas de Oracle. Uno de ellos es la facilidad de replicación y la escalabilidad horizontal del clúster.

Diferencias del motor de almacenamiento

Primero, comencemos con algunos conceptos básicos. Todavía puede escuchar muchas leyendas y mitos sobre las limitaciones de MySQL o MariaDB, que en su mayoría se refieren a los tiempos oscuros cuando el principal motor de almacenamiento era MyISAM.

MyISAM fue el motor de almacenamiento predeterminado de MySQL 3.23 hasta que fue reemplazado por InnoDB en MariaDB 5.5. Es un motor liviano, no transaccional, con un gran rendimiento, pero no ofrece bloqueo a nivel de fila ni la confiabilidad de InnoDB.

Con InnoDB (motor de almacenamiento predeterminado), MariaDB ofrece los dos bloqueos de nivel de fila estándar, que son bloqueos compartidos (S) y bloqueos exclusivos (X). Se obtiene un bloqueo compartido para leer una fila y permite que otras transacciones lean la fila bloqueada. Diferentes transacciones también pueden adquirir sus propios bloqueos compartidos.
El bloqueo particular se obtiene para escribir en una fila y evita que transacciones adicionales bloqueen la misma fila.

InnoDB definitivamente ha cubierto la mayor brecha de funciones transaccionales entre estos dos sistemas.

Debido a la naturaleza conectable de MariaDB, ofrece incluso más motores de almacenamiento para que pueda ajustarlo mejor a una carga de trabajo específica. Es decir. cuando el espacio es importante, puede optar por TokuDB, que ofrece una gran relación de compresión, Spider optimizado para particiones y fragmentación de datos, ColumnStore para escalado de big data.

Sin embargo, para aquellos que migren desde Oracle, mi recomendación sería ir primero con el motor de almacenamiento InnoDB.

Consideraciones de conectividad

MariaDB comparte con Oracle un buen soporte para el acceso a la base de datos, incluidos los controladores ODBC y JDBC, así como bibliotecas de acceso para Perl, Python y PHP. MySQL y Oracle admiten objetos grandes binarios, tipos de datos de caracteres, numéricos y de fecha. Por lo tanto, no debería tener problemas para encontrar el conector adecuado para sus servicios de aplicaciones.

MariaDB no tiene el proceso de escucha dedicado para mantener las conexiones de la base de datos ni la dirección SCAN para la base de datos en clúster como sabemos de Oracle. Tampoco encontrará servicios de bases de datos flexibles. En su lugar, deberá configurar manualmente entre el socket de Unix (una forma local y más segura de conectar DB - aplicación en el mismo servidor), conexiones remotas (de forma predeterminada, MariaDB no permite inicios de sesión remotos) y también tubería y memoria disponible en Windows solo sistemas. Para el clúster, la dirección SCAN debe reemplazarse por el balanceador de carga. MariaDB recomienda usar su otro producto MaxScale, pero también puede encontrar otros como ProxySQL o HAproxy que funcionarán con MariaDB, con algunas limitaciones. Si bien el uso de balanceadores de carga externos para MariaDB puede ser difícil, es posible que encuentre funciones excelentes que, a modo de comparación, no están disponibles en la base de datos de Oracle.

Un balanceador de carga también sería una recomendación para aquellos que buscan Oracle Transparent Application Failover (TAF), Oracle Firewall DB o algunas de las funciones de seguridad avanzadas como Oracle Connection Manager. Puede encontrar más información sobre cómo elegir el equilibrador de carga adecuado en el siguiente documento técnico.

Si bien estas tecnologías son gratuitas y se pueden implementar manualmente mediante instalaciones basadas en scripts, los sistemas como ClusterControl automatizan el proceso con su interfaz de apuntar y hacer clic. ClusterControl también le permite implementar tecnologías de almacenamiento en caché.

Simplicidad de instalación y administración

La última versión disponible de Oracle DB agregó una característica de instalación largamente esperada:Oracle 18c ahora se puede instalar en Oracle Linux usando un RPM. La instalación dedicada basada en Java siempre fue un problema para aquellos que querían escribir automatización para sus libros de cocina o fragmentos de código de Puppet. Podría optar por una instalación silenciosa predefinida, pero el archivo cambiaba de vez en cuando y aún así, tenía que lidiar con la dependencia. La instalación basada en RPM definitivamente fue un buen paso.

Entonces, ¿cómo funciona en MariaDB?

Para aquellos que se están mudando del mundo de Oracle, siempre es una agradable sorpresa ver qué tan rápido puede implementar instancias, crear nuevas bases de datos o incluso configurar flujos de replicación complejos. El proceso de instalación y configuración es probablemente la parte más sencilla del proceso de migración. Aunque elegir la configuración correcta requiere tiempo y conocimiento.

Oracle proporciona un conjunto de distribuciones binarias de MySQL. Estos incluyen distribuciones binarias genéricas en forma de archivos tar comprimidos (archivos con una extensión .tar.gz) para varias plataformas y binarios en paquetes específicos de plataforma. En la plataforma Windows, puede encontrar un asistente de instalación estándar a través de una GUI.

Básicamente, no se necesita el asistente de configuración de la base de datos de Oracle (DBCA), ya que podrá crear una base de datos con un comando de una sola línea.

CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

También puede tener una base de datos con diferentes intercalaciones de bases de datos y conjuntos de caracteres en la misma instancia de MariaDB.

La configuración de la replicación es solo para habilitar el registro binario en un maestro (similar al registro de archivo en Oracle) y ejecutar el siguiente comando en el esclavo para adjuntarlo al maestro.

CHANGE MASTER TO
MASTER_HOST = host,
MASTER_PORT = port,
MASTER_USER = replication_user,
MASTER_PASSWORD = password,
MASTER_AUTO_POSITION = 1;

Seguridad y Cumplimiento

Oracle proporciona seguridad de base de datos mejorada.

La autenticación de usuario se realiza en Oracle mediante la especificación de funciones globales además de la ubicación, el nombre de usuario y la contraseña. En Oracle, la autenticación de usuario se realiza mediante diferentes métodos de autenticación, incluida la autenticación de base de datos, la autenticación externa y la autenticación de proxy.

Durante mucho tiempo, los roles no estaban disponibles en MariaDB o MySQL. MariaDB agregó funciones con la versión 10.2 después de que aparecieran en MySQL 8.0.

Los roles, una opción que se usa mucho en las configuraciones comunes de Oracle DB, se pueden transformar fácilmente en MariaDB, por lo que no tiene que perder tiempo en ajustes de permisos de un solo usuario.

Crear, modificar usuario, contraseñas:todo funciona de manera similar a Oracle DB.

Para lograr los estándares de cumplimiento de seguridad empresarial, MariaDB ofrece funciones integradas como:

  • Complemento de auditoría en
  • Cifrado de datos en reposo
  • Certificados, conexión TSS
  • Complemento PAM

Ofertas de complementos de auditoría una especie de auditoría detallada (FGA) o AUDI SQL disponible en Oracle. No ofrece el mismo conjunto de características pero, por lo general, es lo suficientemente bueno para satisfacer las auditorías de cumplimiento de seguridad.

Cifrado de datos en reposo El cifrado de datos en reposo puede ser un requisito para las normas de seguridad como HIPAA o PCI DSS. Dicho cifrado se puede implementar en varios niveles:puede cifrar todo el disco en el que se almacenan los archivos. Puede cifrar solo la base de datos MySQL a través de la funcionalidad disponible en las últimas versiones de MySQL o MariaDB. El cifrado también se puede implementar en la aplicación para que cifre los datos antes de almacenarlos en la base de datos. Cada opción tiene sus pros y sus contras:el cifrado de disco solo puede ayudar cuando los discos se roban físicamente, pero los archivos no se cifrarían en un servidor de base de datos en ejecución.

Complemento PAM extiende la funcionalidad de registro a cuentas de usuario estrictas con configuraciones LDAP. De hecho, lo encuentro mucho más fácil de configurar que la integración LDAP con Oracle Database.

Replicación y alta disponibilidad

MariaDB es bien conocida por su simplicidad y flexibilidad de replicación. De forma predeterminada, puede leer o incluso escribir en sus servidores en espera/esclavos. Afortunadamente, las versiones de MySQL 10.X trajeron muchas mejoras significativas a la replicación, incluidas las ID de transacciones globales, las sumas de verificación de eventos, los esclavos de subprocesos múltiples y los esclavos/maestros a prueba de fallas para hacer que la replicación sea aún mejor. Los DBA acostumbrados a las lecturas y escrituras de replicación de MySQL esperarían una solución similar o incluso más simple de su hermano mayor, Oracle. Desafortunadamente no por defecto.

La implementación de espera física estándar para Oracle está cerrada para cualquier operación de lectura y escritura. De hecho, Oracle ofrece una variación lógica pero tiene muchas limitaciones y no está diseñado para HA. La solución a este problema es una función paga adicional llamada Active Data Guard, que puede usar para leer datos desde el modo de espera mientras aplica registros de rehacer.

Active Data Guard es una solución adicional de pago para el software gratuito de recuperación ante desastres Data Guard de Oracle disponible solo para Oracle Database Enterprise Edition (licencia de mayor costo). Ofrece acceso de solo lectura, mientras aplica continuamente los cambios enviados desde la base de datos principal. Como base de datos en espera activa, ayuda a descargar consultas de lectura, informes y copias de seguridad incrementales de la base de datos principal. La arquitectura del producto está diseñada para permitir que las bases de datos en espera estén aisladas de las fallas que pueden ocurrir en la base de datos principal.

Una característica interesante de la base de datos Oracle 12c y algo que Oracle DBA perdería es la validación de corrupción de datos. Se realizan verificaciones de corrupción de Oracle Data Guard para garantizar que los datos estén alineados exactamente antes de que se copien en una base de datos en espera. Este mecanismo también se puede utilizar para restaurar bloques de datos en la base de datos principal directamente desde la base de datos en espera.

MariaDB ofrece varios métodos de replicación y características de replicación como:

  • sincrónico,
  • asincrónico,
  • semisincrónico

El conjunto de características para la replicación de MariaDB es rico. Con la replicación síncrona, puede configurar la conmutación por error sin pérdida de transacciones de escritura. Para reducir los retrasos en la replicación asíncrona, es posible que desee optar por la replicación paralelizada en orden en los esclavos. Los eventos que se pueden comprimir son los eventos que normalmente pueden tener un tamaño significativo:eventos de consulta (para DDL y DML en la replicación basada en declaraciones) y eventos de fila (para DML en la replicación basada en filas). Similar a otras opciones de compresión, la replicación comprimida de MariaDB es transparente. Como se mencionó anteriormente, todo el proceso es muy fácil en comparación con la replicación física y lógica de Oracle Data Guard.

PL/SQL y código de base de datos

Ahora llegamos a la parte difícil:PL/SQL.

Mientras que la replicación y HA con MariaDB reinan supremamente. Oracle es el rey de PL/SQL, sin duda allí.

PL/SQL es el principal obstáculo para la migración al mundo del código abierto en muchas organizaciones. Pero MariaDB no se rinde aquí.

MariaDB 10.3 (también conocido como MariaDB TX 3.0) ha agregado algunas características nuevas y sorprendentes, que incluyen construcciones SEQUENCE, paquetes de estilo Oracle y el tipo de datos ROW, lo que facilita mucho las migraciones.

Con el nuevo parámetro SQL_MODE =ORACLE, MariaDB ahora puede analizar, según el caso, un montón de Oracle PL/SQL heredado sin tener que volver a escribir el código.

Como podemos encontrar en la página de historias de sus clientes utilizando la compatibilidad central de Oracle PL/SQL en MariaDB TX 3.0, el Banco de Desarrollo de Singapur (DBS) ha podido migrar más de la mitad de sus aplicaciones críticas para el negocio en solo 12 meses desde Oracle. Base de datos a MariaDB.

El nuevo modo de compatibilidad ayuda con la siguiente sintaxis:

  • Sintaxis de bucle
  • Declaración de variable
  • Construcción de procedimiento almacenado no ANSI
  • Sintaxis del cursor
  • Parámetros de procedimientos almacenados
  • Herencia de tipos de datos (%TYPE, %ROWTYPE)
  • Excepciones de estilo PL/SQL
  • Sinónimos para tipos básicos de SQL (VARCHAR2, NÚMERO, …)

Pero si echamos un vistazo a la versión anterior 10.2, algo de la compatibilidad entre Oracle y MariaDB apareció antes como:

  • Expresiones de tabla comunes
  • Consultas SQL recursivas
  • Funciones de Windows, NTILETE, RANK, DENESE_RANK.

El análisis nativo de PL/SQL o, en algunos casos, la ejecución directa de procedimientos nativos de Oracle puede reducir considerablemente el costo de desarrollo.

Otra característica muy útil agregada por SQL_MODE=Oracle son las secuencias. La implementación de secuencias en MariaDB Server 10.3 sigue el estándar SQL:2003 e incluye compatibilidad de sintaxis con Oracle.

Para crear una secuencia, se usa una declaración de creación:

CREATE SEQUENCE Sequence_1 
  START WITH 1  
  INCREMENT BY 1;

Cuando las secuencias creadas se pueden usar, por ejemplo, con inserciones como:

INSERT INTO database (database_id, database_name) VALUES(Sequence_1.NEXTVAL, 'MariaDB');

Clustering y escalado

MariaDB es un clúster de base de datos multimaestro asíncrono, activo-activo.

MariaDB Cluster difiere de lo que se conoce como MySQL Cluster de Oracle - NDB.

El clúster de MariaDB se basa en el complemento de replicación multimaestro proporcionado por Codership (Galera). Desde la versión 5.5, la tecnología Galera (API wsrep) es una parte integral de MariaDB. La arquitectura del complemento de Galera se basa en tres capas principales:certificación, replicación y marco de comunicación grupal.

La capa de certificación prepara los conjuntos de escritura y realiza las comprobaciones de certificación sobre ellos, lo que garantiza que se puedan aplicar.

La capa de replicación administra el protocolo de replicación y proporciona la capacidad de pedido total.

Group Communication Framework implementa una arquitectura de complementos que permite que otros sistemas se conecten a través del esquema de backend de gcomm.

La principal diferencia con Oracle RAC es que cada nodo tiene datos separados. Oracle RAC suele confundirse con una solución HA complementaria, mientras que los discos suelen estar en la misma matriz de discos. MariaDB no solo ofrece almacenamiento redundante, sino que también es compatible con la agrupación en clústeres geolocalizados sin necesidad de fibra dedicada.

Copia de seguridad y recuperación

Oracle ofrece muchos mecanismos de copia de seguridad que incluyen copia de seguridad activa, copia de seguridad, importación, exportación y muchos otros.

A diferencia de MySQL, MariaDB ofrece una herramienta externa para copias de seguridad activas llamada mariabackup. Es una bifurcación de Percona XtraBackup diseñada para trabajar con tablas cifradas y comprimidas y es el método de copia de seguridad recomendado para bases de datos MariaDB.

MariaDB Server 10.1 introdujo la compresión de MariaDB y el cifrado de datos en reposo, pero las soluciones de copia de seguridad existentes no admitían la capacidad de copia de seguridad completa para estas funciones. Entonces, MariaDB decidió extender XtraBackup (versión 2.3.8) y llamó a esta solución Mariabackup.

Percona y Mariabackup ofrecen funcionalidades similares, pero si está interesado en las diferencias, puede encontrarlas aquí.

Lo que MariaDB no ofrece es el catálogo de recuperación de las copias de seguridad de su base de datos. Afortunadamente, esto se puede ampliar con sistemas de terceros como ClusterControl.

Compatibilidad con la nube

Las infraestructuras en la nube son cada vez más populares en estos días. Aunque una máquina virtual en la nube puede no ser tan confiable como un servidor de nivel empresarial, los principales proveedores de la nube ofrecen una variedad de herramientas para aumentar la disponibilidad del servicio. Puede elegir entre arquitectura EC2 o DBaaS como Amazon RDS.

Amazon RDS admite el servidor MariaDB 10.3. No es compatible con SQL_MODE=Oracle, pero aún puede encontrar un conjunto de características que facilitan la migración. La nube de Amazon admite tareas de administración comunes como monitoreo, copias de seguridad, implementaciones múltiples de la A a la Z, etc.

Otro proveedor de nube popular, Google Cloud, también ofrece la versión más reciente de MariaDB. Puede implementarlo como un contenedor o una imagen de máquina virtual certificada por la biblioteca Bintami.

Azure también ofrece su propia implementación de MariaDB. Es similar a Amazon RDS, con copias de seguridad, escalado y compilaciones en alta disponibilidad. El SLA garantizado es del 99,99 %, lo que corresponde a 4 m 23 segundos por mes de tiempo de inactividad.

Consideraciones diversas

Como se mencionó al principio de este artículo, la migración de Oracle a MariaDB es un proceso de varias etapas. Un consejo general será no intentar migrar todas las bases de datos a la vez. Dividir la migración en lotes pequeños es, en la mayoría de los escenarios, el mejor enfoque.

Si no está familiarizado con la tecnología, inténtelo. Debe sentirse seguro con la plataforma y saber sus pros y sus contras. Las pruebas generarán confianza y afectarán sus decisiones con respecto a la migración.

Existen herramientas interesantes que pueden ayudarlo con el proceso de migración PL/SQL más difícil. Muy interesantes son dbconvert, Herramienta de conversión de esquemas de AWS - Documentación de AWS.

A lo largo de los años, MariaDB ha ganado soporte y madurez empresarial para ejecutar sistemas de transacciones de datos críticos y complejos. Con la versión reciente, MariaDB ha agregado algunas características nuevas y excelentes, como SQL_Mode =compatibilidad con Oracle, lo que hace que el proceso de transición sea más fácil que nunca.

Finalmente, puede unirse a mí el 12 de marzo para un seminario web durante el cual lo guiaré a través de todo lo que necesita saber cuando se trata de migrar de una base de datos Oracle a MariaDB.