JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Oracle Solaris Cluster Data Service for PostgreSQL Guide
search filter icon
search icon

Document Information

Preface

1.  Installing and Configuring HA for PostgreSQL

A.  Files for Configuring Solaris Cluster HA for Solaris PostgreSQL Resources

B.  Deployment Example: Installing PostgreSQL in the Global Zone

C.  Deployment Example: Installing PostgreSQL in a Non-Global HA Container

D.  Deployment Example: Installing PostgreSQL in a Non-Global Zone

E.  Deployment Example: Installing PostgreSQL in the Global Zone Using WAL File Shipping

Target Cluster Configuration

Software Configuration

Assumptions

Installing and Configuring PostgreSQL on Shared Storage in the Global Zone

Example: Preparing the Cluster for PostgreSQL

Example: Configuring Cluster Resources for PostgreSQL

Example: Modifying the PostgreSQL Configuration File

Example: Building and Installing the PostgreSQL Software on Shared Storage

Example: Enabling the PostgreSQL Software to Run in the Cluster

Index

Example: Enabling the PostgreSQL Software to Run in the Cluster

  1. 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 or in the local zone 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
  2. 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
  3. Start the database.
    phys-schost-1$ ./bin/postmaster -D /postgres/postgresql-8.3.1
  4. Prepare the Oracle Solaris Cluster specific test database.

    Note - If you are in a local zone, 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
  5. Stop the postmaster.
    phys-schost-1$ ./bin/pg_ctl -D /postgres/data stop
  6. 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

    Note - If your target environment is in a zone, use zone 2 instead of phys-schost-2.


  7. 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
  8. 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
  9. Configure the archive command in the postgresql.conf file on phys-schost-1 or zone1 by providing the following content.
    archive_command = '/usr/local/bin/rsync -arv %p \ phys-schost-2:/postgres/83_walarchives/%f </dev/null'

    Note - If you are in a zone environment , replace phys-schost-2 by zone 2 in the example.


  10. Configure the archive command in the postgresql.conf file on phys-schost-2 or zone2 by providing the following content.
    archive_command = '/usr/local/bin/rsync -arv %p \ phys-schost-1:/postgres/83_walarchives/%f </dev/null'

    Note - If you are in a zone environment, replace phys-schost-1 by zone 1 in the example.


  11. Exit from the postgres user ID.
    phys-schost-1# exit
  12. 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
  13. Add the following line to the postgresql.conf file in the PGDATA directory on both nodes and zones.
    listen_addresses = 'localhost, ha-host1'
  14. Add the following line to the pg_hba.conf file in the PGDATA directory on both nodes and zones.
    host all all 0.0.0.0/0 password
  15. 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
  16. Copy the resilver scripts by performing the following steps in your target environment, either in the global or local zone.
    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
  17. 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 ##########
  18. 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 ##########