Je souhaite répliquer le contenu d'une base de données MySQL dans une base de données MS SQL Server 2008.
Est-ce possible? Quelqu'un peut-il décrire les étapes nécessaires pour y parvenir?
Merci.
la source
Je souhaite répliquer le contenu d'une base de données MySQL dans une base de données MS SQL Server 2008.
Est-ce possible? Quelqu'un peut-il décrire les étapes nécessaires pour y parvenir?
Merci.
Personnellement, je tirerais la méthode MS SQL contre la poussée de la méthode MySQL. Pourquoi? Eh bien, Windows a des pilotes ODBC MySQL 32 bits et 64 bits prêts à l'emploi et la configuration d'un serveur lié est triviale. J'ai beaucoup de serveurs MySQL liés à MS SQL. De plus, la connexion à MS SQL depuis linux / unix n'est pas toujours géniale et vous n'êtes généralement pas en mesure d'utiliser toutes les fonctionnalités. FreeTDS a ses limites; vous pouvez les toucher plus tôt que tard, alors pourquoi ne pas les sauter. Tout cela suppose que vous exécutez MySQL sur * nix. Sinon, cela se rapproche un peu de 50/50, mais je choisirais quand même de tirer de MS SQL car il semble que ce ne soit pas la base de données "en direct", mettant ainsi la charge sur elle pour tout ETL ou traitement est plus idéal. La solution GoldenGate semble intéressante, mais je suis sûr qu'elle n'est pas gratuite.
Étant donné que j'ai configuré ce type de scénario avec des bases de données MySQL et Oracle répliquées vers MS SQL, je vais vous fournir quelques conseils qui ont fonctionné le mieux pour moi:
J'espère que les conseils vous aideront!
La même question a été abordée sur StackOverflow ici: Réplication de MySQL vers MSSQL .
Il semble qu'il existe des solutions de contournement, mais pas une solution très facile.
Je pense que vous devez absolument essayer de créer un package SSIS pour importer les données nécessaires de la base de données MySQL vers la base de données MSSQL. SSIS permet d'importer des données de diverses sources. Ensuite, vous devriez pouvoir planifier le package à l'aide du planificateur de tâches Windows ou des travaux SQL.
Si par réplication vous voulez dire l'envoi de journaux ou quelque chose comme ça, je pense que vous n'avez pas de chance. Cependant, vous pouvez certainement configurer une base de données MySQL en tant que serveur lié et lancer votre propre schéma de réplication. Le plus simple est simplement de faire des instantanés périodiques de toutes les tables en utilisant des instructions tronquer et insérer. Ajoutez de la complexité selon vos besoins.
Vous pouvez utiliser GoldenGate pour MySQL et MS SQL pour ce faire. Il vous suffit d'installer le produit GoldenGate de chaque côté, puis de procéder comme pour une réplication homogène.
Alternativement, pour une réplication "instantané", vous pouvez utiliser un script Python (ou similaire) pour vous connecter simplement aux deux sources de données (en utilisant UnixODBC et FreeTDS pour vous connecter à MS SQL), parcourir les tables en faisant
SELECT
d'un côté, pour chaque ligneINSERT
de l'autre. Comme MSSQL a des transactions et est votre cible, vous pouvez démarrer une transaction,DELETE
tout à partir de toutes les tables, faire la copie, puisCOMMIT
cela apparaîtra instantanément en ce qui concerne les utilisateurs connectés sur la cible, il n'y aura pas d'incohérences (sauf si elles existent sur la source bien sûr).la source