环境 虚拟机centos7.6 HA1:192.168.99.200 HA2:192.168.99.202 PostgreSQL 12.1 repmgr 5.0.0
$ su root
--创建系统用户和组
# groupadd postgres -g 1001
# useradd postgres -g 1001 -u 1001
# id postgres
uid=1001(postgres) gid=1001(postgres) groups=1001(postgres)
# cd /opt
--源文件解压目录
# mkdir -p /opt/postgresql-12.1
# chown postgres:postgres postgresql-12.1
--安装文件目录
# mkdir -p /opt/pg12
# chown -R postgres:postgres pg12
# chmod 0700 pg12
# ln -s /opt/pg12 /opt/pgsql
--数据目录
# mkdir -p /opt/data6000
# chown -R postgres:postgres data6000
# chmod 0700 data6000
--归档目录
# mkdir -p /opt/archive6000
# chown -R postgres:postgres archive6000
# chmod 0700 archive6000
# su postgres
$ wget https://ftp.postgresql.org/pub/source/v12.1/postgresql-12.1.tar.gz
$ chmod 750 postgresql-12.1.tar.gz
$ tar zxvf postgresql-12.1.tar.gz
$ cd postgresql-12.1/
--编译
$ ./configure --prefix=/opt/pg12 --with-pgport=6000
--安装
$ gmake world && gmake install-world
--配置开机自启动
$ su root
# cp /opt/postgresql-12.1/contrib/start-scripts/linux /etc/init.d/postgres-12
# chmod +x /etc/init.d/postgres-12
# chkconfig postgres-12 on
# vi /etc/init.d/postgres-12
#! /bin/sh
## EDIT FROM HERE
prefix=/opt/pgsql
PGDATA="/opt/data6000"
PGUSER=postgres
## STOP EDITING HERE
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="$prefix/bin/postmaster"
PGCTL="$prefix/bin/pg_ctl"
set -e
# Only start if we can find the postmaster.
test -x $DAEMON ||
{
echo "$DAEMON not found"
if [ "$1" = "stop" ]
then exit 0
else exit 5
fi
}
# Parse command line parameters.
case $1 in
start)
echo -n "Starting PostgreSQL: "
su - $PGUSER -c "$PGCTL -D '$PGDATA' start >>/dev/null &"
echo "ok"
;;
stop)
echo -n "Stopping PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s"
echo "ok"
;;
restart)
echo -n "Restarting PostgreSQL: "
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s"
su - $PGUSER -c "$PGCTL -D '$PGDATA' start >>/dev/null &"
echo "ok"
;;
reload)
echo -n "Reload PostgreSQL: "
su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"
echo "ok"
;;
status)
su - $PGUSER -c "$PGCTL status -D '$PGDATA'"
;;
*)
# Print help
echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2
exit 1
;;
esac
exit 0
--删除源文件
# cd /opt
# rm -rf postgresql-12.1/
--初始化数据目录
# su postgres
$ /opt/pgsql/bin/initdb \
-D/opt/data6000 \
-EUTF8 \
-Upostgres \
-W
--服务启停
# service postgres-12 start | stop
$ /opt/pgsql/bin/pg_ctl -D /opt/data6000 start |stop
$ vi postgresql.conf
listen_addresses = '*'
port=6000
wal_level=replica
archive_mode=on
archive_command='cp %p /opt/archive6000/%f'
max_wal_senders=10
wal_keep_segments=512
hot_standby=on
primary_conninfo='host=192.168.99.202 port=6000 user=repuser'
logging_collector=on
log_destination=csvlog
log_directory='/opt/data6000/pg_log'
log_filename='pg_log_%Y-%m-%d_%H%M%S.log'
log_file_mode=0600
log_truncate_on_rotation=on
log_rotation_age=1d
log_rotation_size=10MB