Tanto si desea crear una nueva instancia de Acumatica en MySQL, como si tiene una instancia de Acumatica en funcionamiento con MSSQL que desea migrar a MySQL, la siguiente entrada del blog arrojará algo de luz sobre este proceso. El uso de MySQL para Acumatica no está tan bien documentado como el de Microsoft SQL Server, lo que hace que esta entrada sea especialmente valiosa si la selección de este motor de base de datos es la opción -económica y tecnológicamente hablando- más conveniente para usted o su cliente.
Además, le guiaré a través del proceso de creación de un nuevo servidor MySQL, y le mostraré los aspectos clave y los trucos ocultos para migrar sus datos..
Acumatica es un ERP (Enterprise Resource Panning) de base de datos agnóstica. Esto significa que una instancia de Acumatica puede ejecutarse en Microsoft SQL Server o en un servidor MySQL.
Para garantizar esto, hay que tener en cuenta algunas cosas desde la perspectiva del desarrollo:
- No deben crearse objetos de base de datos específicos, es decir, vistas SQL, procedimientos almacenados, etc.
- Toda la comunicación con la base de datos debe realizarse utilizando Business Query Language (BQL) y los métodos del framework.
- La creación/modificación de tablas de la BD en paquetes de personalización debe gestionarse como datos XML en lugar de utilizar una consulta directa a la BD.
- etc...
El mayor porcentaje de clientes de Acumatica utiliza actualmente Microsoft SQL Server. Este artículo, sin embargo, pretende arrojar algo de luz sobre cómo configurar y migrar Acumatica para MySQL. En concreto, con AWS RDS My SQL Server.
Según la descripción de AWS, "Amazon Relational Database Service (Amazon RDS) facilita la configuración, el funcionamiento y el escalado de una base de datos relacional en la nube. Proporciona una capacidad rentable y redimensionable a la vez que automatiza tareas de administración que consumen mucho tiempo, como el aprovisionamiento de hardware, la configuración de la base de datos, la aplicación de parches y las copias de seguridad."
RDS soporta -entre otros motores de BD- MySQL, SQL Server y Aurora. Aurora es un servicio de base de datos relacional desarrollado por el propio equipo AWS de Amazon. Es compatible tanto con MySQL como con PostgreSQL y merece la pena analizarlo, ya que es "...hasta cinco veces más rápido que las bases de datos MySQL estándar y tres veces más rápido que las bases de datos PostgreSQL estándar* ".
Sin embargo, aunque tengo muchas ganas de aprender más sobre Aurora y cómo utilizarlo para Acumatica, el propósito de esta entrada del blog se centra en el uso de MySQL. Quizás siga con un post sobre Aurora en el futuro.
Configuración de MySQL en RDS
RDS simplifica la configuración de MySQL proporcionando un asistente para preparar el servidor. Aquí, en lo que sigue son los ajustes más relevantes a tener en cuenta.
La versión de MySQL. Elegí usar 5.7.22 por varias razones. En primer lugar, sigue siendo la versión más popular de MySQL utilizada en el mercado, como ilustran los datos a continuación, y es una versión gratuita de código abierto de la base de datos.
Fuente: EverSQL
Además, aunque muy tentador, el uso de la última versión disponible (actualmente MySQL 8.0.17) arroja el siguiente error cuando intentamos establecer una conexión para acceder a él a través del asistente de configuración de Acumatica.
Haga el MySQL públicamente accesible seleccionando esta opción en el asistente. De lo contrario, el Asistente de configuración fallará al conectarse, así como cualquier cliente DB para el caso.
A continuación, asegúrese de que el grupo de Seguridad puede acceder al puerto MySQL 3306 y cambie el grupo de parámetros de DB predeterminado. Si utiliza el valor predeterminado actual (default.mysql5.7), el asistente de Acumatica produce el siguiente error:
Como se describe en el mensaje de error, tenemos que asegurarnos de que la variable log_bin_trust_function_creators está establecida en true. Esto se puede hacer duplicando el grupo de parámetros por defecto y asignando esa propiedad.
Después de confirmar todos los ajustes, el servidor comenzará a crearse, y ¡voilà! En cuestión de minutos, tendremos un exitoso servidor MySQL funcionando en un abrir y cerrar de ojos.
Transición de datos de MSSQL a MySQL
Hasta aquí todo bien, pero ¿qué pasa con los clientes que van a pasar datos de MSSQL a MySQL?
Existen muchas aplicaciones de migración de datos. Incluso la propia AWS tiene una propia (aws.amazon.com/dms/). Así que toca invertir bastantes horas, leer críticas e identificar la opción más adecuada. Spoiler: Ya tengo esa respuesta, y la opción preferida es ** DRUM ROLL ** ¡ninguna de las anteriores! Hablando de una respuesta anticlimática.
Esta vez vamos a confiar en la muy muy útil, instantáneas Acumatica. Vamos a tomar ventaja de tener la definición de la estructura DB gestionado por el Asistente de Acumatica:
- Se tomará una instantánea de Acumatica de la instancia MSSQL (llamémosla Instancia A). Debemos asegurarnos de que los datos personalizados también se incluyen en la instantánea.
- Se creará una nueva instancia de Acumatica compatible con MySQL (llamémosla Instancia B).
- Todos los paquetes de personalización deben publicarse en la Instancia B, ya que también migraremos datos personalizados y necesitamos tener todas las tablas y columnas personalizadas creadas en la instancia de destino.
- Inicie sesión en la Instancia B e importe la instantánea creada en el primer paso.
He aquí algunas imágenes de nuestros resultados:
- Inicialmente se creó una Orden de Compra en la Instancia A
- Se siguieron los pasos y se importaron los datos en la Instancia B, y aquí está el resultado:
Podemos tener un nuevo servidor MySQL con los datos migrados en sólo unas horas.
Después de esto, asegúrese de realizar pruebas exhaustivas en un entorno beta antes de realizar los cambios en Producción. Este post es para fines de referencia. Hay muchos escenarios que deben ser probados en su extremo. Además, si usted está considerando migrar sus datos de MySQL a PostgreSQL en el futuro, es importante tener en cuenta que este proceso puede requerir un enfoque diferente debido a las diferencias en las estructuras de bases de datos y la sintaxis de consulta entre los dos sistemas.
Resumen
En conclusión, Acumatica es un ERP agnóstico en cuanto a bases de datos. Como tal, si el presupuesto es un factor crítico para usted, o si tecnológicamente prefiere MySQL como motor de base de datos, entonces vale la pena invertir algo de tiempo para considerar este escenario. Tenga en cuenta que podrá hacerlo, no sólo para las nuevas instancias, sino también para las instancias en curso que ejecutan MSSQL.
*https://aws.amazon.com/rds/aurora/