Sziasztok,
a következő a problémám: Van egy program, ami PostgreSQL-t használ adatok tárolására. Windows 7-en futott, PostgreSQL 9.2. Egy ismerősöm újra akarta rakni a windowst, ezért lemásolta a postgreSQL data könyvtárát backup-nak, majd újratelepítette a windows-t meg a PostgreSQL-t. Rámásolta a lementett data könyvtárat az új install-ra. A probléma az, hogy most az új windows-on a PostgreSQL látja, hogy ott van az adatbázis, de nem látja a táblákat :)
Mint utóbb kiderült, úgy mentette le a data könyvtárat, hogy nem állította le a PostgreSQL server-t :) Van arra valami mód, hogy vissza tudjuk állítani az adatokat? Magának az adatnak ott kell lennie, mert kb 32 Gb foglal :)
Előre is köszi.
- 4665 megtekintés
Hozzászólások
Logba mi kerül?
- A hozzászóláshoz be kell jelentkezni
Hello,
most leállítottam a postgres-t és újra elindítottam. A windows-os event log-ban szerintem ez az egy releváns sor van:
2013-12-16 22:20:56 CETLOG: corrupted pgstat.stat file
Az az igazság, hogy én nem értek hozzá, úgyhogy sokat nem mond nekem :)
- A hozzászóláshoz be kell jelentkezni
Csak egy vad ottlet: A data konyvtaron, jobb click, Properties, Security, Advanced, Owner, Edit, csereld at a tulajdonost arra az account-ra amely a postgresql service-t futtatja (replace owner on subdirtectories and objects: yes). Mivel uj telepites (windows es uj az account is) a SID mas lesz meg akkor is ha az account nev megegyezik, ezert lehet, hogy siman nincs joga irni a konyvtar tartalmat. Ha szerencsed van es minden file epen maradt (ertsd nincs "torn page", vagy hasonlo), akkor meg akar mukodhet is. Nem tudom hogy van-e valami DB konzisztencia ellenorzes PostgreSQL-en, ha van, akkor futtasd.
FYI: Nem vagyok expert PostgreSQL temaban.
- A hozzászóláshoz be kell jelentkezni
Szia,
probáltam de nem vált be.
Egyéb ötlet?
- A hozzászóláshoz be kell jelentkezni
ha a masok altal javasoltak nem segitenek akkor esetleg megprobalhatod torolni a file-t, ahogy a lenti idezet mondja, csak legyen rola egy masolat.
Nem tudom, hogy a file mit szolgal, de itt (http://www.postgresql.org/message-id/50378E29.2000704@timbira.com) ezt talaltam, az utolso mondat erdekes (ugy tudom ebbol a filebol ketto is lehet ket kulon konyvtarban):
> Maybe this is a bug.
> if stats collector process don't product pg_stat_tmp/pgstat.stat file, the
> autovacuum launcher process will output those WARNING message?
>
It is possible but... Did you see any ERROR message(s) related to statistics
collector before those ones? To solver your problem, you can remove the
pgstat.stat file that it will be created again next time server starts. Of
course, you will loose the statistics, hence remember to VACUUM ANALYZE your
cluster.
- A hozzászóláshoz be kell jelentkezni
Ugyan azt a verziójú PostgreSQL telepítse fel, utána másolja be.
Így nekem már sikerült bsd-n. Fontos a verzió és arhitectura egyezzen, utána pg_dump/pg_restore
- A hozzászóláshoz be kell jelentkezni
Lehet az a probléma, hogy az előző windows 32 bites volt, az új pedig 64?
- A hozzászóláshoz be kell jelentkezni
32bites pg tegyen fel+verzió egyezzen, és szerintem menni fog.
- A hozzászóláshoz be kell jelentkezni
+1
Ennyire mélyen nem ismerem a postgres lelkivilágát, de bőven elképzelhető hogy a file-okba itt ott memória blokkokat ír ki, aminél bizony előfordul, hogy a rendszer adottságai miatt align/padding van (bizonyos memória területeket a helyükre illeszt azért hogy pl. egy integer ne szóhatáron legyen). Próbálja ki 32 biten
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Semmikepp ne keverje az arch-ot.
- A hozzászóláshoz be kell jelentkezni
Mint utóbb kiderült, úgy mentette le a data könyvtárat, hogy nem állította le a PostgreSQL server-t :)
Az meg a kisebbik baj, a nagyobbik, hogy nem pg_dump(all)-t hasznalt. Ez a fajlmasolosdi max SQLite-nal lenne elfogadhato, bar ott se ez a javasolt modszer.
- A hozzászóláshoz be kell jelentkezni
Ez igy nem teljesen allja meg a helyet. Valos backup megoldas a fajl szintu tarolas, masolas. Termeszetesen a dokumentacio elolvasasa es abban foglaltak betartasa utan.
Reszletek itt:
http://www.postgresql.org/docs/9.3/static/backup-file.html
- A hozzászóláshoz be kell jelentkezni
Ha fajlokkal szeretnek szenvedni, akkor fajlokban tarolnam, nem adatbazisban. A fajlok basztatasa felhoz(hat) egy csomo problemat, amivel amugy nem kene veszodni. Szoval igen, lehet ilyet is, csak minek.
- A hozzászóláshoz be kell jelentkezni
De hát az adatbázis fájlokban van!
Azért érdekelne a csomó problémából egy-két darab. Nem szégyen tanulni.
- A hozzászóláshoz be kell jelentkezni
Hat ez a topik kapasbol egy pelda. Es igen, tudom, hogy nem farol szedi az adatokat a db sem...
- A hozzászóláshoz be kell jelentkezni
Ha fajlokkal szeretnek szenvedni, akkor fajlokban tarolnam, nem adatbazisban -> File-ban tarolod tovabbra is, strukturaltan, amit egy interface-en keresztul ersz el. Ha nem tudod mit beszelsz, inkabb meg se szolalj, toled folyamatosan az ilyen baromsagok omlenek
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Thank you, Captain Obvious. Akkor most talan gondolkozz el azon, hogy mi az az absztrakcio.
- A hozzászóláshoz be kell jelentkezni
Ohh, hidd el, tudom mi az, eljen a full sql dump! (ja, hogy addig lock van, ugyan mar, mit szamit az egy masfel oras idotartamra, idiota)
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Elegge meglepne, ha a pg_dump lockolna az adatbazis a dump idejere. Gondolom lockol sok kicsit.
Arrol meg nem is beszelve, hogy ha valaki ujra akarja rakni a szervert, akkor egyertelmu, hogy belefer a lock elotte.
- A hozzászóláshoz be kell jelentkezni
meg fogsz lepodni, de lockol. Database-t nem, tablakat igen, reszlegesen, de bizonyos esetben a konzisztencia megorzese erdekeben kenytelen vagy teljes write lockot alkalmazni. Ennel egyszerubb snapshotot vegezni es csak a deltakat elmozgatni ha rendszeres backup kell (meg ugy egyebkent is), vagy mar helybol replikalsz. A ki dump be dump nem jo moka bizonyos meret felett
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Elegge meglepne, ha a pg_dump lockolna az adatbazis a dump idejere. Gondolom lockol sok kicsit.
Arrol meg nem is beszelve, hogy ha valaki ujra akarja rakni a szervert, akkor egyertelmu, hogy belefer a lock elotte.
- A hozzászóláshoz be kell jelentkezni
ha fileonkent mented a 32GB -s vagy nagyobb adatbazisodat, akkor
a, serul az adatbazis ( lasd a topicot )
b, a mentes idejere leallitod a db szervert - igy meg ugyanott vagy, mint ha a dump lockolja a tablakat.
arrol nem is szolva, hogy rendes adatbazisszerver azert tud olyat, hogy a dump felé vegig a db megnyitaskor ervenyes allapotot mutatja, mikozben mindenki mas dolgozhat kedvere.
en mar egy ideje a c verziot hasznalom, replikalva van az adatbazis, es a replikarol keszul a dump...
- A hozzászóláshoz be kell jelentkezni
c -> lasd fentebb, mar irtam
a -> igen, ezert irtam snapshotot, raadaskent binaris file-ra is letezik az a szo hogy incrementalis backup, igy nem kell 32GB-t mozgatnod minden alkalommal
b -> nem kell leallitani, meg is lehet kerni azt az adatbazis szervert hogy ugyan legyen mar szives kiirni az adatokat (amit egyebkent is perzisztálva tárol), igy adatvesztés nem lesz.
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Igen, a t. Win7 user a dump-ig sem jutott el, vagy hogy leallitsa a szervert, de majd deltat fog hasznalni, meg incrementalis backup-ot, meg megkeri a db-t, hogy flush-oljon, uggyvan, uggyvan. Tenyleg mennyivel jobb ez, mint egyetlen parancsot kiadni, es egyetlen tomoritett fajlt megkapni a vegen, valoban.
- A hozzászóláshoz be kell jelentkezni
Mivel a mostani szál, amiról szó van, innen indult: "Ez igy nem teljesen allja meg a helyet. Valos backup megoldas a fajl szintu tarolas, masolas. Termeszetesen a dokumentacio elolvasasa es abban foglaltak betartasa utan."
Ahogy te is, én is általánosságban beszéltem a backupolás lehetőségeiről, aminél te kijelentetted hogy a file alapú archiválás az ördögtől való, én meg azt mondtam hogy nem, sőt, még jobb is mint dumpolgatni
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Az igazsághoz hozzá tartozik, hogy egy évvel ezelőtt már működött így a dolog. Akkor 8.4es Postgres futott, és meg van az egy évvel korábbi data könyvtár is, azt bemásolva egy 8.4es postgres alá jó az adatbázis. A 9.2-es nem megy, ami az idei állapot.
Az adatok amúgy nem kritikusak, csak azért jó volna ha megvolnának :D
- A hozzászóláshoz be kell jelentkezni
Lehet butaság, de ha visszarakná ugyanazt a PG verziót, és abból csinálna egy rendes dump-ot?
- A hozzászóláshoz be kell jelentkezni
Közben megoldódott..
Az volt a baj, hogy csak az tudta, hogy a 9.2-es verzió volt, de hogy azon belül melyik azt nem.
De szerencséjére nem csak a data mappát másolta le, hanem a komplet postgres install-t, így az exe-k is megvoltak. Szóval azt elidítva most működik. Csinalok róla rendes dump-ot és majd azt beimportálom az installált verzióba.
- A hozzászóláshoz be kell jelentkezni