CentOS7 安装PG集群

注:是CentOS, PG版本是10

1、PG单机安装

准备两台服务器web

主机名 IP hostname 端口
master 192.168.50.100 master 5432
slave 192.168.50.101 slave 5432

1.获取源

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y

2.使用yum安装

yum install postgresql10-contrib postgresql10-server -y

3.初始化数据库

  • 初始化数据库
  • 启动数据库
  • 添加到开机启动
/usr/pgsql-10/bin/postgresql-10-setup initdb
systemctl start postgresql-10
systemctl enable postgresql-10.service

4.配置数据库

  • 切换用户
  • 链接数据库
  • 设置数据库密码
  • 退出
su - postgres
psql
ALTER USER postgres WITH PASSWORD ‘password’;
\q

5.配置外网访问

  • 编辑pg_hba.conf文件
vi /var/lib/pgsql/10/data/pg_hba.conf
  • 翻到文件最后,将最后三行注释,并添加一行代码
host all all 0.0.0.0/0 md5
  • 编辑postgresql.conf文件,将 listen_addresses 修改成 listen_addresses = ‘*’
  • 重启postgresql
systemctl restart postgresql-10
  • 测试postgresql链接(本身测试吧,就不上图了)

2、集群整合

1.配置hosts

在主、备服务器上都设置sql

[root@master ~]# cat /etc/hosts
127.0.0.1   localhost
192.168.50.100 master
192.168.50.101 slave

2.[可选]初始化master数据库

上面已经介绍了如何初始化,这里不在讲解数据库

3.master建立PG用户

建立用户用户复制WAL日志,在psql下建立!!!centos

CREATE USER repuser replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD '123456';

4.配置master的pg_hba.conf

在最后一行加上下面内容服务器

host replication      repuser         slave          md5

5.配置master的postgresql.conf

listen_addresses = '*' 
port = 5432 
max_wal_senders = 10 
wal_level = replica
archive_mode = on 
archive_command = 'cd ./'
hot_standby = on
wal_keep_segments = 64
full_page_writes = on
wal_log_hints = on

6.重启数据库

systemctl restart postgresql-10

7.pg_basebackup 建立备库

在slave端的postgres用户下执行:svg

pg_basebackup -h master -U repuser -D /var/lib/pgsql/10/data/ -X stream -P
# 此处会让你输入在master上配置的那个同步WAL日志的帐号的密码也就是123456

上面这条命令的意思是把master节点中PG data目录下的文件及文件夹所有拷贝到slave的data目录下面,此处可能涉及到Linux用户权限,使用post

chown postgres.postgres -R data

应该能够把data目录的组及用户改成postgres测试

8.master及slave配置recovery.conf

master节点:rest

cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.done
# 注意!!! 上面复制的文件名后缀就是 .done,没有写错
vi /var/lib/pgsql/11/data/recovery.done

# 内容在下面:
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=slave port=5432 user=repuser password=123456'

slave节点:日志

cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.conf
vi /var/lib/pgsql/11/data/recovery.conf
#编辑内容以下
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=master port=5432 user=repuser password=123456'

9.查看进程状态

主库
查看主库的WAL日志发送进程是否正常

从库
查看从库WAL日志接收进程是否正常

10.重启主、备数据库使配置生效

使用navicate链接两个数据库,在主库中新建数据库及表,并添加数据。能够在从库中查看到相应新增的数据库及表和数据。