J'ai configuré cron pour appeler pg_dump quotidiennement en utilisant la règle suivante:
# xyz database backups:
00 01 * * * root umask 077 && pg_dump --user=xyz_system xyz | gzip > /var/xyz/backup/db/xyz/`date -u +\%Y\%m\%dT\%H\%M\%S`.gz
Fondamentalement, cela fonctionne. La base de données se développe relativement rapidement et de façon exponentielle (cependant l'exposant n'est pas très grand). Actuellement, le vidage compressé prend environ 160 Mo. Lorsque la base de données est vidée, le système commence à analyser. La moyenne de charge que j'ai vue en utilisant la top
commande était d'environ 200, 200, 180
. Fondamentalement, le serveur est à peine réactif.
La première question est de savoir comment déterminer où se trouve le goulot d'étranglement. Les mauvaises performances sont-elles causées par de lourdes opérations d'E / S? Est-ce dû à des problèmes de verrouillage de table? C'est peut-être un problème de mémoire? La sortie de la pg_dump
commande est dirigée vers la gzip
commande. Est-ce séquentiel, c'est-à-dire que le vidage entier est placé dans la mémoire (problème de permutation?) Puis compressé ou simultané (c'est-à-dire que gzip compresse ce qu'il obtient et attend plus)? Peut-elle être causée par un autre facteur?
La deuxième question est de savoir comment rendre l'opération de dumping moins intrusive pour les principales fonctions du système. Pour autant que je comprends les choses, le vidage ne peut pas prendre trop de temps en raison de l'intégrité de la base de données. Il existe des verrous d'écriture de table, etc. Que puis-je faire pour limiter les problèmes (ou les retarder, compte tenu de la croissance de la base de données).
La troisième question : Est - il déjà temps d'apprendre sur les configurations de base de données plus avancées? Le système fonctionne bien, lorsque les sauvegardes de base de données ne sont pas effectuées, mais peut-être que le problème de vidage de la base de données est un premier symptôme de problèmes entrants?
la source
pg_dump
100% CPU et c'était de gzip. La spécification l'apg_dump --compress=0
résolu pour moi sur Ubuntu 16.04. Les sauvegardes étaient super rapides après cela aussi. Attention à la compression gzip dans les conteneurs; pourrait ne pas faire ce que vous attendez.Je vous recommande de regarder l'archivage continu de postgresql. Voici les avantages par rapport à l'utilisation de pg_dump:
Cependant, il y a quelques inconvénients (qui pourraient ne pas être un problème dans la plupart des cas):
la source