2010-01-22 10 views
2

Je cherche un moyen de "cloner" rapidement une base de données d'un serveur postgresql à un autre.Copie d'un tablespace d'une instance postgresql à une autre

... En supposant

  • I ont un serveur postgresql fonctionnant sur HostA, desservant 2 bases de données
  • I have 2 dispositifs montés sur HostA, chaque dispositif stocke les données pour une base de données de la (soit 1 base de données => 1 tablespace => 1 device)
  • Je suis capable d'obtenir un instantané "sûr" dans le temps grâce à une méthode minutieuse
  • Je suis capable de produire de façon cohérente et en toute sécurité un clone de l'un des 2 appareils utilisés (Je pourrais même supposer que les deux bases de données ne reçoivent jamais de lectures)
  • Les hôtes sont impliqués CentOS 5,4

Est-il possible d'accueillir un deuxième serveur postgresql sur HôteB, monter l'un des appareils clonés et obtenir la base de données correspondant à « pop » dans l'existence? (Un peu comme lorsque vous copiez les fichiers de la table MyISAM dans MySQL).

Si cela est possible, quel est le mécanisme (c'est-à-dire, quel DDL dois-je examiner ou quelles commandes pg)?

Il est important pour moi de pouvoir déplacer des bases de données isolées les unes des autres. Mais si ce n'est pas possible, une approche similaire fonctionnerait-elle au niveau du serveur (en essayant de cloner et réapparaître un serveur en copiant le datadir sur un hôte avec la même installation postgresql)?

+0

En général, c'est possible - je le fais sur Debian Linux. Mais je ne sais pas si la solution est la même pour toutes les plateformes. Quelle plate-forme êtes-vous? –

+0

La plate-forme serait CentOS 5.4 (ajouté à la question) – Sebastian

Répondre

2

Pas facilement, car un certain nombre de fichiers sont partagés entre les bases de données, ce qui signifie que chaque base de données d'une même installation en dépend.

Vous pouvez le faire au niveau du serveur ou au niveau du cluster, mais pas au niveau de la base de données individuelle. Assurez-vous simplement de copier/cloner sur l'ensemble du répertoire de données et tous les espaces de table externes. Tant que vous pouvez créer le clone de façon atomique (soit sur le même système de fichiers ou avec un système capable de faire des clones atomiques sur les systèmes de fichiers), vous n'avez même pas besoin d'arrêter la base de données sur hostA pour le faire.