Sélectionner une page

Chez Octopuce il arrive fréquement que l’on aide des clients à migrer d’un hébergement externe vers chez nous. Cela passe le plus souvent par une refonte ou à défaut une réflexion de base sur les choix architecturaux effectués dans le passé pour le service concerné.

Ici nous avons récupéré un client qui utilisait EtherPad, une application de prise de note collaborative. Leur etherpad était basé sur Postgresql, et après réflexion, il a été décidé de le remplacer par un serveur Redis, un serveur de clé-valeur plus adapté à Etherpad.

Cependant, il fallait bien réimporter les données des pads passés de la base Postgres dans la base Redis. Pour cela, on a écrit un petit utilitaire en PHP-CLI que l’on vous soumet pour utilisation libre ci-dessous.

Il faut, pour l’utiliser, configurer 2 lignes : la ligne New PDO() qui contient la chaîne de connexion à votre base Postgresql (voir la documentation ici) et la ligne « connect » du Redis qui contient la chaîne de connexion à votre Redis.

Ensuite, lancez votre programme et ce dernier transfère l’intégralité des données de vos Pads de Postgresql à Redis. Vous pouvez ensuite vérifier que vos pads sont bien arrivés en allant voir l’adresse web d’un d’entre eux !

Notez la simplicité du code : cela marchera aussi bien avec une base MySQL ou entre une base MySQL et une base Postgresql !

<?php

$source = new PDO("pgsql:host=serveur-postgresql;port=5432;dbname=etherpad;user=pad;password=superdur");

$destination = new Redis();
$destination->connect('127.0.0.1', 6379);

$cursor = $source->prepare("SELECT * FROM store;" , [PDO::ATTR_CURSOR=>PDO::CURSOR_SCROLL] );
$cursor->execute();

while ($result = $cursor->fetch(PDO::FETCH_ASSOC)) {
    $destination->set($result["key"],$result["value"]);
    echo ".";
    $i++;
    if ($i%100==0) echo " $i\n";
}