Skip to content

[5.1] Instructions de migration des avis existants vers le stockage optimisé

Anca Luca edited this page Dec 26, 2022 · 10 revisions

Cette page décrit les opérations de migration des avis vers le nouveau stockage optimisé, ajouté dans la version 5.1 (voir #1191 et #1193).

  • prerequis: les tables du nouveau stockage doivent être crées sur le serveur à migrer
  • faire les opérations dans une session utilisant screen ou tmux pour assurer la continuité des exécutions des scripts, quelque soit l'état du client ssh
  • se connecter avec l'utilisateur root
  • copier les scripts du répertoire de code aggregates/migrate sur le serveur à migrer
  • aller dans le répertoire aggregates/migrate
  • créer la table auxiliaire xwoids avec la commande suivante dans le client mysql:
CREATE TABLE xwoids (
month int(6) NOT NULL DEFAULT '0',
xwo_id bigint(20) NOT NULL,
KEY xwoids_month (month)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
  • pour chacune des années du passé, faire les opérations suivantes:
    • exécuter le script migratecreatexwoids.sh avec, en paramètre l'année, par exemple
      $ ./migratecreatexwoids.sh 2018
      • opération longue, résultat à attendre, surveillance avec mytop
    • exécuter le script migratebymonth.sh avec, en paramètre l'année, par exemple
      $ ./migratebymonth.sh 2018
      • opération longue, résultat à attendre, surveillance avec mytop
    • vérifier les données avec le script migratecheckbymonth.sh, par exemple
      $ ./migratecheckbymonth.sh 202112 pour le mois de décembre de l'année 2022
      • le script ne doit pas renvoyer des résultats. Tout résultat affiché est à investiguer comme une erreur de migration.

À cette étape là, le changement du stockage pour la classe Avis.Code.AvisClass doit être mis en place pour activer le nouveau stockage pour tout nouvel avis entrant.

Migration finale du dernier mois (scripts pour données après 25 décembre 2022):

  • exécuter le script migratefinalmonth.sh:
    $ ./migratefinalmonth.sh
  • si besoin, modifier la date dans avis_migrate_finalmonth.sql

Effacement des anciennes données et données temporaires:

  • dans le même répertoire aggregates/migrate et avec le même utilisateur, pour chacune des années du passé:
    • exécuter le script migratedeletebymonth.sh avec, en paramètre l'année, par exemple
      $ ./migratedeletebymonth.sh 2018
      • le script peut être également exécute par mois, en passant en paramètre l'année suivi par le mois, par exemple: $ ./migratedeletebymonth.sh 201807
      • opération longue, résultat à attendre, surveillance avec mytop
  • supprimer la table auxiliaire xwoids avec la commande suivante dans le client mysql:
    drop table xwoids;