123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- $OpenBSD: README-server,v 1.22 2017/05/23 14:17:00 sthen Exp $
- +-----------------------------------------------------------------------
- | Running ${FULLPKGNAME} on OpenBSD
- +-----------------------------------------------------------------------
- At least two different accounts are involved when working with PostgreSQL:
- One is an OpenBSD userid, '_postgresql', which is used as the userid of files
- that are part of PostgreSQL. The other, usually named 'postgres', is not an
- OpenBSD userid, i.e. you will not find it in /etc/passwd, but an account
- internal to the database system. The 'postgres' account is called the dba
- account (database administrator) and is created when a new database is
- initialized using the initdb command.
- If you are installing PostgreSQL for the first time, you have to create
- a default database first. In the following example we install a database
- in /var/postgresql/data with a dba account 'postgres' and md5 authentication.
- We will be prompted for a password to protect the dba account:
- # su - _postgresql
- $ mkdir /var/postgresql/data
- $ initdb -D /var/postgresql/data -U postgres -A md5 -W
- Please note that by default the cluster's encoding will be SQL_ASCII. If
- you want to have another default encoding, use the option -E with initdb:
- $ initdb -D /var/postgresql/data -U postgres -E UTF8 -A md5 -W
- If your cluster is already created, you can specify another encoding when
- you create a new database with this command:
- CREATE DATABASE xxx TEMPLATE template0 ENCODING 'xxx' ;
- It is strongly advised that you do not work with the postgres dba account
- other than creating more users and/or databases or for administrative tasks.
- Use the PostgreSQL permission system to make sure that a database is only
- accessed by programs/users that have the right to do so.
- Please consult the PostgreSQL website for more information, especially when
- you are upgrading an existing database installation.
- Network Connections
- ===================
- To allow connections over TCP (and other options) edit the file:
- /var/postgresql/data/postgresql.conf
- and also edit the pg_hba.conf (in the same directory) making the
- appropriate changes to allow connection from your network.
- To allow SSL connections, edit postgresql.conf and enable the
- 'ssl' keyword, and create keys and certificates:
- # su - _postgresql
- $ cd /var/postgresql/data
- $ umask 077
- $ openssl genrsa -out server.key 2048
- $ openssl req -new -key server.key -out server.csr
- Either take the CSR to a Certifying Authority (CA) to sign your
- certificate, or self-sign it:
- $ openssl x509 -req -days 365 -in server.csr \
- -signkey server.key -out server.crt
- Restart PostgreSQL to allow these changes to take effect.
- Tuning for busy servers
- =======================
- The default sizes in the GENERIC kernel for SysV semaphores are only
- just large enough for a database with the default configuration
- (max_connections 40) if no other running processes use semaphores.
- In other cases you will need to increase the limits. Adding the
- following in /etc/sysctl.conf will be reasonable for many systems:
- kern.seminfo.semmni=60
- kern.seminfo.semmns=1024
- To serve a large number of connections (>250), you may need higher
- values for the above.
- You may also want to tune the max_connect value in the
- postgresql.conf file to increase the number of connections to the
- backend.
- By default, the _postgresql user, and so the postmaster and backend
- processes run in the login(1) class of "daemon". On a busy server,
- it may be advisable to put the _postgresql user and processes in
- their own login(1) class with tuned resources, such as more open
- file descriptors (used for network connections as well as files),
- possibly more memory, etc.
- For example, add this to the login.conf(5) file:
- postgresql:\
- :openfiles=768:\
- :tc=daemon:
- Rebuild the login.conf.db file if necessary:
- # [ -f /etc/login.conf.db ] && cap_mkdb /etc/login.conf
- For more than about 250 connections, these numbers should be
- increased. Please report any changes and experiences to the package
- maintainers so that we can update this file for future versions.
- Upgrade Howto (for a major upgrade)
- ===================================
- If you didn't install PostgreSQL by following this README,
- you must adapt these instructions to your setup.
- Option 1: Dump and Restore
- --------------------------
- This will work for any upgrade from any major version of PostgreSQL
- to the current version.
- 1) Backup all your data:
- # su _postgresql -c "pg_dumpall -U postgres > /var/postgresql/full.sqldump"
- 2) Shutdown the server:
- # rcctl stop postgresql
- 3) Upgrade your PostgreSQL package with pkg_add.
- # pkg_add -ui postgresql-server
- 4) Backup your old data directory:
- # mv /var/postgresql/data /var/postgresql/data-${PREV_MAJOR}
- 5) Create a new data directory (using -E UTF8 if appropriate):
- # su _postgresql -c "mkdir /var/postgresql/data"
- # su _postgresql -c "initdb -D /var/postgresql/data -U postgres -A md5 -W"
- 6) Restore your old pg_hba.conf and (if used) SSL certificates
- # su _postgresql -c \
- "cp /var/postgresql/data-${PREV_MAJOR}/pg_hba.conf /var/postgresql/data/"
- # su _postgresql -c \
- "cp /var/postgresql/data-${PREV_MAJOR}/server.{crt,key} /var/postgresql/data/"
- Some postgresql.conf settings changed or disappeared in this version.
- Examine your old file for local changes and apply them to the new version.
- 7) Start PostgreSQL:
- # rcctl start postgresql
- 8) Restore your data:
- # su _postgresql -c "psql -U postgres < /var/postgresql/full.sqldump"
- Option 2: pg_upgrade
- --------------------
- This will work for an upgrade from the previous major version of
- PostgreSQL supported by OpenBSD to the current version, and should be
- faster than a dump and reload, especially for large databases.
- 1) Shutdown the server:
- # rcctl stop postgresql
- 2) Upgrade your PostgreSQL package with pkg_add.
- # pkg_add postgresql-pg_upgrade
- 3) Backup your old data directory:
- # mv /var/postgresql/data /var/postgresql/data-${PREV_MAJOR}
- 4) Create a new data directory (using -E UTF8 if appropriate):
- # su _postgresql -c "mkdir /var/postgresql/data"
- # su _postgresql -c "initdb -D /var/postgresql/data -U postgres -A md5 -W"
- 5) Restore your old pg_hba.conf and (if used) SSL certificates
- # su _postgresql -c \
- "cp /var/postgresql/data-${PREV_MAJOR}/pg_hba.conf /var/postgresql/data/"
- # su _postgresql -c \
- "cp /var/postgresql/data-${PREV_MAJOR}/server.{crt,key} /var/postgresql/data/"
- Some postgresql.conf settings changed or disappeared in this version.
- Examine your old file for local changes and apply them to the new version.
- 6) Temporarily support connecting without a password for local users by
- editing pg_hba.conf to include "local all postgres trust"
- # su _postgresql -c "vi /var/postgresql/data/pg_hba.conf"
- 7) Run pg_upgrade:
- # su _postgresql -c "cd /var/postgresql && \
- pg_upgrade -b /usr/local/bin/postgresql-${PREV_MAJOR}/ -B /usr/local/bin \
- -U postgres -d /var/postgresql/data-${PREV_MAJOR}/ -D /var/postgresql/data"
- 8) Remove "local all postgres trust" line from pg_hba.conf
- # su _postgresql -c "vi /var/postgresql/data/pg_hba.conf"
- 9) Start PostgreSQL:
- # rcctl start postgresql
- Clients/Frontends
- =================
- Many applications can use the PostgreSQL database right away. To facilitate
- administration of a PostgreSQL database, two clients are notable:
- www/phppgadmin A web based user interface that uses PHP5
- databases/pgadmin3 A graphical user interface that uses wxWidgets
|