Hi,
Egy ismerős cégnél összeborult a vas (valahogy, valamiért). Volt egy kb. 50 megás postgres adatbázisuk (legyünk optimisták: van egy 50 megás postgres adatbázisuk).
A gépről file szinten lemenekítettek mindent, így van egy /var/lib/postgresql/....../data könyvtáram, ebből kellene vhogy kibányászni az adatbázist.
Tudom, hogy a postgres nem másolható így, de tettem egy próbát azzal, hogy letaroltam az egészet és átvittem egy szintén 7.4.x-es postgres-es gépre, amin előbb elpucoltam az útból az ott futó postgrest. (Az elfeküdt gépen állítólag 7.4-es etch-es postgres van, az enyémen 7.4.7-6sarge4)
Megcsináltam a data könyvtárat, bele pakoltam a tar tartalmát, kicsit meghekkeltem a pg_hba.conf-ot, hogy mindenki tudjon lokálból konnektálni és adtam egy "/etc/init.d/postgresql start"-ot.
Erre kaptam egy ilyet:
FATAL: XX000: failed to initialize lc_messages to ""
LOCATION: InitializeGUCOptions, guc.c:1880
A google szerint ez valami locale probléma, de hiába hekkeltem az ott talált megoldásokat, nem lett jobb a dolog.
A kérdéseim:
1) van-e értelme így tovább menni?
2) van-e mód "lekapcsolt" DB-ből valami util-lal kiszedni a táblaszerkezeteket és az adatokat?
3) érdemes megpróbálni egy üres gépre rárakni a /var/lib/postgres/data -t és utána apt-get install postgres?
4) hangos gúnyos röhögésen kívül még mit tennétek ilyen helyzetben?
- 1704 megtekintés
Hozzászólások
A data könyvtár másolható, és - ha nem sérült meg a tartalma - működnie kell másik gépen is.
Az általad idézett hibaüzenettel sajnos én sem tudok mit kezdeni, megpusztult postgres-szel még nem volt dolgom.
____________________
jobbára ártalmatlan
- A hozzászóláshoz be kell jelentkezni
Ezt itt találtam a HUP-on: http://hup.hu/node/29591
hátha...
____________________
jobbára ártalmatlan
- A hozzászóláshoz be kell jelentkezni
Húztam egy etch-et, csináltam /var/lib/postgresql/7.4/main könyvtárat és belezúdítottam a letarolt cuccot, majd pg_hba.conf -ot lebutítottam, hogy mindenki hozzáférjen mindenhez és adtam egy /etc/init.d/postgresql-7.4 start-ot.
El is indult a cucc, de a psql-ben a \l (adatbázisok listája) csak a template1-et és template0-t mutatja, pedig a base könyvtár 9 mega, tehát van benne vmi.
- A hozzászóláshoz be kell jelentkezni
A 9 mega és az 50 mega között azért van némi különbség :)
Az architektúra (i386 vagy amd64 pl) az stimmel?
locale beállítás lehet még probléma, de locale-t generálni nem akkora kunszt.
Ha továbbra is problémád van, és hajlandó vagy elküldeni a cuccot, akkor próbálkozhatok a megmentésével egy kicsit.
Igazából forrásból se nagy kunszt postgrest fordítani, és akkor az ilyen hibákra is lehet találni megoldást.
Mondjuk a 7.4 már elég régi, arra már nem is emlékszem, lehet hogy az még nem bírta túl jól a crasheket...
--
Gabriel Akos
- A hozzászóláshoz be kell jelentkezni
Hali,
- Az 50 mega az a main könyvtár mérete volt, a base már csak 9.x mega.
- Úgy tudom az architektúra azonos.
- a locale hogy játszik be? lehet, hogy vmi locale probléma miatt nem látszik a hiányzó DB?
- küldés: adott esetben mire lenne szükséged?
- A hozzászóláshoz be kell jelentkezni
Egyebkent ez teljesen hivatalos modszer, mukodnie kell. Viszont nekem vegyesek a tapasztalataim, volt hogy sikerult igy visszaallitani, de volt hogy nem. Talan a verzioelteres lehet a kulcs.
- A hozzászóláshoz be kell jelentkezni
Nekem csak "/backup/var/lib/postgresql/7.4/main" könyvtáram van, abban nem data van, hanem ezek, és a base-ben van sztem a lényeg:
base
global
pg_clog
pg_hba.conf -> /etc/postgresql/7.4/main/pg_hba.conf
pg_ident.conf -> /etc/postgresql/7.4/main/pg_ident.conf
PG_VERSION
pg_xlog
postgresql.conf -> /etc/postgresql/7.4/main/postgresql.conf
postmaster.opts
- A hozzászóláshoz be kell jelentkezni
Aha, ugy latom a sarge fele 7.4 es az etch fele 7.4 file strukturaja kozott kulonbseg van.
A main konyvtarban benne van minden, probald meg etch ala felrakni.
- A hozzászóláshoz be kell jelentkezni
Felraktam egy etch-et.
Felraktam rá postgres-t.
Leállítottam a postgres-t.
A main könyvtár tartalmát elmásoltam és kiürítettem.
A main könyvtárba bemásoltam a megmenteni kívánt cuccot.
Elindítottam a postgresql-t.
Bementem postgres nevében (su - postgres, aztán psql template1).
Adatbázis lista: \l
Name | Owner | Encoding
-----------+----------+----------
template0 | postgres | UNICODE
template1 | postgres | UNICODE
Ez gáz/szomorú.
- A hozzászóláshoz be kell jelentkezni
Mindenkinek köszi a segítséget!
A main könyvtár 3. ürítése és másolása meghozta a kívánt eredményt és hirtelen megjelent a hiányzó DB a listában.
Most elvileg minden OK-nak tűnik.
Még1x köszi a ráfordított időt!
- A hozzászóláshoz be kell jelentkezni