Re: PostgreSQL on AIX platform
От | John R Pierce |
---|---|
Тема | Re: PostgreSQL on AIX platform |
Дата | |
Msg-id | 53E55FC8.4020304@hogranch.com обсуждение исходный текст |
Ответ на | Re: PostgreSQL on AIX platform (Payal Shah <PayalShah@fico.com>) |
Список | pgsql-general |
Thank you for your response. If you or someone can provide steps on how to bundle PostgreSQL on AIX (using IBM XL C compiler), that would be great so I can try it out to see if works for AIX 7 platform. I’m new to AIX platform and appreciate any help that you can provide.
these are some notes on how I built pg 9.1 for AIX 6.1. the process should be virtually identical for newer versions of either PG or AIX. Note I don't build a lot of the optional features as we don't use them (plperl, plpython, the contrib modules, etc)
Prerequisites
to build or run
- IBM Power6 or newer server
- IBM AIX 6.1
- IBM XLC 11 or 12 (only needed to build)
- create a postgres user account and directories
mkuser postgres
mkdir -p /opt/pgsql91 # postgres software directory.
mkdir -p /u10/pgsql91 # postgres database directories will go here
chown -R postgres /u10/pgsql91 /opt/pgsql91
- postgres user environment as follows ... /home/postgres/.profile
export PATH=/usr/bin:/usr/ucb:$HOME/bin:/opt/pgsql91/bin:/usr/sfw/bin
export PGDATA=/u10/pgsql91/data
Database Directories Postgres data directories, like any database, should always be on RAID1 or RAID10 storage, never RAID5 or RAID6. This build of postgresql was linked to use the /opt/pgsql91 paths as specified above, if you put it in a different directory, you will need to ensure LD_LIBRARY_PATH points to /new/path/to/pgsql91/lib |
we use some utils from the IBM AIX Linux Toolkit, including gtar, gmake, and wget.
Build
To compile, you first need to build zlib 1.2.5 and readline 6.1 libraries, configured for static linking. You will install these in the build user's $HOME/include and $HOME/lib, they are only needed to compile PostgreSQL, not to run it, so are not part of the release tarball.
Build prerequisites
This build requires IBM AIX 6.1, and IBM XL C. See the prerequisite .
log on as the build user. this can be a regular user or postgres. Setup your build environment per the prerequisites
mkdir $HOME/src |
build static linkable zlib
cd $HOME/src gtar xzf zlib- 1.2 .8
.tar.gz cd zlib- 1.2 . 8 export OBJECT_MODE= 64 CC=/usr/vac/bin/xlc CFLAGS= "-q64 -mcpu=pwr6 -O2" AR= "/usr/bin/ar" ./configure --prefix=$HOME -- 64 -- static gmake clean gmake gmake install |
If you have XL C++, then use CC=/usr/vacpp/bin/xlc ..... |
build static linkable readline
cd ~/src gtar xzf readline- 6.1 .tar.gz cd readline- 6.1 export OBJECT_MODE= 64 CC=/usr/vac/bin/xlc CFLAGS= "-q64" AR= "/usr/bin/ar" ./configure --prefix=$HOME -- 64 -- static gmake clean gmake gmake install |
Build PostgreSQL
replace 9.1.14 with the version you are building.
get postgresql source
cd ~/src gtar xzf postgresql- 9.1 . 14 .tar.gz cd postgresql- 9.1 . 14 |
build Postgresql
cd $HOME/src/postgresql- 9.1 . 4 export OBJECT_MODE= 64 CC=/usr/vacpp/bin/xlc CFLAGS= "-q64 -I$HOME/src/include -O2 -qarch=pwr5 -qtune=balanced" \ LDFLAGS= "-L$HOME/src/lib" AR= "/usr/bin/ar" \ ./configure --prefix=/opt/pgsql91 gmake clean gmake cd contrib gmake cd .. gmake check gmake install |
create tarball
cd /opt gtar cvzf /tmp/postgresql- 9.1 . 4 -AIX- 1.0 .tar.gz pgsql91 |
initialize the database...
important this step must be done by the postgres user, who must own the $PGDATA directory. |
initdb -E UTF8 --locale=C |
Configure
edit $PGDATA/pg_hba.conf
local all all ident host all all 127.0 . 0.1 / 32 md5 host all all 10.5 . 160.0 / 20 md5 # your local subnet *OR* host all all 0.0 . 0.0 / 0 md5 # full WAN |
edit $PGDATA/postgresql.conf and find/set the following. some are # commented, some aren't, be sure to delete the # if you edit a value...
listen_address = '0.0.0.0' ## listen to all IPv4 interfaces only. AIX IPv6 is somewhat broken. shared_buffers = 256MB # min 128kB - FIS SV suggests max 2048MB for a large system work_mem = 16MB # min 64kB maintenance_work_mem = 128MB # min 1MB. use as much as 1024MB for a large scale server to speed up index creation effective_cache_size = 512MB # this should be approximately the value of 'cached' memory during normal system operation logging_collector = on log_line_prefix = '%t %u@%h[%d|%p]: ' |
The values should be adjusted to suit the application. shared_buffers usually should be no more than 2GB even on very large systems. adjust the work_mem down if you expect a large number of concurrent queries as this can be allocated several times for a complex query.
AIX Kernel Tuning Unlike Solaris and Linux, the AIX 6.1 Kernel does not need any shmmax or other tuning for Postgres, all defaults are suitable for any usage. |
Run
as postgres...
pg_ctl start |
Admin
as postgres...
$ psql psql ( 9.1 . 4 ) Type "help" for help. postgres=# create user myusername with createdb createuser password 'mypassword' ; CREATE ROLE postgres=# create user myapp with password 'apppass' ; CREATE ROLE postgres=# create database myapp with owner myapp; CREATE DATABASE postgres=# \q $ |
autostart
create /etc/rc.d/init.d/postgres91
#!/usr/bin/ksh # simple postgres sysVinit script # # Make sure that /opt and pgdata is mounted ##################################### [ ! -d /opt/pgsql91 ] && exit 1 [ ! -d /u10/pgsql91 ] && exit 1 export PATH=/usr/bin:/opt/pgsql91/bin export PGDATA=/u10/pgsql91/data ## export LD_LIBRARY_PATH=/path/to/nonstandard/pgsql91/lib su postgres -c "pg_ctl $1" |
as root...
chmod +x /etc/rc.d/init.d/postgres91 cd /etc/rc.d/rc2.d ln -s ../init.d/postgres91 Kpostgres91 ln -s ../init.d/postgres91 Spostgres91 |
Caveat sysVinit rc.d directories work somewhat differently in AIX than they do in Solaris or Linux. |
To start postgres, as root...
/etc/rc.d/init.d/postgres91 start |
or stop or restart or reload
-- john r pierce 37N 122W somewhere on the middle of the left coast
В списке pgsql-general по дате отправления: