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

Principales herramientas de código abierto para migraciones de MySQL y MariaDB

Las grandes organizaciones que utilizan plataformas de bases de datos MySQL o MariaDB a menudo enfrentan la necesidad de realizar una migración de base de datos de un lugar a otro. Independientemente de la plataforma, el tipo de software de base de datos (como de RDBMS a NoSQL o NoSQL volviendo a RDBMS), o si se trata solo de una migración de datos, realizar una migración es una gran cantidad de trabajo y costos.

La migración de una base de datos siempre implicará el proceso de migrar datos de una o más bases de datos de origen a una o más bases de datos de destino. Esto puede implicar un servicio de migración de base de datos o un conjunto de herramientas combinadas que los ingenieros han creado para crear un servicio y adaptarlo a este tipo de problema.

Se espera que una migración de la base de datos no signifique que la plataforma de la base de datos de origen terminará siendo su plataforma de destino exactamente como la fuente de origen. Una vez que finaliza una migración, el conjunto de datos de las bases de datos de destino podría terminar siendo posiblemente reestructurado. Lo más importante, una vez finalizada la migración, es que los clientes que accedan a la base de datos sean redirigidos a las nuevas bases de datos de origen. La nueva base de datos de origen debe proporcionar la copia exacta de los datos del origen y no afectar el rendimiento que pueda afectar la experiencia general del usuario.

Mover sus datos de una plataforma a la plataforma de destino objetivo es una tarea enorme. Esto es lo que cubre una migración de base de datos cuando una organización o empresa decide apagar su luz a la plataforma actual por numerosas razones. Las razones comunes para migrar datos se deben a la rentabilidad de la plataforma de destino de destino o por su flexibilidad en la implementación y escalabilidad. Si bien la plataforma actual que aloja los datos de producción actuales genera más costos por sus actualizaciones y escalabilidad, es una carga cuando se implementan pequeños cambios que en realidad se pueden implementar en una plataforma de microservicios.

En este blog, nos centraremos en las principales herramientas de código abierto que puede usar para las migraciones de MySQL y MariaDB en una migración de base de datos más homogénea.

Herramientas de copia de seguridad para la migración de datos

La ruta más fácil de usar al realizar la migración es usar herramientas de copia de seguridad de la base de datos. Veremos qué son estas herramientas y cómo puede usarlas durante la migración.

mysqldump/mysqlpump

Esta herramienta es una de las utilidades más famosas para MySQL o MariaDB que un administrador de base de datos o administrador del sistema conectará esta herramienta para migrar una base de datos completa o una copia parcial de la base de datos. Para los administradores de bases de datos que no están familiarizados con MySQL/MariaDB, esta herramienta les permitirá crear una copia de respaldo que generará una copia lógica de los datos que puede volcar en la base de datos de destino.

Una configuración común con el uso de esta herramienta es que, siempre que una base de datos de destino se encuentre en otro lugar y esté alojada en una plataforma diferente a la fuente, el destino actúa como esclavo o réplica. El uso de mysqldump comúnmente invocado con --single-transaction en un sistema ocupado, y con --master-data le proporcionará las coordenadas para configurar un esclavo en la base de datos de destino que se utilizará como host para la migración de datos. Una alternativa a mysqldump también es mysqlpump, pero con una característica menor, puede realizar procesamiento paralelo de bases de datos y de objetos dentro de las bases de datos para acelerar el proceso de volcado. La desventaja es que, con mysqlpump, no hay ninguna opción que pueda usar, como --master-data, que es muy útil si desea crear una réplica que se usará como destino para la migración de la base de datos.

mysqlpump es ventajoso si sus datos están inactivos o se ponen en modo de mantenimiento, de modo que no se procesan escrituras o cambios en curso en la base de datos de origen. Es cada vez más rápido en comparación con mysqldump.

midumper/micargador 

mydumper/myloader es una herramienta muy ingeniosa y eficiente que puede usar para copias de seguridad lógicas, especialmente para importar datos masivos con una velocidad de procesamiento más rápida, ya que ofrece paralelismo, capacidad para enviar datos por fragmentos, soporta umbral y control califique a través del número de subprocesos, filas, tamaño de declaración y comprima el resultado. Genera o incluye un archivo de registro binario y posiciones de registro, lo que es muy útil si configura la plataforma de destino de destino para que actúe como una réplica del entorno de origen y producción actual.

