Utilisation de WalMiner dans la base de données KingbaseES

Contraintes et limitations de WalMiner

  • L'outil WalMiner doit être utilisé par un superutilisateur de la base de données.
  • La base de données doit fonctionner correctement.
  • Le paramètre full_page_writes doit être activé.
  • Disposer de journaux WAL complets et continus.
  • Pouvoir exporter un dictionnaire de données utilisable.
  • Pendant l'analyse, le dictionnaire de données requis par les journaux ne doit pas avoir changé.
  • L'analyse des instructions DDL n'est pas prise en charge.
  • Si les fichiers journaux ou les fichiers d'historique sont endommagés, il est possible que les données ne puissent pas être extraites.

1. Création de l'extension

Installez l'extension walminer dans la base de données cible.

mydb=> CREATE EXTENSION walminer;
CREATE EXTENSION

2. Ajout des journaux

Lors de l'ajout de journaux, vous pouvez ajouter un dossier ou un fichier, et ajouter plusieurs répertoires différents. WalMiner trie et déduplique automatiquement les fichiers en fonction de leur nom. Par exemple, vous pouvez ajouter simultanément le répertoire des journaux en ligne et celui des journaux archivés. Si le fichier ajouté n'est pas un journal WAL, une erreur est signalée.

Exemple : ajout des journaux des répertoires sys_wal et d'archivage.

mydb=# SELECT walminer_wal_add('sys_wal');
 walminer_wal_add
-------------------
 5 file add success
(1 row)

mydb=# SELECT walminer_wal_add('/Kingbase/arch');
 walminer_wal_add
-------------------
 3 file add success
(1 row)

3. Affichage de la liste des journaux

mydb=# SELECT walminer_wal_list();
                                         walminer_wal_list                                          
-----------------------------------------------------------------------------------------------------
 (/Kingbase/arch/00000001000000000000000A)
 (/Kingbase/arch/00000001000000000000000B)
 (/Kingbase/arch/00000001000000000000000C)
 (/Kingbase/ES/V9/data/sys_wal/00000001000000000000000D)
 (/Kingbase/ES/V9/data/sys_wal/00000001000000000000000E)
 (/Kingbase/ES/V9/data/sys_wal/00000001000000000000000F)
 (/Kingbase/ES/V9/data/sys_wal/000000010000000000000010)
 (/Kingbase/ES/V9/data/sys_wal/000000010000000000000011)
(8 rows)

Pour supprimer un journal déjà ajouté, vous pouvez supprimer un fichier individuel ou un dossier. La commande peut être exécutée plusieurs fois.

SELECT walminer_wal_remove('sys_wal/000000010000000000000011');  -- supprime un fichier
SELECT walminer_wal_remove('sys_wal');                           -- supprime tout le dossier

4. Analyse des données

4.1 Analyse générale

walminer_all analyse tous les journaux WAL ajoutés. Si aucun journal n'a été ajouté, il analyse ceux du répertoire data/sys_wal. L'analyse s'arrête en cas d'erreur ou de discontinuité.

mydb=# SELECT walminer_all();
    walminer_all
-------------------
 sys_miner success
(1 row)

4.2 Analyse par intervalle de temps

Recherche les enregistrements WAL correspondant à une plage horaire parmi les journaux ajoutés.

SELECT walminer_by_time('2026-01-08 15:30', '2026-01-08 16:10:00');

Si l'heure de début est nulle, l'analyse commence au premier LSN du premier journal de la liste.

4.3 Analyse par intervalle de LSN

Recherche les enregistrements correspondant à une plage de LSN.

SELECT walminer_by_lsn('0/010000A0', '0/016E6578');

4.4 Analyse d'une seule table

-- heure/LSN de début et de fin, analyse précise (booléen), OID de la table. L'analyse précise doit être spécifiée.

SELECT walminer_by_time('2026-01-08 15:30', '2026-01-08 16:10:00', 'false', 16452);

Après l'analyse, les fichiers intermédiaires, les journaux WAL ajoutés et le dictionnaire de données importé sont automatiquement supprimés.

5. Visualisation des résultats d'analyse

mydb=# SELECT * FROM walminer_contents;

Résultat de la table walminer_contents

Description des champs de la table walminer_contents :

Nom du champ Type Description
sqlno integer Numéro de l'instruction SQL dans la transaction
xid bigint Identifiant de la transaction courante
topxid bigint Identifiant de la transaction parente
sqlkind integer Type d'instruction SQL (INSERT/DELETE/UPDATE)
minerd boolean Indique si l'analyse a réussi
timestamp timestamp with time zone Horodatage de la validation de la transaction
op_text text Instruction REDO
undo_text text Instruction UNDO
complete boolean Transaction terminée ou non
schema text Nom du schéma
relation text Nom de la table
start_lsn sys_lsn LSN de début de transaction
commit_lsn sys_lsn LSN de validation de la transaction

Enfin, terminez l'analyse en libérant les ressources :

mydb=# SELECT walminer_stop();
   walminer_stop
--------------------
 walminer stoped!
(1 row)

6. Libération de la mémoire et des ressources temporaires

La commande walminer_stop() nettoie les fichiers intermédiaires générés lors de l'aanlyse.

7. Analyse des journaux WAL d'une autre base de données

L'analyse des juornaux d'une autre base ne prend pas en charge les types de données personnalisés. Si le journal d'une autre base contient un type personnalisé inexistant dans la base locale, l'analyse échouera.

7.1 Exportation du dictionnaire de données depuis une autre base

-- Exporter le dictionnaire de données
kingbase=# SELECT walminer_build_dictionary('/kingbase/dict');
 walminer_build_dictionary
---------------------------
 Dictionary build success!
(1 row)

Le fichier exporté s'appelle 'dictionary.d' :

[kingbase@opengaussdb Kingbase]$ ll /Kingbase/dict
total 1292
-rw------- 1 kingbase kingbase 1322744 Jan  8 14:42 dictionary.d

7.2 Importation du dictionnaire de données d'une autre base

-- Importer le dictionnaire de données
kingbase=# SELECT walminer_load_dictionary('/kingbase/dict');
 walminer_load_dictionary
--------------------------
 Dictionary load success!
(1 row)

Pour analyser les journaux WAL d'une autre base, suivez les étapes des sections 1 à 6 après avoir exporté et importé le dictionnaire (étapes 7.1 et 7.2 ci-dessus).

Résumé

Walminer est un outil puissant pour analyser et examiner les fichiers journaux WAL d'une base de données, permettant d'extraire des informations utiles sur les transactions et les opérations de données. Que ce soit pour la reprise après sniistre, le contrôle de version des données ou l'analyse de données, l'interface Walminer constitue un outil robuste.

Étiquettes: KingbaseES WalMiner WAL analyse de journaux base de données

Publié le 19 juin à 16h24