2008-11-14 7 views
0

Je souhaite automatiser les tests sur mon application Web et utilise postgresql. Est-ce que quelqu'un sait comment définir un point de restauration sur une base de données postgresql et restaurer à un état antérieur? J'ai entendu quelque chose à propos de la récupération dans le temps, mais je ne sais pas si c'est ce dont j'ai besoin.Automatisation de test avec application connectée postgresql

Merci à l'avance

Répondre

0

Tout d'abord, ne le faites pas sur votre base de données de production.

La bonne façon (tm) est d'utiliser les transactions pour ce qu'elles valent. Dans postgres, vous pouvez même les imbriquer en utilisant des points de sauvegarde (que vous pouvez faire une restauration).

test=# create table foo (foo_id serial primary key, bar varchar); 
NOTICE: CREATE TABLE will create implicit sequence "foo_foo_id_seq" for serial column "foo.foo_id" 
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "foo_pkey" for table "foo" 
CREATE TABLE 
test=# begin; insert into foo (bar) values ('test'); 
BEGIN 
INSERT 0 1 
test=# savepoint sp1; 
SAVEPOINT 
test=# insert into foo (foo_id, bar) values (1, 'test'); 
ERROR: duplicate key value violates unique constraint "foo_pkey" 
test=# rollback to sp1; 
ROLLBACK 
test=# select * from foo; 
foo_id | bar 
--------+------ 
     1 | test 
test=# -- note that you're still in a transaction 

Si cela ne convient pas (en raison de contraintes de logiciels ou d'autres raisons), vous pouvez toujours garder plusieurs décharges de votre base de données dans les fichiers que vous pouvez facilement restaurer; et/ou avoir un script qui sauvegarde automatiquement votre base de données de production dans une base de données de test locale. En outre, n'oubliez pas de garder vos changements de schéma dans le contrôle de version (ou un minimum de quelques fichiers .sql); facilite la mise à jour de votre base de données de production après avoir développé quelque chose de nouveau en utilisant votre base de données de test. PITR est principalement destiné à des fins de secours/sauvegarde à chaud.

+0

C'est ce que je voulais, mais peut-être pas ce dont j'ai besoin, parce que mon application utilise Hibernate pour se connecter à la base de données. Merci. – Danmaxis

0

PITR est destiné à l'scénarios de sauvegarde en ligne, il est destiné à créer des sauvegardes sans perturber les opérations et être alors en mesure de récupérer les données en cas de catastrophe, et non pour les applications de test. La récupération des données n'est pas en ligne et c'est plutôt complexe. Je pense que la meilleure façon de tester est d'avoir une base de données que vous pouvez facilement déplacer et restaurer à partir d'une sauvegarde standard et vous pouvez ensuite répéter les tests en utilisant des scripts de sauvegarde/restauration standard dans l'automatisation. A défaut, une autre façon de tester est d'utiliser les transactions. Chaque test que vous effectuerez sera enveloppé dans une transaction que vous annulez après l'exécution du test.

BEGIN; 
SELECT ... 
INSERT ... 
UPDATE ... 
DELETE ... 

<Here go queries to check if everything is alright, setting the test result> 
ROLLBACK 
+0

Oui, j'essaie ça. Le DBA m'a dit que la restauration du même fichier de vidage est assez simple et rapide. Merci. – Danmaxis

+0

S'il n'y a aucun moyen de définir un point de restauration (comme oracle) sur postgresql, je vais chercher votre réponse. – Danmaxis

Questions connexes