Обсуждение: Database directory names
I'm in the final stages of setting up database access for our domain hosting customers. The current system is running PostgreSQL 7.0- with which I haven't met any major problems (other than trying to figure out how to restrict access to each domain's database- solved). However... That box is slated for some major hardware upgrades, and an update from RedHat 7.0 to 7.3- bringing Postgres up to 7.2. This is not in and of itself a problem... but one particular attribute of 7.2 has me very puzzled and concerned. In 7.0, each database resided in /var/lib/pgsql/data/base/{database name}. This appears to have changed in 7.2 to an indecipherable number, with no apparent relation to the database name. I've spent a little time playing with CREATE DATABASE dbname WITH LOCATION = 'dbpath'; but it doesn't really suit my needs; I don't want to specify where the base/ directory goes! I don't need to. I do want to be able to easily track disk usage on a per-database basis- and while I could just make note of the directory created when a database is created, it would be *much* simpler to automate information-generating scripts based on the database name directly. (Nor do I want to hassle with trying to get appropriate environment variables set for the postmaster; I *really* don't want to have to modify the init script.) Is this a feature, a bug, or a change related to some other critical functional capability of Postgres? I haven't found anything else that meets our requirements here, and I can work around this annoyance if required- but I'd rather be lazy. ;) -Kris WebHart Internet Linux Sysadmin
On Tue, 2 Jul 2002, Kris Deugau wrote: > I'm in the final stages of setting up database access for our domain > hosting customers. The current system is running PostgreSQL 7.0- with > which I haven't met any major problems (other than trying to figure out > how to restrict access to each domain's database- solved). > > However... That box is slated for some major hardware upgrades, and an > update from RedHat 7.0 to 7.3- bringing Postgres up to 7.2. This is not > in and of itself a problem... but one particular attribute of 7.2 has > me very puzzled and concerned. > > In 7.0, each database resided in /var/lib/pgsql/data/base/{database > name}. This appears to have changed in 7.2 to an indecipherable number, > with no apparent relation to the database name. > > I've spent a little time playing with > CREATE DATABASE dbname WITH LOCATION = 'dbpath'; > but it doesn't really suit my needs; I don't want to specify where the > base/ directory goes! I don't need to. I do want to be able to easily > track disk usage on a per-database basis- and while I could just make > note of the directory created when a database is created, it would be > *much* simpler to automate information-generating scripts based on the > database name directly. (Nor do I want to hassle with trying to get > appropriate environment variables set for the postmaster; I *really* > don't want to have to modify the init script.) > > Is this a feature, a bug, or a change related to some other critical > functional capability of Postgres? I haven't found anything else that > meets our requirements here, and I can work around this annoyance if > required- but I'd rather be lazy. ;) Switching to numbers for tables and databases helped a few things (including for tables making it easier to rollback a drop table). There's a contrib item, oid2name which will print out a mapping of directory number to database name. The readme gives an example of using it with du.
Stephan Szabo wrote: > > Is this a feature, a bug, or a change related to some other critical > > functional capability of Postgres? I haven't found anything else that > > meets our requirements here, and I can work around this annoyance if > > required- but I'd rather be lazy. ;) > > Switching to numbers for tables and databases helped a few things > (including for tables making it easier to rollback a drop table). > There's a contrib item, oid2name which will print out a mapping > of directory number to database name. The readme gives an example > of using it with du. Uh, actually, only the readme in the current CVS has the example, 7.2.X doesn't. I recommend getting oid2name from the snapshot/CVS and using that. It has the newer readme and some changes to make the examples display properly. Also see the new doc section for 7.3 on disk usage: http://developer.postgresql.org/docs/postgres/diskusage.html -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
On Wed, 3 Jul 2002, Bruce Momjian wrote: > Stephan Szabo wrote: > > > Is this a feature, a bug, or a change related to some other critical > > > functional capability of Postgres? I haven't found anything else that > > > meets our requirements here, and I can work around this annoyance if > > > required- but I'd rather be lazy. ;) > > > > Switching to numbers for tables and databases helped a few things > > (including for tables making it easier to rollback a drop table). > > There's a contrib item, oid2name which will print out a mapping > > of directory number to database name. The readme gives an example > > of using it with du. > > Uh, actually, only the readme in the current CVS has the example, 7.2.X > doesn't. I recommend getting oid2name from the snapshot/CVS and using > that. It has the newer readme and some changes to make the examples > display properly. Also see the new doc section for 7.3 on disk usage: > > http://developer.postgresql.org/docs/postgres/diskusage.html My bad. I assumed that oid2name wasn't likely to have changed without actually checking.
> Stephan Szabo wrote: > > Switching to numbers for tables and databases helped a few things > > (including for tables making it easier to rollback a drop table). > > There's a contrib item, oid2name which will print out a mapping > > of directory number to database name. The readme gives an example > > of using it with du. Ah, option number 3. I *thought* there had to be a good reason for it, but I couldn't imagine how it might help. (I still can't, but I'm not in any way an expert on DBMS programming.) Bruce Momjian wrote: > Uh, actually, only the readme in the current CVS has the example, 7.2.X > doesn't. I recommend getting oid2name from the snapshot/CVS and using > that. It has the newer readme and some changes to make the examples > display properly. Also see the new doc section for 7.3 on disk usage: > http://developer.postgresql.org/docs/postgres/diskusage.html Snagged, tested, and I'm happy. Thanks for the heads-up on where to find oid2name. -Kris WebHart Internet Linux Sysadmin