Básicamente, mydumper es el binario y el comando que debe invocar a través de la línea de comandos para crear la copia de seguridad lógica. Mientras que myloader es el binario y el comando que debe usar al cargar datos en el destino deseado. Su flexibilidad le permite administrar la tasa deseada al procesar las acciones, ya sea creando una copia de seguridad o cargando los datos. Con mydumper, también puede crear una copia de seguridad completa o solo una copia de seguridad parcial de su base de datos de origen. Esto es muy útil en caso de que necesite datos o esquemas grandes que desee alejar del host de base de datos actual y moverlos ligeramente a otro destino de destino mientras comienza a configurar nuevos fragmentos de base de datos. Esta también puede ser una forma de migrar datos de gran tamaño extrayendo un gran segmento del conjunto de datos y luego moviéndolo, pero como un nuevo nodo de fragmento.

mydumper/myloader también tiene sus limitaciones. Se detuvo de las actualizaciones de los autores originales, pero Max Bube la guardó, pero la herramienta todavía se usa ampliamente incluso para entornos de producción.

Percona XtraBackup/MariaDB Backup

XtraBackup de Percona es un regalo para los administradores de bases de datos que no quieren usar ni gastar dinero en Oracle MySQL Enterprise Backup empresarial. Mientras que MariaDB Backup se bifurca y se deriva de Percona XtraBackup, también tienen MariaDB Enterprise Backup.

Estas dos herramientas comparten los mismos conceptos al realizar o realizar una copia de seguridad. Es una copia de seguridad binaria que ofrece una copia de seguridad en línea, PITR, copia de seguridad incremental y completa, copia de seguridad parcial, también útil para la recuperación de datos, ya que comprende la recuperación que produce un archivo de registro binario y una posición, admite GTID y mucho más. Aunque MariaDB Backup y Percona XtraBackup son dos tipos diferentes de software hoy en día, ya que están diseñados para admitir la base de datos enfocada en proporcionar una copia de seguridad. MariaDB Backup es definitivamente aplicable si tiene la intención de usar o realizar copias de seguridad de una fuente de base de datos MariaDB. Mientras que Percona XtraBackup es aplicable en Oracle MySQL y también en Percona Server o algunos servidores MySQL derivados como Percona XtraDB Server o la versión de Codership de Galera Cluster para MySQL.

Ambas copias de seguridad son muy beneficiosas para las migraciones de bases de datos. Realizar una copia de seguridad en línea activa es cada vez más rápido y produce una copia de seguridad que puede usar directamente para cargarla en su base de datos de destino. Más a menudo, la copia de seguridad de transmisión es útil, ya que puede realizar una copia de seguridad en línea y transmitir los datos binarios a la base de datos de destino utilizando socat o netcat. Esto le permite acortar el tiempo de migración, ya que los datos que se mueven al destino de destino se transmiten directamente.

El enfoque más común de migración de datos al usar esta herramienta es copiar los datos desde el origen y luego transmitirlos al destino de destino. Una vez en el destino de la base de datos de destino, puede preparar la copia de seguridad binaria con la opción --prepare donde aplica los registros que se registraron durante el momento de la creación de la copia de seguridad para que copie los datos completos tal como están y exactamente desde el momento. donde se realizó la copia de seguridad. A continuación, configure el destino de la base de datos de destino como una réplica para que actúe como una réplica o un esclavo del clúster de origen existente y reproduzca todos los cambios y transacciones que se hayan producido desde el clúster principal.

Por supuesto, también hay una limitación en el uso de esta herramienta, pero los administradores de bases de datos deben saber cómo usar esta herramienta y también cómo acelerar y personalizar el uso de acuerdo con el uso deseado. Es posible que no desee atascar su base de datos de origen si su fuente está recibiendo demasiado tráfico o un gran procesamiento desde ese momento. Su limitación también garantiza que se trate de una configuración homogénea en la que la fuente de destino sea un sistema compatible con Linux y no un entorno de tipo Windows, ya que Percona XtraBackup y MariaDB Backup solo funcionan en el entorno Linux.

Herramientas de migración de esquemas de bases de datos

