wiki:UpgradeDBD

Come aggiornare da un repository su BDB 4.2 a FSFS

Il problema si pone se trasferite i vostri dati da una macchina che usa una versione di Subversion basata su BDB 4.2 (come la 1.1 che c'è su Debian Sarge) ad una versione basata su BDB 4.3 (come la 1.3 che c'è su Ubuntu Dapper). In questo caso il problema è l'incompatibilità del formato dei log di BDB che rende inutilizzabili i dati a svnadmin.

Le FAQ di subversion consigliano di procurarsi una versione di svnadmin collegata a BDB 4.2, in realtà è sufficiente avere i programmi di amministrazione per BDB 4.2, senza doversi andare a cercare una binario da un'altra macchina o distribuzione. La procedura da seguire è la seguente, che prevede di passare direttamente a FSFS (non si prenderà neanche in considerazione di usare BDB 4.3).

Il primo passo è assicurarsi che non vi siano accessi a Subversion (neanche in lettura) durante le operazioni, pena il rischio di corrompere il database dei dati. Pertanto si fermi Apache o qualunque altro servizio che possa accedere al repository e ci si assicuri che nessuno ci stia lavorando sopra direttamente; nei casi piu` comuni basta fermare Apache.

I passi successivi sono i seguenti, che prevedono in sequenza la creazione di una copia di sicurezza, il checkpointing del DB che inserisce i dati dispersi nei file di log, la ricostruzione del DB, che rende il tutto leggibile da BDB 4.3, e poi l'utilizzo classico di svnadmin per eseguire un dump, creare un nuovo repository, e caricarlo coi contenuti del dump:

cp -a /var/svn/repo /var/svn/repo_copy
db4.2_checkpoint -1 -h /var/svn/repo/db
db4.2_recover -h /var/svn/repo/db
svnadmin dump repo  > /var/backup/repo.dump
mv repo repo_old
svnadmin create /var/svn/repo
svnadmin load /var/svn/repo < /var/backup/repo.dump

Si noti che si è usato svnadmin create senza specificare tipo di repository, il default con la 1.3 infatti è FSFS; una volta compiuti questi passi si potrà verificare il corretto funzionamento dell'accesso al repository, e poi cancellare le copie ormai inutili.

Last modified 11 years ago Last modified on Jul 18, 2007, 11:08:07 AM