J'ai mon serveur de production (ubuntu 13.10) fonctionnant avec postgresql 9.1.
Je veux utiliser quelques fonctionnalités de 9.3, donc je veux mettre à jour.
Quelqu'un pourrait-il m'aider avec la mise à niveau de la version 9.1 vers la version 9.3 afin qu'il y ait un temps d'arrêt de pas plus de 30 minutes. ou alors?
La principale préoccupation est d'éviter une perte de données ou une redondance de fichiers.
postgresql
postgresql-9.1
Ram Kumar
la source
la source
Réponses:
Il existe essentiellement trois façons de mettre à niveau PostgreSQL à partir de différentes versions principales (par exemple, 9.1 à 9.3).
Mise à niveau avec pg_dump
Le premier, et recommandé si possible, est de faire un vidage de l'ancienne version (9.1) en utilisant le binaire de la version la plus récente (9.3) et de le restaurer sur un nouveau cluster créé de la version la plus récente.
Cette approche est, en général, la plus lente, mais aussi la plus réalisable. Une astuce pour accélérer le processus consiste à utiliser la concurrence. Pour effectuer un vidage avec des travaux parallèles, vous pouvez effectuer:
Vous devrez le faire pour chaque base de données que vous avez, ajuster la
--jobs=4
valeur à n'importe quelle valeur (tester certaines valeurs de 2 au nombre de cœurs et voir ce qui donne une meilleure vitesse). De plus, pendant cette phase, personne ne doit être connecté à la base de données, toute modification entraînera un vidage corrompu (en raison de l'option non sécurisée--no-synchronized-snapshots
).Après cela, vous pouvez restaurer votre vidage dans la nouvelle instance en utilisant
pg_restore
:Après cela, il est recommandé d'exécuter
ANALYZE
sur votre base de données:(si vous pouvez vous permettre le temps, exécuter uniquement
--analyze
aussiVACUUM
la base de données et mettre à jour la visibilité MAPS)Mise à niveau avec pg_upgrade
Une autre option consiste à utiliser la contrib
pg_upgrade
. En utilisant la--link
méthode, il fournit un moyen très rapide de mettre à niveau PostgreSQL.Avant de l'utiliser, vous devez faire une sauvegarde de l'ensemble du répertoire de données, car en
--link
mode, si quelque chose ne va pas, vous pouvez perdre les deux données (nouvelles et anciennes). Lisez également l'intégralité de la documentation et en particulier les notes en bas (il existe certaines limitations pour pg_upgrade).MISE À JOUR: Veuillez utiliser l'
--check
option avant d'exécuter la commande définitive. En outre, pour les grandes bases de données, il est recommandé d'exécuter cette commande dans une session d'écran.Mettre à niveau à l'aide d'un outil de réplication basé sur un déclencheur
Une autre option pour mettre à niveau une version consiste à utiliser un outil de réplication basé sur le déclencheur. Comme Slony, Bucardo et Londiste.
C'est l'option qui nécessite le moins de temps d'arrêt possible, mais c'est la plus difficile à travailler.
Pour ce faire, vous devez créer un maître-esclave où le maître est votre version actuelle (9.1) et l'esclave est la nouvelle version (9.3). Vous devez ensuite attendre la première synchronisation (avec le système toujours en production), après cela, vous fermez toutes les personnes connectées à la base de données (le temps d'arrêt commence ici), attendez que l'esclave se rattrape, promouvez-le (l'esclave) à maîtriser et redirige tous les clients / applications vers cette nouvelle version. Et tu as fini.
La documentation de Slony fournit une étape par étape pour mettre à niveau PostgreSQL à l'aide de Slony .
Lequel choisir
Eh bien, comme toujours cela dépend, en reprenant:
J'espère que je pourrais aider. Bonne chance.
la source
pg_dumpall
pour vider toutes les bases de données en une seule fois.Suivez ces étapes pour mettre à niveau PostgreSQL 9.1 vers 9.3:
Créez d'abord un fichier /etc/apt/sources.list.d/pgdg.list avec le contenu suivant pour ubuntu:
Ajouter la clé en cours d'exécution suivante:
Installez les outils de développement avec postgres:
Pour confirmer notre installation, nous allons entrer «sudo pg_lsclusters» et voir nos deux versions de PostgreSQL en cours d'exécution.
Arrêtez le service Postgressql:
Supprimez le cluster 9.3 par défaut créé par l'installation 9.3.
Créez un nouveau cluster 9.3 à partir du cluster 9.1 existant.
Confirmez que le nouveau cluster se charge et que nous exécutons PostgreSQL 9.3.
Si tout fonctionne, passez au cluster 9.1.
pour plus d'informations se référer à ce lien
la source
Cela pourrait être très utile:
https://gist.github.com/ibussieres/11262268
C'est pour 12.04, mais je suppose que c'est assez transférable.
la source