Postgresql adatbázist szeretnék megbízhatóan menteni, de nem tökéletes.
Jelenleg a mentéshez a
su - postgres -c "pg_dump -Fc -f $dump_file_name $db"
parancsot használom, visszatöltéshez pedig a
su postgres -c "pg_restore -d $db $dump_file_name"
Azonban ha így csinálom, akkor csak üres adatbázis esetén állítja vissza jól az adatokat. Ha már egyszer visszatöltöttem, és utána újra próbálkozom, akkor már hibát generál. Olyankor a visszatöltés előtt ki kell adnom még a
su postgres -c "dropdb $db"
su postgres -c "createdb $db -O $dbuser"
parancsokat, hogy rendben megtörténjen a visszatöltés.
Szeretnék úgy menteni, hogy egyetlen paranccsal tudjak visszaállítani, függetlenül attól, hogy üres-e az adatbázis előtte, vagy sem.
Próbáltam a -c és a -C kapcsolók minden variációját a pg_restore parancsnál, de egyik sem segített.
Mi a korrekt módja a postgresql adatbázisok mentésének és visszatöltésének?
- 150 megtekintés
Hozzászólások
Milyen hibát kapsz a -c-re?
- A hozzászóláshoz be kell jelentkezni
Pontosítottam a leírást, mivel a -c és -C kapcsolókat csak a pg_restore parancsnál használtam.
A -c esetén semmit, csak nem az adatbázist használó program futásánál keletkeznek hibák, most pontosan nem emlékszem, de valami olyan, hogy nem tudja elérni az adott adatot.
A -C esetén pedig
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 185; 1259 66723 TABLE *** ***
pg_restore: [archiver (db)] could not execute query: ERROR: relation "***" already exists
- A hozzászóláshoz be kell jelentkezni
Ha kiadsz egy ilyet:
su - postgres -c "pg_dump -Fc -c -C -f $dump_file_name $db"
A scripted elejere odakerul a drop es a create?
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Ha a pg_dump parancs után teszem a -c -C paramétereket is, akkor 150 bájttal nagyobb dumpot kapok, de mindkét dumpban benne van a DROP DATABASE és CREATE DATABASE is.
Hogy mi a különbség a két dump között, azt nem tudom, mert nagyon csúnya formátumú.
A lényeg azonban, hogy ha az új módon mentett adatbázist töltöm vissza, akkor is pont ugyanúgy viselkedik, mint a régi módon mentettel.
- A hozzászóláshoz be kell jelentkezni