La migración de la base de datos no habla solo de una herramienta específica y una tarea específica, entonces la migración puede ocurrir. Hay muchas consideraciones y tareas subsiguientes subyacentes que deben realizarse para completar una migración de base de datos completa. Una de ellas es la migración de esquema o migración de base de datos. Un esquema en MySQL/MariaDB es una colección de datos que consta de un grupo de tablas con sus columnas y filas, eventos, disparadores, procedimientos almacenados o rutinas y funciones. Hay ocasiones en las que es posible que solo desee migrar un esquema o solo una tabla. Digamos que una tabla específica en un esquema requiere un cambio en su estructura de tabla y eso requiere una declaración DDL. El problema es que, al ejecutar una instrucción DDL directa como ALTER TABLE ...ENGINE=InnoDB, se bloquean las transacciones o conexiones entrantes que también se referirán o usarán en la tabla de destino. Para algunas tablas enormes que comprenden una definición de datos larga y la estructura de la tabla, agrega un desafío más real y también complica más, especialmente si la tabla es una mesa caliente. Mientras que en una migración de base de datos, puede ser difícil copiar la copia completa exacta de la tabla completa sin tiempo de inactividad desde la fuente. Así que veamos cuáles son.

pt-online-schema-change

Es parte del famoso kit de herramientas de Percona que originalmente derivó de Maatkit y Aspersa. Esta herramienta es muy útil cuando se realiza un cambio de definición de tabla, especialmente para una tabla caliente que consta de una gran cantidad de datos. Para un enfoque común pero ingenuo para realizar un cambio de definición de tabla, ejecutar ALTER TABLE puede hacer el trabajo. Aunque es suficiente el caso, ALTER TABLE sin usar ALGORITHM=INPLACE provoca una copia completa de la tabla que adquiere un bloqueo de metadatos completos y eso significa que su base de datos puede acumularse y bloquearse durante un largo período de tiempo, especialmente si la tabla está enorme. En ese caso, esta herramienta está diseñada para resolver ese problema. Esta herramienta es muy beneficiosa para la migración de la base de datos de tal manera que detecta una copia inconsistente de una tabla caliente con datos muy grandes de su destino de base de datos de destino ya configurado. En lugar de realizar una copia de seguridad mediante una copia lógica o binaria/física, se puede utilizar pt-online-schema-change, que copia las filas de la tabla de origen a su tabla de destino fragmento por fragmento. Incluso puede personalizar el comando con llamadas adecuadas a sus parámetros según sus requisitos.

Además de usar, pt-online-schema-change también usa disparadores. Mediante el uso de activadores, cualquier tráfico posterior o en curso que intente aplicar cambios en esa tabla de referencia también se copiará en la base de datos de destino, que actúa como una réplica del clúster de la base de datos de origen actual. Esto copia todos los datos exactamente qué datos tiene la base de datos de origen en su base de datos de destino que se encuentra en una plataforma diferente, por ejemplo. El uso de disparadores es aplicable para MySQL y MariaDB siempre que su motor sea InnoDB y tenga una presencia de clave principal en esa tabla, lo cual es un requisito. Es posible que sepa que InnoDB usa un mecanismo de bloqueo de filas que permite que, para una cierta cantidad de fragmentos (un grupo de registros seleccionados), pt-online-schema-change intentará copiar eso y luego aplica la declaración INSERT a la tabla de destino . La tabla de destino es una tabla ficticia que actúa como una copia de destino del próximo reemplazo de la tabla de origen existente. Sin embargo, pt-online-schema-change le permite al usuario eliminar la tabla ficticia o simplemente dejarla en su lugar hasta que el administrador esté listo para eliminar esa tabla. Tenga en cuenta que, al soltar o eliminar una tabla, se adquiere un bloqueo de metadatos. Dado que adquiere disparadores, cualquier cambio posterior se copiará exactamente en la tabla de destino sin dejar discrepancias en la tabla de destino o ficticia.

gh-ost

Comparte el mismo concepto que pt-online-schema-change. Esta herramienta tiene un enfoque diferente en comparación con pt-online-schema-change. Debo decir que esta migración de la herramienta de esquema se acerca a los impedimentos basados ​​en la producción que pueden hacer que su base de datos se ralentice y posiblemente se atasque, lo que hace que el clúster de su base de datos caiga en modo de mantenimiento o se apague durante un período de tiempo desconocido, hasta que el problema se solucione. resuelto Este problema es causado por lo general con disparadores. Si tiene una tabla ocupada o activa que está experimentando un cambio de esquema o un cambio de definición de tabla, los disparadores pueden hacer que su base de datos se acumule debido a la contención de bloqueo. Los disparadores de MySQL/MariaDB permiten que su base de datos defina disparadores para INSERTAR, ACTUALIZAR y ELIMINAR. Si la tabla de destino está en un punto de acceso, puede terminar mal. Su base de datos comienza a volverse más lenta hasta que se atasca a menos que pueda eliminar esas consultas entrantes o eliminar mejor los factores desencadenantes, pero ese no es el enfoque ideal.

