Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 05/03/2018 11:15:43
- krashtest31
- Membre
Coupure électrique -> base redémarrée vide :-/
Bonjour à tous,
J'utilise une base PostgreSQL 9.4 comme Data Warehouse (grosses tables dénormalisées, plusieurs millions de lignes, peu de jointures)
Le serveur a 2 CPU Xeon à 2.5 Ghz et 16 Go de RAM. Il tourne sous Ubuntu 14
Le stockage est sur baie de SSD. La taille actuelle de la base est de +/- 100 Go
Après diverses lectures a droite à gauche sur le net, voici le paramétrage actuel de mon postgresql.conf
shared_buffers 3GB
work_mem 512MB
maintenance_work_mem 512MB
temp_buffers 256MB
Effective_cache_size 12GB
Wal_buffers 16MB
Check_point_segment 64
Checkpoint_timeout 30min
Checkpoint_completion_target 0.9
Checkpoint_warning 0
tcp_keepalives_idle 120
tcp_keepalives_interval 60
tcp_keepalives_count 10
synchronous_commit off
Default_statistics_target 400
Enable_seqscan off
Notes :
- les tables sont toutes créées en UNLOGGED
- il y a des indexs partout où cela est nécessaire
- La base est chargée toutes les nuits (7h de traitement), un gros VACUUM FULL + REINDEX + ANALYZE est lancé après l'alimentation.
- Il n'y a que du SELECT en journée
Je réalise des sauvegardes quotidiennes manuellement (via un batch de pg_dump) de certains schémas seulement.
Il y a quelques jours (pendant mes vacances tant qu'on y est), coupure électrique sur le serveur vers 10h le matin ! (pas d'insert/update en journée à ce moment là)
Je vois dans les logs que la base s'est relancée lorsque le serveur a redémarré :
2018-03-01 10:08:25 CET FATAL: le système de bases de données se lance
2018-03-01 10:08:26 CET LOG: le système de bases de données n'a pas été arrêté proprement ; restauration automatique en cours
2018-03-01 10:08:28 CET LOG: les protections contre la réutilisation d'un membre MultiXact sont maintenant activées
2018-03-01 10:08:28 CET LOG: le système de bases de données est prêt pour accepter les connexions
Je constate que la base est vide ! Pourquoi ne garde-t-elle pas les données présentes au moment de la coupure ?
Que signifie la mention "restauration automatique en cours" ? (je ne lui ai rien demandé) ?
Cela a-t-il un lien avec la variable "restart_after_crash=on" du fichier conf ?
Merci de votre aide
Dernière modification par krashtest31 (05/03/2018 12:13:38)
Hors ligne
#2 05/03/2018 12:13:24
- rjuju
- Administrateur
Re : Coupure électrique -> base redémarrée vide :-/
Bonjour,
D'après la documentation https://docs.postgresql.fr/9.6/sql-createtable.html :
UNLOGGED
Si spécifié, la table est créée en tant que table non tracée. Les données écrites dans ce type de table ne sont pas écrites dans les journaux de transactions (voir Chapitre 30, Fiabilité et journaux de transaction), ce qui les rend considérablement plus rapides que les tables ordinaires. Néanmoins, elles ne sont pas sûres en cas d'arrêt brutal : une table non tracée est automatiquement vidée après un arrêt brutal. Le contenu d'une table non tracée n'est pas répliqué vers les serveurs en attente. Tout index créé sur une table non tracée est aussi automatiquement non tracé.
La restauration automatique est nécessaire pour retrouver un état cohérent après un arrêt brutal, car sinon vous n'avez aucune garantie que les modifications soient toujours là.
Julien.
https://rjuju.github.io/
Hors ligne
#3 05/03/2018 12:21:16
- krashtest31
- Membre
Re : Coupure électrique -> base redémarrée vide :-/
Merci pour l'explication, c'est clair et imparable
Je vais repasser en LOGGED les tables qui contiennent des archivages et qui ne sont pas rechargées par le J-1
Dommage pour les perfs
Hors ligne
Pages : 1