Обсуждение: Automatic Backups
I am writing a program to backup Postgres 8.0 installed on windows via Visual Basic. Is there an easy way to find out where a the PostgreSQL bin files are located so I can get the pg_dump and pg_restore utilities? Enthusiastically, Dave Leedom The Hightower Group, Inc. Custom Software Solutions Designed To Fit Your Business Like A Glove. 165 West Airport Road, Suite B/Lititz, PA 17543 V:717-560-4002, 877-560-4002 x: 114 F:717-560-2825 www.hightowergroup.com
On Apr 8, 2005, at 2:14 PM, David A. Leedom wrote: > Is there an easy way to find out where a the PostgreSQL bin files are > located so I can get the pg_dump and pg_restore utilities? I think the installer puts this information in the registry. If you don't get a more authoritative response, you might want to take a look at the installer source file (a Wix xml document) for the exact registry setup. http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/pginstaller/ John DeSoi, Ph.D. http://pgedit.com/ Power Tools for PostgreSQL
John, Thanks for getting back to me. I found that the registry entries use a GUID product code on the final node of the registry. Is there any way to link this back to the running database? I could hard code the product codes into my backup app. If for some reason there are more than one Postgres installs on one system would there be a way to determine the product code of the database I am backing up via the connect string? (System tables/variables?) Another possibility is that I could include the pg_dump/restore utilities with the backup app and set it up to only backup databases of the correct version. Anyone have any further thoughts. Dave Leedom At 03:13 PM 4/8/2005, John DeSoi wrote: >On Apr 8, 2005, at 2:14 PM, David A. Leedom wrote: > >>Is there an easy way to find out where a the PostgreSQL bin files are >>located so I can get the pg_dump and pg_restore utilities? > >I think the installer puts this information in the registry. If you don't >get a more authoritative response, you might want to take a look at the >installer source file (a Wix xml document) for the exact registry setup. > >http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/pginstaller/ > > >John DeSoi, Ph.D. >http://pgedit.com/ >Power Tools for PostgreSQL > The Hightower Group, Inc. Custom Software Solutions Designed To Fit Your Business Like A Glove. 165 West Airport Road, Suite B/Lititz, PA 17543 V:717-560-4002, 877-560-4002 x: 114 F:717-560-2825 www.hightowergroup.com
>I am writing a program to backup Postgres 8.0 installed on windows via >Visual Basic. > >Is there an easy way to find out where a the PostgreSQL bin files are >located so I can get the pg_dump and pg_restore utilities? It's stored in the registry under HKLM\Software\PostgreSQL\Installations\<version id>\Bin Directory For 8.0.x, version id is {5AA3FA26-72A2-4D06-9BFE-98E650A37B6D}. //Magnus
On Apr 8, 2005, at 4:00 PM, David A. Leedom wrote: > I found that the registry entries use a GUID product code on the final > node of the registry. Is there any way to link this back to the > running database? > > I could hard code the product codes into my backup app. If for some > reason there are more than one Postgres installs on one system would > there be a way to determine the product code of the database I am > backing up via the connect string? (System tables/variables?) > > Another possibility is that I could include the pg_dump/restore > utilities with the backup app and set it up to only backup databases > of the correct version. > One idea is to use "pg_ctl.exe status" to determine if the server associated with the registry entry is running. I think you'll also need to specify the data directory with this command, so hopefully that is in the registry also. John DeSoi, Ph.D. http://pgedit.com/ Power Tools for PostgreSQL
>> I found that the registry entries use a GUID product code on >the final >> node of the registry. Is there any way to link this back to the >> running database? You mean from the GUID to the database? From the GUID you can get the data directory, port number, service id etc - it should be everything you need to find the db. >> I could hard code the product codes into my backup app. If for some >> reason there are more than one Postgres installs on one system would >> there be a way to determine the product code of the database I am >> backing up via the connect string? (System tables/variables?) Examine the hostname / port number combination. That uniquely identifies it. Unless the user has set them both up on the same port and just doesn't run them both at the same time. In that case, I don't think there is a way. There should be no need to hardcode the GUIDs unless you need to find a specific version. You can just enumerate whatever GUIDs exist in the subkey and then look inside each of those for a match on the others. >> Another possibility is that I could include the pg_dump/restore >> utilities with the backup app and set it up to only backup databases >> of the correct version. >> > >One idea is to use "pg_ctl.exe status" to determine if the server >associated with the registry entry is running. I think you'll >also need >to specify the data directory with this command, so hopefully that is >in the registry also. Yup, it's there. //Magnus