postgreSQL 主从安装部署

官网:https://www.postgresql.org/
中文社区:http://www.postgres.cn/index.php/v2/home
中文文档:https://www.yiibai.com/manual/postgresql/
源码下载地址:https://www.postgresql.org/ftp/source/

一、环境准备

准备2台主机,添加postgres用户并设置用户密码,配置postgres用户在三台物理节点之间免密。
1、服务对应关系

IP 主机名
192.168.49.131 Master
192.168.49.132 Slave

2、添加postgres用户

# groupadd postgres
# useradd -g postgres postgres
# echo '123456' | passwd --stdin postgres

3、创建数据目录

# mkdir -p /data/pgsql/data
# chown postgres.postgres /data/ -R
二、编译安装并初始化

1、源码下载并编译安装

# yum -y install readline-devel zlib-devel flex      //安装依赖包
# wget https://ftp.postgresql.org/pub/source/v11.4/postgresql-11.4.tar.gz  //下载源代码
# tar xf postgresql-11.4.tar.gz 
# cd postgresql-11.4
# ./configure --prefix=/usr/local/postgres    //编译安装
# make
# make install

2、声明环境

# cat >> /etc/profile << END
export MANPATH=/usr/local/postgres/share/man
export LD_LIBRARY_PATH=/usr/local/postgres/lib
export PATH=/usr/local/postgres/bin:\$PATH
END

# source /etc/profile

3、初始化

# su postgres -c 'pg_ctl -D /data/pgsql/data initdb'

4、配置自启动

#将源代码 contrib/start-scripts/linux 脚本文件,拷贝为 /etc/init.d/postgres
# cp contrib/start-scripts/linux  /etc/init.d/postgres
# chmod 755 /etc/init.d/postgres
###修改为安装的路径
# egrep 'prefix|PGDATA|PGUSER' /etc/init.d/postgres  | head -6
# Installation prefix
prefix=/usr/local/postgres
PGDATA="/data/pgsql/data"
PGUSER=postgres
PGLOG="$PGDATA/serverlog"
DAEMON="$prefix/bin/postmaster"
三、master上安装

1、启动服务并测试

# cd /data/pgsql/data

###修改主配置文件postgresql.conf监听地址为*
# cat >> postgresql.conf << END
listen_address='*'
END

###修改鉴权相关文件pg_hba.conf,添加以下一行配置
# cat >> pg_hba.conf << END
host all all 192.168.49.0/24 trust
#host all all 0.0.0.0/0 md5
END

###启动服务
# /etc/init.d/postgres start    或者 su postgres -c 'pg_ctl start -D /data/pgsql/data -l serverlog'

###连接测试
# netstat -an | grep 5432
# psql -U postgres -p 5432  ###psql –h 主机ip –p 端口号 –U 用户名

###设置密码
postgres=# alter user postgres with password 'postgres';
ALTER ROLE
postgres=# exit

###重新登陆
# psql -U postgres -p 5432 -W

2、master上新建用户用来进行主从同步

postgres# CREATE ROLE replica login replication encrypted password 'replica'

3、修改pg_hba.conf,允许用户同步

#允许192.168.49.0网段主机连接到主服务器
host     all             all          192.168.49.0/24          trust   
#允许192.168.49.0网段主机使用replica用户来复制
host   replication      replica       192.168.49.0/24          md5   

4、修改postgresql.conf

listen_addresses = '*'   #监听所有IP
wal_level = hot_standby 
max_wal_senders = 32     #这个设置了可以最多有几个流复制连接,差不多有几个从,就设置几个wal_keep_segments = 256
wal_sender_timeout = 60s #设置流复制主机发送数据的超时时间
max_connections = 100    #这个设置要注意下,从库的max_connections必须要大于主库的

5、重启服务器,并测试从备份服务器是否能够连接到主服务器

/etc/init.d/postgres restart           #master服务器上执行
psql -h 192.168.49.131 -U postgres     #salve服务器执行

6、将主节点备份到备份节点

# 从master[131]拷贝数据到salve[132]上(基础备份)
pg_basebackup -h 192.168.49.131  -U replica -D /data/pgsql/data -X stream -P  
四、salve配置

1、配置recovery.conf

cp /usr/local/postgres/share/recovery.conf.sample /data/pgsql/data/recovery.conf

2、配置postgresql.conf

wal_level = hot_standby
max_connections = 1000   #一般查多于写的应用从库的最大连接数要比较大
hot_standby = on         #说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s  #数据流备份的最大延迟时间
wal_receiver_status_interval = 10s #多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on      #如果有错误的数据复制,是否向主进行反馈

3、重启备份服务器

/etc/init.d/postgres restart
五、验证

1、在主节点上执行

postgres=# select client_addr,sync_state from pg_stat_replication;
  client_addr  | sync_state 
---------------+------------
 192.168.49.132 | async
(1 行记录)

2、ps aux | grep postgres查看wal进行,主服务器上描述是sender,备份服务器上描述是reciver,说明备份复制部署成功。

你可能感兴趣的:(mysql数据库)