Thread: backend corruption
Hello Everybody, I've been whirling along with my new postgresql database (converted from mysql before Christmas) and have been very pleased. Until a few days ago . I was sittin there minding my own business WHEN ... (dot dot dot) I was goofing around attempting to install new UDF's and in the process, didn't notice that the backend had died. I'm not exactly sure when it died, and since I had been sending output etc to /dev/null (postmaster -i -o -F -S), not sure why it died, either. I was/am using the snapshot as my working environment. Anyway, I started reading the list archives and found lots of mentions of bad backend situations. Apparently my pg_control was corrupted (?), there were no databases listed in my pg_databases and some index tree was corrupted. (There was a thread a bit ago about lack of documentation about certain postgresql features -- how about *anything* regarding system tables ...) So, somewhat blindly, I did a: rm pg_control initdb Apparently, one other time someone had done this, then later it was suggested s/he should attempt to re-construct pg_shadow and pg_databases. But then, someone said, no way, can't do that, cause you can't restore a database from those unnamed directories/files (which I *thought* were the databases), you had to have the x_logs intact too. So basically, I've wiped all my databases, it looks like, and no, there is no directory/structure which atomically can be called "your database", other than the ENTIRE data/base directory. I have to just say this aspect of the mysql --> postgresql learning curve is the most difficult and painful to grasp. pg_dump is *not* an optional thing like mysqldump is (for mysql) ... you can't recover/backup a database just by what's found in those numbered subdirectories. If I've left a stone unturned, please let me know. Thanks, George Johnson
On Sat, 6 Jan 2001, George Johnson wrote: > So basically, I've wiped all my databases, it looks like, and no, there is > no directory/structure which atomically can be called "your database", other > than the ENTIRE data/base directory. Sure there is -- under my $PGHOME/data/base, each separate database on my system is a sub-directory, which contain the system dictionaries, tables, indexes, etc. -- Brett http://www.chapelperilous.net/~bmccoy/ --------------------------------------------------------------------------- "Just think of a computer as hardware you can program." -- Nigel de la Tierre
"Brett W. McCoy" <bmccoy@chapelperilous.net> writes: > On Sat, 6 Jan 2001, George Johnson wrote: >> So basically, I've wiped all my databases, it looks like, and no, there is >> no directory/structure which atomically can be called "your database", other >> than the ENTIRE data/base directory. > Sure there is -- under my $PGHOME/data/base, each separate database on my > system is a sub-directory, which contain the system dictionaries, tables, > indexes, etc. Yeah, but those files are only half the truth. The other half lives in pg_log and the installation-wide tables (pg_database, etc). George is correct: you cannot recover using only the contents of $PGDATA/base/foo. You really need all of $PGDATA. I think that under 7.1, pg_log is not so critical anymore, but I'm not sure. Vadim, any comment? regards, tom lane
On Sat, 6 Jan 2001, Tom Lane wrote: > Yeah, but those files are only half the truth. The other half lives in > pg_log and the installation-wide tables (pg_database, etc). George is > correct: you cannot recover using only the contents of $PGDATA/base/foo. > You really need all of $PGDATA. Really? I stand corrected. How does MySQL do things? -- Brett http://www.chapelperilous.net/~bmccoy/ --------------------------------------------------------------------------- There is not much to choose between a woman who deceives us for another, and a woman who deceives another for ourselves. -- Augier
> I think that under 7.1, pg_log is not so critical anymore, but I'm not > sure. Vadim, any comment? Still critical till we implement UNDO and true changes rollback on transaction abort. Vadim
> What is wrong with following queries? Query1: delete from zuser where userid = 1 and user_setid = 1; ERROR: ERROR: Unable to identify an operator '&&' for types 'int4' and 'int4' You will have to retype this query using an explicit cast Query2: delete from zuser where userid = '1'::int4 and user_setid = '1'::int4; ERROR: ERROR: Unable to identify an operator '&&' for types 'int4' and 'int4' You will have to retype this query using an explicit cast Query3: delete from zuser where userid = '1'::integer and user_setid = '1'::integer; ERROR: ERROR: Unable to identify an operator '&&' for types 'int4' and 'int4' You will have to retype this query using an explicit cast thanks, sandeep
Sorry, my mistake. Sandeep > > > > What is wrong with following queries? > > Query1: > delete from zuser where userid = 1 and user_setid = 1; > > ERROR: ERROR: Unable to identify an operator '&&' for types 'int4' and > 'int4' > You will have to retype this query using an explicit cast > > Query2: > delete from zuser where userid = '1'::int4 and user_setid = '1'::int4; > > ERROR: ERROR: Unable to identify an operator '&&' for types 'int4' and > 'int4' > You will have to retype this query using an explicit cast > > Query3: > delete from zuser where userid = '1'::integer and user_setid = > '1'::integer; > > ERROR: ERROR: Unable to identify an operator '&&' for types 'int4' and > 'int4' > You will have to retype this query using an explicit cast > > thanks, > sandeep