postgresql安装及主从部署

安装postgresql

使用源码安装

  1. 下载源码包

    1
    wget https://ftp.postgresql.org/pub/source/v9.6.3/postgresql-9.6.3.tar.bz2
  2. 解压

    1
    tar xjvf postgresql-9.6.3.tar.bz2
  3. 进入解压目录,指定安装目录,编译

    1
    2
    3
    ./configure --prefix=/usr/local/pgsql
    make
    make install

configure
时可能会遇到报错,安装对应的依赖

1
2
yum install zlib-devel
yum install readline-devel

添加用户, 设置目录权限

1
2
3
4
adduser postgres
passwd postgres
mkdir -p /usr/local/pgsql/data
chown -R postgres:root /usr/local/pgsql

设置环境变量

1
2
3
vi /etc/profile
export PATH=$PATH:/usr/local/pgsql/bin
export PGDATA=/usr/local/pgsql/data;

使环境变量生效

1
source /etc/profile

切换用户,初始化数据

1
2
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

开启远程连接

编辑pg_hba.conf

1
vi /usr/local/pgsql/data/pg_hba.conf

修改

1
host all all 127.0.0.1/32 trust


1
host all all 0.0.0.0/0 trust

编辑postgresql.conf文件

1
/usr/local/pgsql/data/postgresql.conf

定位到#listen_addresses=’localhost’,取消注释并修改为

1
listen_addresses = '*'

启动postgresql

在 postgres 用户下启动

1
pg_ctl start

主从服务部署

配置主库

  1. 编辑postgresql.conf 文件,修改以下内容

    1
    2
    3
    wal_level = hot_standby(默认是minimal)
    max_wal_senders=2(默认是0
    wal_keep_segments=64(默认是0
  2. 进入psql,创建一个用来同步数据的超级用户

1
create user repl superuser password '123456';
  1. 编辑pg_hba.conf文件,新增以下内容
    1
    host repliction repl 从库 ip md5

从库配置

从库安装

从库安装步骤和主库一致。

从库生成基础备份

在基础备份前清空从库数据目录,这里是/usr/local/postgresql/data,执行如下命令

1
./pg_basebackup -h 主库ip地址 -U repl -F p -x -P -R -D /usr/local/postgresql/data/ -l replbackup20180502

输入密码后,显示如下图表示基础备份成功

修改从库配置

编辑从库数据目录下的postgresql.conf文件,修改hot_standby=off为

1
hot_standby=on

启动从库

切换到postgres账户下,启动

1
pg_ctl start

查看主库从库状态

在主库和从库下分别输入

1
pg_controldata

主库状态为

从库状态为

参考资料:

  1. postgresql - 三种安装方式
  2. PostgreSQL 10.0 源码安装 in Centos
  3. Postgresq9.6主从部署
  4. PostgreSQL 9.5.5主从实现之异步流复制(Hot Standby)