Debido a esos problemas, gh-ost soluciona ese problema. Actúa como si hubiera un servidor de registro binario donde los eventos o transacciones entrantes se registran en un formato de registro binario, específicamente utilizando RBR (replicación basada en filas). De hecho, es muy seguro y menos preocupaciones en términos de impacto que debe enfrentar. De hecho, también tiene la opción de hacer una prueba o un ensayo (igual que con pt-online-schema-change), pero pruébelo directamente en la réplica o en un nodo esclavo. Esto es perfecto si desea jugar y verificar la copia exacta en su base de datos de destino durante la migración.

Esta herramienta es muy flexible de acuerdo a sus necesidades e implica la seguridad de que su clúster no se atascará o probablemente terminará realizando una conmutación por error o una recuperación de datos si empeora. Para obtener más información y querer aprender esta herramienta, sugiero leer esta publicación de Github de Shlomi Noach.

Otras herramientas OSC

Puedo decir que esas dos herramientas son un enfoque más recomendable, pero también puede probar otras alternativas. En su mayoría, estas herramientas aplican disparadores de MySQL/MariaDB, por lo que de alguna manera comparte el mismo concepto que pt-online-schema-change. Aquí está la siguiente lista:

  • LHM:las migraciones de bases de datos estilo Rails son una forma útil de hacer evolucionar su esquema de datos de manera ágil. La mayoría de los proyectos de Rails comienzan así y, al principio, hacer cambios es rápido y fácil.
  • OnlineSchemaChange:creado e iniciado por Facebook. Esta herramienta se utiliza para realizar cambios en el esquema de las tablas MySQL sin bloqueo
  • TableMigrator:iniciado por Serious Business y ex empleados de Twitter. Esta herramienta comparte el mismo principio con las migraciones sin tiempo de inactividad de tablas grandes en MySQL. Se implementa con Rails, por lo que puede ser útil si tiene un entorno de aplicación Ruby-on-Rails.
  • oak-online-alter-table:esta es una herramienta antigua creada por Shlomi Noach, aunque de alguna manera se acerca al mismo enfoque que pt-online-schema-change y realiza una operación ALTER TABLE sin bloqueo

Herramientas del asistente de migración de base de datos

Existen pocas herramientas de migración que ofrecen un uso gratuito, lo que es muy beneficioso hasta cierto punto. Lo que es más ventajoso con el uso de las herramientas del asistente de migración es que tienen una GUI para la cual puede tener la comodidad de ver la estructura actual o simplemente seguir los pasos que proporciona la UI durante la migración. Puede haber numerosos servicios o herramientas de asistente, pero no es de código abierto y no está disponible de forma gratuita. Por supuesto, la migración de una base de datos es un proceso muy complejo pero sistemático, pero en algunos casos requiere mucho trabajo y esfuerzo. Echemos un vistazo a estas herramientas gratuitas.

Mesa de trabajo MySQL

Como sugiere el nombre, es para MySQL y las bases de datos derivadas, como Percona Server, por ejemplo, pueden ser útiles cuando se trata de la migración de bases de datos. Dado que MariaDB ha cambiado totalmente a una ruta diferente, especialmente desde la versión 10.2, existen algunos problemas de incompatibilidad que puede encontrar si intenta usar esto desde una fuente o destino de MariaDB. Workbench se puede usar para tipos heterogéneos de bases de datos, como las que provienen de diferentes bases de datos de origen y desea volcar los datos a MySQL.

MySQL Workbench se compone de versiones comunitarias y empresariales. Sin embargo, la versión comunitaria está disponible gratuitamente como GPL, que puede encontrar aquí https://github.com/mysql/mysql-workbench. Como indica la documentación, MySQL Workbench le permite migrar desde Microsoft SQL Server, Microsoft Access, Sybase ASE, SQLite, SQL Anywhere, PostreSQL y otras tablas, objetos y datos de RDBMS a MySQL. La migración también admite la migración de versiones anteriores de MySQL a las últimas versiones.

phpMyAdmin

