-
Create the directories for the databases, WAL archives, configurations,
utilities, and the log file.
Note -
Perform the following steps in your target environment either in the
global zone or in the zone-cluster node unless it is specified otherwise.
phys-schost-1$ mkdir /postgres/data
phys-schost-1$ mkdir /postgres/logs
phys-schost-1$ mkdir /postgres/83_walarchives
phys-schost-2$ mkdir /postgres/data
phys-schost-2$ mkdir /postgres/utilities
phys-schost-2$ mkdir /postgres/log
phys-schost-2$ mkdir /postgres/83_walarchives
-
Change to the PostgreSQL root directory and initialize the
data cluster.
phys-schost-1$ cd /postgres/postgresql-8.3.1
phys-schost-1$ ./bin/initdb -D /postgres/data
phys-schost-2$ cd /postgres/postgresql-8.3.1
phys-schost-2$ ./bin/initdb -D /postgres/data
-
Start the database.
phys-schost-1$ ./bin/postmaster -D /postgres/postgresql-8.3.1
-
Prepare the Oracle Solaris Cluster-specific test database.
Note -
If you are in a zone-cluster node, ensure that you have access to a copy
of your configuration file.
phys-schost-1$ ksh /opt/SUNWscPostgreSQL/util/pgs_db_prep \
-f /postgres/pgs_config_pri -e
-
Stop the postmaster.
phys-schost-1$ ./bin/pg_ctl -D /postgres/data stop
-
Copy the PGDATA directory to the standby.
phys-schost-1$ cd /postgres
phys-schost-1$ /usr/local/bin/rysync -arv ./data phys-schost-2:/postgres
-
Protect the PostgreSQL configuration files.
Note -
The PostgreSQL configuration files are overwritten during
resilvering. You need to move the configuration files to prevent them from being
overwritten.
phys-schost-1$ cd /postgres
phys-schost-1$ mkdir config
phys-schost-1$ cd data
phys-schost-1$ mv postgresql.conf ../config
phys-schost-1$ ln -s ../config/postgresql.conf ./postgresql.conf
phys-schost-1$ touch ../config/recovery.conf
phys-schost-1$ ln -s ../config/recovery.conf ./recovery.done
phys-schost-2$ cd /postgres
phys-schost-2$ mkdir config
phys-schost-2$ cd data
phys-schost-2$ mv postgresql.conf ../config
phys-schost-2$ ln -s ../config/postgresql.conf ./postgresql.conf
phys-schost-2$ touch ../config/recovery.conf
phys-schost-2$ ln -s ../config/recovery.conf ./recovery.conf
-
Provide the contents for the PostgreSQL recovery
file.
phys-schost-1$ echo restore_command = 'cp /pgs/83_walarchives/%f %p' \
> /postgresql/data/recovery.done
phys-schost-2$ echo restore_command = '/postgres/postgres-8.3.1/bin \
/pg_standby -k 10 -t /postgres/data/failover /postgres/83_walarchives %f %p' \
/postgresql/data/recovery.conf
-
Configure the archive command in the postgresql.conf
file on phys-schost-1 by providing the following
content.
archive_command = '/usr/local/bin/rsync -arv %p \
phys-schost-2:/postgres/83_walarchives/%f </dev/null'
-
Configure the archive command in the postgresql.conf
file on phys-schost-2 by providing the following
content.
archive_command = '/usr/local/bin/rsync -arv %p \
phys-schost-1:/postgres/83_walarchives/%f </dev/null'
-
Exit from the postgres user ID.
phys-schost-1# exit
-
Encrypt the password of the monitoring user on all nodes, to run the
PostgreSQL resources.
phys-schost-1# ksh /opt/SUNWscPostgreSQL/util/pgs_register -f /postgres/pgs_config_pri -e
phys-schost-2# ksh /opt/SUNWscPostgreSQL/util/pgs_register -f /postgres/pgs_config_sta -e
-
Run the pgs_register script in the global zone to
register the resources.
phys-schost-1# ksh /opt/SUNWscPostgreSQL/util/pgs_register -f /postgres/pgs_config_pri
phys-schost-2# ksh /opt/SUNWscPostgreSQL/util/pgs_register -f /postgres/pgs_config_sta
phys-schost-1# ksh /opt/SUNWscPostgreSQL/rolechg/util/rolechg-register -f /postgres/rolechg_config
-
Add the following line to the postgresql.conf file in
the PGDATA directory.
listen_addresses = 'localhost, ha-host1'
-
Add the following line to the pg_hba.conf file in the
PGDATA directory.
host all all 0.0.0.0/0 password
-
Enable the resources in the global zone.
phys-schost-1# clresource enable STA-RS
phys-schost-1# clresource enable PRIM-RS
phys-schost-1# clresource enable ROLECHG-RS
-
Copy the resilver scripts by performing the following steps in your target
environment.
phys-schost-2# cp /opt//SUNWscPostgreSQL/rolechg/util/resilver-step1 /postgres/utilities
phys-schost-2# cp /opt//SUNWscPostgreSQL/rolechg/util/resilver-step2 /postgres/utilities
phys-schost-2# chown -R postgres:postgres /postgres/utilities
-
Modify the following variables in your copy of the
resilver-step1 script.
##### Customize the following variables##########
SOURCE_DATA=/postgres/data
TARGET_DATA=/postgres/data
TARGET=phys-schost-1
PGS_BASE=/postgres/postgresql-8.3.1
PRI_GRP=POSTGRES-PRI-RG
STDBY_GRP=POSTGRES-STA-RG
STDBY_RS=STA-RS
PGPORT=5432
ROLECHG_GRP=ROLECHG-RG
RESYNC=/usr/local/bin/rsync -rav
SSH_PASSPHRASE=false
##### End of customizations ##########
-
Modify the following variables in your copy of the
resilver-step2 script.
##### Customize the following variables##########
SOURCE=phys-schost-2
SOURCE_DATA=/postgres/data
TARGET_DATA=/postgres/data
TARGET=phys-schost-1
PGS_BASE=/postgres/postgresql-8.3.1
PRI_GRP=POSTGRES-PRI-RG
STDBY_GRP=POSTGRES-STA-RG
STDBY_RS=STA-RS
PGPORT=5432
ROLECHG_GRP=ROLECHG-RG
PRI_NODE=phys-schost-1
RESYNC=/usr/local/bin/rsync -rav
SSH_PASSPHRASE=false
##### End of customizations ##########