Re: Connecteur mysql_fdw : problème de "cache"

From: bernard schoenacker <bernard(dot)schoenacker(at)free(dot)fr>
To: Bertrand ROBERT <b(dot)robert(at)kifaisa(dot)com>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Connecteur mysql_fdw : problème de "cache"
Date: 2016-12-14 15:20:31
Message-ID: 20161214162031.0f89e87ad3105d14908bcc9f@free.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

On Wed, 14 Dec 2016 15:20:23 +0100 (CET)
Bertrand ROBERT <b(dot)robert(at)kifaisa(dot)com> wrote:

> Bonjour,
>
> Je travaille sur une potentielle migration de MySQL à PostGreSQL.
> Dans les solutions envisagées, nous regardons du côté du connecteur
> mysql_fdw pour nous aider à migrer en douceur.
>
> Voici mon jeu de test :
> - côté MySQL, j'ai une table "matable" qui contient deux colonnes
> (monid, mavaleur) et des données toutes simples : '1', '2.129'
> '2', '2.129'
> '3', '2.129'
> etc
>
> - côté PostGreSQL, j'ai créé une foreign table de "matable" et
> j'arrive bien à interagir dessus (select, insert, update, delete)
> depuis PostGreSQL
>
> Si je réalise les opérations suivantes :
> - je me connecte à PostGreSQL avec psql
>
> - je lance un "select * from matable;" depuis PostGreSQL :
> => la connexion s’établit sur MySQL et j'ai bien la liste des lignes
> qui se trouvent dans "matable" de MySQL => je maintiens cette
> connexion PostGreSQL ouverte '1', '2.129'
> '2', '2.129'
> '3', '2.129'
> etc
>
> - je lance un "update matable set mavaleur = '3.229';" depuis MySQL
> et je vérifie les valeurs côtés MySQL : '1', '3.129'
> '2', '3.129'
> '3', '3.129'
> etc
>
> - je relance la lecture depuis PostGreSQL avec la même connexion
> qu'au début : '1', '2.129'
> '2', '2.129'
> '3', '2.129'
> etc
>
> => PostGreSQL ne voit pas les nouvelles valeurs
>
> Après analyse, j'ai découvert :
> - que la connexion établit de PostGreSQL vers MySQL ressemble à du
> persistent : elle reste ouverte tant que la console psql est ouverte
> ou pendant X secondes
> - que le même update lancé depuis PostGreSQL sur la table MySQL
> permettait à PostGreSQL de voir les bonnes valeurs avec un select
> (3.129)
> - quelque soit le moyen utilisé, si la connexion de PostGreSQL à
> MySQL est une nouvelle connexion, les données affichées seront les
> bonnes (3.129)
>
> Pour forcer la connexion de PostGreSQL à MySQL, plusieurs moyens :
> - rouvrir une connexion à PostGreSQL en parallèle ou en fermant la
> connexion d'origine
> - redémarrant MySQL
> - redémarrant PostGreSQL
> - attendant X secondes que la connexion de PostGreSQL vers MySQL
> tombe en timeout
>
> J'ai cherché dans le peu de documentation du connecteur et je n'ai
> pas l'impression qu'il soit possible de désactiver le côté
> "persistant" de la connexion PostGreSQL -> MySQL mais j'ai peut être
> loupé quelque chose.
>
> J'ai donc plusieurs questions :
> - est-ce que quelqu'un sait s'il est possible de désactiver ce côté
> persistant / faire tomber le timeout à 0 ?
> - quelle est la valeur de ce timeout ?
> - est-ce qu'il est possible de demander à PostGreSQL à ne pas
> utiliser ce qui ressemble à du "cache" ?
>
> J'en profite pour poser une autre question.
> J'ai remarqué qu'une transaction côté PostGreSQL n'était pas gérée
> côté MySQL. Si je démarre une transaction sur PostGreSQL, que je fais
> deux updates (un dans une foreign table MySQL, un dans une table
> native PostGreSQL) et que je rollback :
> - l'update est annulé sur la table native PostGreSQL
> - l'update est commité sur la table MySQL
>
> J'ai essayé de jouer avec autocommit des deux côtés mais rien y fait
> et il semble que la gestion des transactions ne soient pas intégrée
> aux connecteurs FDW. La question est donc : est-ce que quelqu'un sait
> s'il est prévu de gérer les transactions dans une future version de
> PostGreSQL et, si oui, dans laquelle ?
>
> Je vous remercie d'avance et vous souhaite une bonne journée.
>
> Cordialement,
> Bertrand ROBERT
>
bonjour,

il existe plusieures manières de migrer les tables de MySQL vers
PostgreSQL :

https://en.wikibooks.org/wiki/Converting_MySQL_to_PostgreSQL

https://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL#MySQL

en passant par ruby :

https://t37.net/comment-convertir-une-base-de-donnees-mysql-vers-postgresql-pour-les-manchots.html

petit topo linuxfr :

https://linuxfr.org/forums/programmation-sql/posts/migrer-de-mysql-vers-prostgre

liste des paquets nécessaires :

cl-pgloader - extract, transform and load data into PostgreSQL
pgloader - extract, transform and load data into PostgreSQL

slt
bernard

--
bernard schoenacker <bernard(dot)schoenacker(at)free(dot)fr>

--
Envoi via la liste pgsql-fr-generale (pgsql-fr-generale(at)postgresql(dot)org)

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Bertrand ROBERT 2016-12-14 15:31:01 Re: Connecteur mysql_fdw : problème de "cache"
Previous Message Bertrand ROBERT 2016-12-14 14:20:23 Connecteur mysql_fdw : problème de "cache"