Je cherche un moyen de vérifier mes sauvegardes de base de données de manière plus ou moins automatique. Pour l'instant j'utilise la réplication (postgresql mais peu importe), j'écris dans des données spécifiques dans les bases sources et je vérifie que la base répliquée contient bien ces données.
Ce que j'aimerai maintenant c'est pouvoir contrôler si mes données évoluent bien régulièrement. Par exemple sur une base de facturation, si j'ai environ 10 commandes par jour en moyenne je voudrai pouvoir signaler une anomalie si je n'ai aucune commande ou si j'ai 100 commandes… Le tout de manière automatique car j'ai beaucoup de bases…
J'ai pensé faire un script qui enregistre pour chaque table de chaque bases l'évolution du nombre d'enregistrement. Par exemple lundi +10 commandes mardi +8 mercredi +12, faire la moyenne, +10 et si j'ai un jour un trop gros écart avec la moyenne je lance une alerte. Problème, le we il n'y a jamais de commande… Je vais donc faire des moyennes par rapport aux jour de la semaine.
edit: je rajoute un cas, j'ai des données qui évoluent plutôt par mois, des payes par ex…
Est-ce qu'il existe déjà des solutions à ce problème ? Des idées ?
Merci !
# Réplication != sauvegarde
Posté par ze_farf . Évalué à 2.
Bonjour,
Juste une petite remarque, mettre en place une réplication de base est différent d'avoir une sauvegarde pour cette base.
En cas de corruption de données etc seuls des backups (à chaud, froid au choix) te permettront de remettre tes données dans un état correct.
[^] # Re: Réplication != sauvegarde
Posté par wilk . Évalué à 2.
Effectivement j'ai mélangé les deux sujets. Ce que je voulais surtout dire c'est qu'il ne suffit pas de répliquer ou sauvegarder, il faut également vérifier la cohérence des données. Je pourrais aussi m'occuper de la cohérence des données sans réplication ni backup mais généralement ça va ensemble c'est tout.
[^] # Re: Réplication != sauvegarde
Posté par NeoX . Évalué à 4.
et tu ne t'es pas demandé si l'outil de replication ne faisait deja pas ce travail,
en te renvoyant une erreur si la replication a echoué ?
et si elle a reussi c'est qu'il y a coherence entre la source et la destination ?
# Monitoring?
Posté par eMerzh (site web personnel) . Évalué à 3.
Pourquoi ne pas partir sur une solution de monitoring comme nagios avec un http://bucardo.org/wiki/Check_postgres (et une requête custom_query ) ?
[^] # Re: Monitoring?
Posté par wilk . Évalué à -1.
Monitoring, j'ai déjà…
Non, ce que je veux maintenant c'est m'assurer de la cohérence des données en elles-mêmes. C'est plus en cas de problème de l'application que du moteur de base de données.
Ce qui m'est arrivé par exemple c'est de déplacer une base sur un autre cluster et de continuer à sauvegarder l'ancien cluster. Ainsi je n'avais aucun problème de sauvegarde mais la base en question n'évoluait plus bien sûr. Je cherche donc un moyen de vérifier automatiquement que telle table de telle base continue à progresser comme d'habitude, que j'ai bien une moyenne de 10 commandes par jour sauf le we et que j'ai bien x bulletins de paye tous les mois etc… Ainsi je suis sûr que 1. je sauvegarde bien la bonne base et que 2. l'application fonctionne comme d'hab.
[^] # Re: Monitoring?
Posté par eMerzh (site web personnel) . Évalué à 3.
oui, je vois pas le problème…
le check_postres à une option custom sql je pense ,
qui te permet de faire une requete de ton choix …. après
tu fais un truc select count(id) from mes_commandes where com_dates = now()
et si c'est entre X et Y tu lance une alert et si c'est 0 beh c'est critical :)
# script bash
Posté par ilip . Évalué à 2.
bonjour
un script shell lancé periodiquement par cron avec des commandes SQL (psql) ferait l affaire ?
# faire confiance à l'outil ?
Posté par NeoX . Évalué à 2.
et l'outil de replication, il ne te sort pas une erreur s'il n'arrive pas à faire la synchro ?
normalement c'est à lui de s'assurer que la replication s'est bien faite, et c'est à lui de te signaler que ca c'est bien passé.
# Pour le monitoring fonctionnel
Posté par Marotte ⛧ . Évalué à 2.
Une base pg qui se rempli en comptant les inserts des tables des autres bases, qui fait des moyennes à intervalle régulier (paramétrable). Et hop tu n'as plus qu'a surveiller cette base.
table;count_every;last;last_time;current;current_time;average;average_since_time;average_diff_alert_value;bool_alert
un script pour l'updater et un autre pour envoyer un mail ou autre sur alerte et c'est bon. tapuka.
[^] # Re: Pour le monitoring fonctionnel
Posté par wilk . Évalué à 1.
C'est ce que je voudrais faire, mais il me reste un problème avec les tables qui n'évoluent pas de la même manière suivant le jour de la semaine, voir du mois.
[^] # Re: Pour le monitoring fonctionnel
Posté par Kerro . Évalué à 4.
Tu feras comment le jour où il y aura une grève ? Tu feras comment le jour où le logiciel change et que les tables ne sont plus impactées pareil ? Etc.
Tu peux tortiller ça dans tous les sens, il te faut écrire les tests à la mimine.
[^] # Re: Pour le monitoring fonctionnel
Posté par wilk . Évalué à 1.
Si j'ai une alerte le jour où il y a une grève c'est pas grave, ça me permettra de vérifier que le système fonctionne… Le tout c'est de ne pas avoir une alerte tous les dimanches par ex.
[^] # Re: Pour le monitoring fonctionnel
Posté par NeoX . Évalué à 2.
suffit de ne pas lancer ton script le dimanche matin, et le lundi matin
c'est exactement ce que je fais avec mes backups :
des incrementaux les nuits de semaines :
- la nuit de lundi à mardi : activité du lundi
- la nuit de mardi à mercredi : activité du mardi
…
- la nuit de vendredi à samedi : activité du vendredi
et la nuit de samedi à dimanche : backup complet.
pas de backup la nuit de dimanche à lundi car pas d'activités.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.