Que vous souhaitiez créer une nouvelle instance Acumatica sur MySQL, ou que vous ayez une instance Acumatica en cours d'exécution avec MSSQL que vous souhaitez faire migrer vers MySQL, l'article de blog suivant vous apportera quelques éclaircissements sur ce processus. L'utilisation de MySQL pour Acumatica n'est pas aussi bien documentée que celle de Microsoft SQL Server, ce qui rend cet article particulièrement utile si la sélection de ce moteur de base de données est l'option - économique et technologique - la plus pratique pour vous ou votre client.
De plus, je vous guiderai à travers le processus de création d'un nouveau serveur MySQL, et je vous montrerai les aspects clés et les astuces cachées pour migrer vos données...
Acumatica est un ERP (Enterprise Resource Panning) agnostique en matière de base de données. Cela signifie qu'une instance Acumatica peut être exécutée sur Microsoft SQL Server ou sur un serveur MySQL.
Afin de garantir cela, il y a quelques éléments à prendre en compte du point de vue du développement :
- Aucun objet spécifique de la base de données ne doit être créé, c'est-à-dire des vues SQL, des procédures stockées, etc.
- Toutes les communications avec la base de données doivent être effectuées à l'aide du langage BQL (Business Query Language) et des méthodes du cadre.
- La création/modification des tables de la base de données dans les paquets de personnalisation devrait être gérée en tant que données XML plutôt qu'en utilisant une requête directe à la base de données.
- etc...
La plupart des clients Acumatica utilisent actuellement Microsoft SQL Server. Cet article, cependant, vise à éclairer la façon de configurer et de migrer Acumatica pour MySQL. Plus précisément, avec un serveur AWS RDS My SQL Server.
Selon la description d'AWS, "Amazon Relational Database Service (Amazon RDS) facilite la mise en place, l'exploitation et l'évolution d'une base de données relationnelle dans le nuage. Il offre une capacité rentable et redimensionnable tout en automatisant les tâches d'administration fastidieuses telles que l'approvisionnement en matériel, la configuration de la base de données, les correctifs et les sauvegardes".
RDS prend en charge - entre autres moteurs de base de données - MySQL, SQL Server et Aurora. Aurora est un service de base de données relationnelle développé par l'équipe AWS d'Amazon. Il prend en charge à la fois MySQL et PostgreSQL et vaut certainement la peine d'être examiné car il est "...jusqu'à cinq fois plus rapide que les bases de données MySQL standard et trois fois plus rapide que les bases de données PostgreSQL standard*".
Cependant, bien que je sois très désireux d'en apprendre davantage sur Aurora et sur la façon de l'utiliser pour Acumatica, l'objectif de cet article de blog est de se concentrer sur l'utilisation de MySQL. Peut-être que je ferai un suivi avec un article sur Aurora à l'avenir.
Configuration de MySQL dans RDS
RDS simplifie la configuration de MySQL en fournissant un assistant pour préparer le serveur. Dans ce qui suit, vous trouverez les paramètres les plus importants à prendre en considération.
La version de MySQL. J'ai choisi d'utiliser la version 5.7.22 pour plusieurs raisons. Premièrement, c'est toujours la version de MySQL la plus populaire sur le marché, comme l'illustrent les données ci-dessous, et c'est une version libre et gratuite de la base de données.
Source: EverSQL
De plus, bien que très tentant, l'utilisation de la dernière version disponible (actuellement MySQL 8.0.17) génère l'erreur suivante lorsque nous essayons d'établir une connexion pour y accéder via l'assistant de configuration d'Acumatica.
Rendez MySQL accessible au public en sélectionnant cette option dans l'assistant. Dans le cas contraire, l'assistant de configuration ne parviendra pas à se connecter, tout comme n'importe quel client DB d'ailleurs.
Ensuite, assurez-vous que le groupe Security peut accéder au port MySQL : 3306 et modifiez le groupe de paramètres de la base de données par défaut. Si vous utilisez la valeur par défaut actuelle (default.mysql5.7), l'assistant Acumatica génère l'erreur suivante :
Comme indiqué dans le message d'erreur, nous devons nous assurer que la variable log_bin_trust_function_creators est définie sur true. Pour ce faire, il suffit de dupliquer le groupe de paramètres par défaut et de lui attribuer cette propriété.
Après avoir confirmé tous les paramètres, le serveur commencera à être créé, et voilà ! En quelques minutes, nous aurons un serveur MySQL opérationnel en un rien de temps.
Transition des données de MSSQL vers MySQL
Jusqu'à présent, tout va bien, mais qu'en est-il des clients qui devront transférer leurs données de MSSQL à MySQL ?
Il existe de nombreuses applications de migration de données. AWS elle-même en a une (aws.amazon.com/dms/). Il est donc temps d'investir quelques heures, de lire des critiques et d'identifier l'option la plus appropriée. Spoiler : J'ai déjà la réponse, et l'option préférée est ** DRUM ROLL ** aucune des options ci-dessus ! C'est une réponse anti-climatique.
Cette fois-ci, nous allons nous appuyer sur les très très utiles snapshots d'Acumatica. Nous allons profiter du fait que la définition de la structure de la base de données est gérée par l'assistant Acumatica :
- Un snapshot Acumatica sera pris à partir de l'instance MSSQL (appelons-la Instance A). Nous devons nous assurer que les données personnalisées sont également incluses dans l'instantané.
- Une nouvelle instance Acumatica compatible avec MySQL sera créée (appelons-la Instance B).
- Tous les paquets de personnalisation doivent être publiés dans l'Instance B car nous allons également migrer des données personnalisées et nous devons avoir toutes les tables et colonnes personnalisées créées dans l'instance de destination.
- Connectez-vous à l'Instance B et importez l'instantané créé lors de la première étape.
Voici quelques images de nos résultats :
- Une commande a été initialement créée dans l'instance A
- Les étapes ont été suivies, les données ont été importées dans l'Instance B, et voici le résultat :
Nous pouvons disposer d'un nouveau serveur MySQL avec les données migrées en quelques heures seulement.
Ensuite, assurez-vous que des tests approfondis sont effectués dans un environnement bêta avant d'effectuer vos changements dans la production. Cet article a été rédigé à des fins de référence. Il existe de nombreux scénarios qui devraient être testés de votre côté. De plus, si vous envisagez de migrer vos données de MySQL vers PostgreSQL à l'avenir, il est important de noter que ce processus peut nécessiter une approche différente en raison des différences de structures de base de données et de syntaxe de requête entre les deux systèmes.
Résumé
En conclusion, Acumatica est un ERP agnostique en matière de base de données. En tant que tel, si le budget est un facteur critique pour vous, ou si technologiquement parlant vous préférez MySQL comme moteur de base de données, alors il vaut la peine d'investir un peu de temps afin d'envisager ce scénario. Gardez à l'esprit que vous pourrez le faire, non seulement pour les nouvelles instances, mais aussi pour les instances en cours qui utilisent MSSQL.
*https://aws.amazon.com/rds/aurora/