注:是CentOS, PG版本是10
一、PG单机安装
准备两台服务器
主机名 | 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连接(自己测试吧,就不上图了)
二、集群整合
1.配置hosts
在主、备服务器上都设置
[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下创建!!!
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用户下执行:
pg_basebackup -h master -U repuser -D /var/lib/pgsql/10/data/ -X stream -P
# 此处会让你输入在master上配置的那个同步WAL日志的账号的密码也就是123456
上面这条命令的意思是把master节点中PG data目录下的文件及文件夹全部拷贝到slave的data目录下面,此处可能涉及到Linux用户权限,使用
chown postgres.postgres -R data
应该可以把data目录的组及用户改为postgres
8.master及slave配置recovery.conf
master节点:
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连接两个数据库,在主库中新建数据库及表,并添加数据。可以在从库中查看到相应新增的数据库及表和数据。