Para aquellos que trabajan como desarrolladores web que usan la pila LAMP, esta herramienta no sorprende que sea una de sus navajas suizas cuando se trata de tareas de bases de datos. phpMyAdmin es una herramienta de software libre escrita en PHP, destinada a manejar la administración de MySQL en la Web. phpMyAdmin admite una amplia gama de operaciones en MySQL y MariaDB. Las operaciones de uso frecuente (administración de bases de datos, tablas, columnas, relaciones, índices, usuarios, permisos, etc.) se pueden realizar a través de la interfaz de usuario, mientras aún tiene la capacidad de ejecutar directamente cualquier instrucción SQL.

Aunque es bastante simple cuando se trata de importar y exportar, lo importante es que hace el trabajo. Aunque para una migración más grande y compleja, esto podría no ser suficiente para manejar sus necesidades deseadas.

HeidiSQL

HeidiSQL es un software gratuito y tiene como objetivo que sea fácil de aprender. "Heidi" le permite ver y editar datos y estructuras desde computadoras que ejecutan uno de los sistemas de base de datos MariaDB, MySQL, Microsoft SQL, PostgreSQL y SQLite. Inventado en 2002 por Ansgar, HeidiSQL pertenece a las herramientas más populares para MariaDB y MySQL en todo el mundo.

Para fines de migración, le permite exportar desde un servidor/base de datos directamente a otro servidor/base de datos. También tiene funciones de importación para permitir campos de texto como CSV, y también exportar filas de tablas a una amplia gama de tipos de archivos compatibles, como CSV, HTML, XML, SQL, LaTeX, Wiki Markup y PHP Array. Aunque está diseñado para administrar bases de datos con fines de administración del servidor de base de datos, puede usarlo para tareas de migración simples.

Percona Toolkit como tu navaja suiza

Percona Toolkit es un software destacado que se distribuye como software de código abierto bajo la garantía de GPL. Percona Toolkit es una colección de herramientas avanzadas de línea de comandos comúnmente utilizadas internamente por Percona, pero también es aplicable para cualquier trabajo de base de datos relacionado, especialmente para servidores MySQL/MariaDB.

Entonces, ¿cómo y por qué también es útil para la migración de datos, especialmente en las migraciones de MySQL/MariaDB? Tienen una serie de herramientas aquí que son beneficiosas para usar durante la migración y después de la migración.

Como se mencionó anteriormente, un enfoque común de la migración de datos es tener el servidor de destino como una réplica del clúster de la base de datos de origen principal pero en una configuración homogénea. Esto significa que, si la situación pasa de un proveedor local a un proveedor de nube pública, puede configurar un nodo elegido de esa plataforma y este nodo replicará todas las transacciones del clúster principal. Mediante el uso de herramientas de copia de seguridad, es posible que pueda lograr este tipo de configuración de migración. Pero no termina ahí. Percona Toolkit tiene herramientas pt-table-checksum/pt-table-sync, por ejemplo, para ayudarlo a identificar inconsistencias de datos entre el servidor local y el servidor de la base de datos de destino. Con pt-table-checksum, puede realizar cálculos de suma de verificación basados ​​en una serie de fragmentos para todas las bases de datos o simplemente suma de verificación selectiva en bases de datos particulares, o tablas particulares, o incluso un rango de registros de la tabla. pt-table-sync se utilizará para realizar la sincronización de datos, por lo que sus bases de datos de destino se actualizarán nuevamente con una nueva copia de los datos exactos del clúster de origen principal.

Por otro lado, pt-upgrade es muy útil después de realizar la migración desde las herramientas de copia de seguridad. Con pt-upgrade, puede utilizar esta herramienta para realizar análisis mediante la ejecución de un conjunto de consultas, por ejemplo, desde un archivo de registro de consultas lentas. Estos resultados se pueden usar para comparar desde la base de datos de origen y contra el servidor de la base de datos de destino.

Resumen

La migración de bases de datos, especialmente desde una configuración heterogénea, puede ser muy complicada. Sin embargo, en una configuración homogénea puede ser bastante sencillo; independientemente de si los datos son grandes o pequeños, siempre que esté equipado con las herramientas adecuadas y, por supuesto, el enfoque sistemático correcto para determinar que la migración está completa y que los datos son coherentes. Puede haber ocasiones en las que una migración requiera consultar con los expertos, pero siempre es un buen comienzo probar estas herramientas de código abierto para lograr la tarea de migración de base de datos deseada.