Új vagyok itt. Én eddig Oracle és némi MSSQL területtel foglalkoztam, most került elő ez is.
Kezdő kérdése, még nem jutottam el a doksi végigolvasásáig.
Linux-os szerver, 9.3-as verzió.
Nekem be kéne töltenem egy jó nagy .sql formátumú exportot, ezt psql-el próbálom behozni. Sajnos kifogytam a helyből. Az adatbázist eldobtam, emiatt a /var/lib/pgsql/9.3/data/base alól a megfelelő folder eltűnt. Ez OK.
Ha jól értem a rendszer működését, akkor a /var/backup/pgsql alá kerül valamilyen rendszer log, amely alapján valahogy az elrontott dolgok is visszahozhatóak. Ez hasonló lehet az Oracle REDO log-jához, csak ez nem fix méretű.
- Hogy lehet a backup log-okat takarítani? Indítsam újra a szervert?
- Lehet valahogy kontrollálni ezt a feature-t? (Analógia: Oracle-ben NOLOGGING storage option table és tablespace szinten.)
Tehát: 1. Belepiszkamiszka pg_hba.conf-ba: local main teszt password
2. Servernek signal hogy belepiszkamiszka történt: sudo -u postgres /usr/lib/postgresql/8.4/bin/pg_ctl reload -D /var/lib/postgresql/8.4/main
3. Bejelentkezés teszt-ként: psql --dbname main --username teszt --password
Köszi nektek a segítséget, azért jó poén amikor az ember évekig dolgozik egy adatbáziskezelővel és fogalma sincs hol a jó fenébe van a gépén az adatbázisa :))
Ok idáig eljutottam, editáltam ezt a fájlt. Aztán persze nem lét életbe amit beleírtam, mert az adatbázis server fut, és a doksi szerint kéne használnom a pg_ctl parancsot amivel lehet az adatbázis-servert leállítani, meg újraindítani, meg reload-dal megmondani hogy belepiszkáltam a configurációs fájljába és legyen szíves újra beleolvasni. Igen ám csakhogy a "pg_ctl reload" nem működik mert meg kéne még mondani neki a -D kapcsolóval hogy hol a fenébe van a "main" nevű adatbázisom. De én honnan tudjam ? Soha nem is kellett tudnom, és nem is volt szükség rá. Természetesen a postgres sem írja ki sehol hol van egy adatbázis, csatlakozol hozzá és kész, használod. Ha kell a tartalma csinálj róla mentést... Na mindenesetre most ott vagyok elakadva hogy egy adatbázis aminek tudom a nevét, fogalmam sincs hol van a gépemen. Tudom hogy pár napot rá kéne szánnom postgres doksi olvasással, de ennyire nem akarok elmélyedni benne.
Gyerekek, van egy érdekes gondom a postgres-szel. Ezer éve használom, van egy adatbázisom melyet több éve töltök egy általam írt java alkalmazással. Használtam a pgAdmin-t, razorSQL-t minden ok. De a postgres-hez adott alapprogram a "psql" nagyon makrancos. Vele egyedül nem lehet úgy belépni mint minden mással (pl. java). Szóval van egy "main" adatbázis "teszt" nevű user melynek jelszava "abc". S a psql programmal nem tudok így belépni. Próbáltam már mindenfélét pl.
psql --dbname main --username teszt --password
meg még 1000-féleképpen, de ilyen üzenet jön miután megadom a bekért jelszót:
psql: FATAL: Ident authentication failed for user "teszt"
Szóval egyszer jó lenne rájönni erre a régi problémára, tudtok segíteni ?
Az csak azt írja hogy 8.2, viszont rájöttem hogy a pg_ctl.exe fájlt --version parammal meghívva kiírja az alverziót is.
A lényeg hogy a gondok oroszlánrészét az okozta, hogy a célgépen még nem volt fent .net 3.5, csak .net 2.0 (nyilván ez nem linux-ügy innentől) - most már sikerült áttelepítenem az adatokat.
Egyébként meg ha az első kettő szám azonos (tehát pl. 8.2.1 és 8.2.4), akkor a lemezen tárolt formátum nem változik, tehát tudják olvasni egymásét, de legalábbis az újabb tudja a régit.
Köszi, ezt próbálgattam, de nem nagyon sikerült eddig. Ugyanis pontosan nem tudom, melyik volt az a postgresql-verzió. Valamelyik 8.2-es. Hol lehet megtudni az alverzió-számát?
Tedd fel a szervert (azonos verziót) újra, az új C:-re; utána cseréld le az adatkönyvtárát (nem tudom, Windows alatt hol van) az E:-n levővel - persze erre az időre állítsd le a PostgreSQL szervert.
Újraindítás után ugyanaz a szerver ugyanazokon az adatokon fog futni.
Az a gondom, hogy tönkrement az alaplap a gépben, amire fel volt rakva a PostgreSQL (XP).
A vincseszter megvan, hozzá tudok férni. Szeretném valahogy kidumpolni a PostgreSQL adatokat, de nem bírom elindítani a szervert (a korábbi "C:" most "E:" lett).
A routert azért nem kommentáltam, mert megválaszoltad. A belsőhálót a router nem szűri általában, ezért nem kellett a 0/0-val sem veckelődnie a tűzfalon. Ez akkor lesz majd kérdés, ha a wan felől akarja az adatbázist macerálni.
Még egy apróságot. A saját IP cím és a belső háló címe az nem ugyanaz. Ha a belső hálóra akarod tenni akkor pl. 192.168.1.0/24 a hálócímed, míg a saját IP-d mondjuk 192.168.1.100/24. Ha a hálócímet adod meg, akkor az összes 192.168.1.XXX című gépnek engedélyezed a hozzáférést.
Köszi a segítséget. Én eredetileg oda a saját gépem IP címét írtam és úgy nem működött. Ugye jól sejtem, hogy amíg a routeren nem nyitok neki portot addig úgyis csak a belső hálózat tud hozzáférni? Mert ha igen, akkor inkább nem is nyúlok többet hozzá, csak örülök, hogy működik :)
Igen, általában én úgy használom. Azért remélhetőleg ért annyit a kolléga hozzá, hogy ha csak a belső hálón akarja akkor kicseréli a címet a saját hálócímére.
Egy kis segítségre van szükségem. Telepítettem a PostgreSQL-t az egyik gépre egy helyi hálózaton... a másik gépről hogy tudom elérni? Azt tudom, hogy a pg_hba.conf fájlba kell beleszerkesztenem, de pontosan mit?