Nvizn
November 19, 2012, 4:15pm
1
I'm having some troubles setting an instance of postgreSQL to automatically start upon system boot. I have two servers running this app, one is automatically starting the service, the other is not. I'm attempting to use the "svcadmin" command, however, apparently when I run a "svcs -a" search, the appropriate instance doesn't display in the list of services.
Here's what a get with svcs -a | grep postgresql
disabled Nov_17 svc:/application/database/postgresql:version_81
disabled Nov_17 svc:/application/database/postgresql:version_82_64bit
online Nov_17 svc:/application/database/postgresql:version_82
However, none of these are the instance I'm looking to run.
version 8.2 is located in:
postgres 385 381 0 Nov 17 ? 0:02 /usr/postgres/8.2/bin/postgres -D /var/postgres/8.2/data
I'm looking to run this:
postgres 426 1 0 Nov 17 ? 0:01 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
How come the application located in /usr/local/pgsql, doesn't display in the service list? What can I do to make it appear as a service, or, just get this application to automatically start upon server boot? I appreciate any and all assistance.
It appears you need to create a new service, try this set of instructions:
Nvizn
November 19, 2012, 4:35pm
3
I found that info, however, there is no .xml for the server successfully running this service. It actually shows up when executing "svcs -a." I'd prefer avoiding this option as I assume, it should automatically show in the list of services.
Can you post output of:
svccfg export svc:/application/database/postgresql
Nvizn
November 19, 2012, 4:54pm
5
<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='manifest' name='export'>
<service name='application/database/postgresql' type='service' version='0'>
<dependency name='network' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/milestone/network:default'/>
</dependency>
<dependency name='filesystem-local' grouping='require_all' restart_on='none' type='service'>
<service_fmri value='svc:/system/filesystem/local:default'/>
</dependency>
<exec_method name='start' type='method' exec='/lib/svc/method/postgresql start' timeout_seconds='60'>
<method_context/>
</exec_method>
<exec_method name='stop' type='method' exec='/lib/svc/method/postgresql stop' timeout_seconds='60'>
<method_context/>
</exec_method>
<exec_method name='refresh' type='method' exec='/lib/svc/method/postgresql refresh' timeout_seconds='60'>
<method_context/>
</exec_method>
<property_group name='general' type='framework'>
<propval name='action_authorization' type='astring' value='solaris.smf.manage.postgres'/>
<propval name='value_authorization' type='astring' value='solaris.smf.value.postgres'/>
</property_group>
<instance name='version_81' enabled='false'>
<method_context project=':default' resource_pool=':default' working_directory=':default'>
<method_credential group='postgres' limit_privileges=':default' privileges=':default' supp_groups=':default' user='postgres'/>
</method_context>
<property_group name='postgresql' type='application'>
<propval name='value_authorization' type='astring' value='solaris.smf.value.postgres'/>
<propval name='bin' type='astring' value='/usr/bin'/>
<propval name='data' type='astring' value='/var/lib/pgsql/data'/>
<propval name='log' type='astring' value='server.log'/>
</property_group>
</instance>
<instance name='version_82' enabled='true'>
<method_context project=':default' resource_pool=':default' working_directory=':default'>
<method_credential group='postgres' limit_privileges=':default' privileges=':default' supp_groups=':default' user='postgres'/>
</method_context>
<property_group name='postgresql' type='application'>
<propval name='value_authorization' type='astring' value='solaris.smf.value.postgres'/>
<propval name='bin' type='astring' value='/usr/postgres/8.2/bin'/>
<propval name='data' type='astring' value='/var/postgres/8.2/data'/>
<propval name='log' type='astring' value='server.log'/>
</property_group>
</instance>
<instance name='version_82_64bit' enabled='false'>
<method_context project=':default' resource_pool=':default' working_directory=':default'>
<method_credential group='postgres' limit_privileges=':default' privileges=':default' supp_groups=':default' user='postgres'/>
</method_context>
<property_group name='postgresql' type='application'>
<propval name='bin' type='astring' value='/usr/postgres/8.2/bin/64'/>
<propval name='data' type='astring' value='/var/postgres/8.2/data_64'/>
<propval name='log' type='astring' value='server.log'/>
<propval name='value_authorization' type='astring' value='solaris.smf.value.postgres'/>
</property_group>
</instance>
<stability value='Evolving'/>
<template>
<common_name>
<loctext xml:lang='C'>PostgreSQL RDBMS</loctext>
</common_name>
<documentation>
<manpage title='postgres_82' section='5'/>
<doc_link name='postgresql.org' uri='http://postgresql.org'/>
</documentation>
</template>
</service>
</service_bundle>
Try doing this:
svccfg export svc:/application/database/postgresql > postgres.xml
Edit postgres.xml and add another <instance></instance> stanza after last </instance> tag, containing parameters related to your /usr/local installation. It might look like this (I named new instance "usr-local" here, you can choose any name you like):
<instance name='usr-local' enabled='false'>
<method_context project=':default' resource_pool=':default' working_directory=':default'>
<method_credential group='postgres' limit_privileges=':default' privileges=':default' supp_groups=':default' user='postgres'/>
</method_context>
<property_group name='postgresql' type='application'>
<propval name='bin' type='astring' value='/usr/local/pgsql/bin'/>
<propval name='data' type='astring' value='/usr/local/pgsql/data'/>
<propval name='log' type='astring' value='server.log'/>
<propval name='value_authorization' type='astring' value='solaris.smf.value.postgres'/>
</property_group>
</instance>
Import new service into SMF repository:
svccfg import postgres.xml
2 Likes
Nvizn
November 20, 2012, 9:55am
7
That did it! Thanks a bunch. Something I've been working on on/off, for the last week or so.