前期环境准备配置
-
查看恢复到的单机路径下的数据,如图8-1,这里以/res为例。若要将单机扩展成集群,请确保配置的从节点与主节点数据库版本一致。此章节步骤只做简单指导,实际各项参数请按需要进行配置。
恢复路径
-
在每个节点上配置 /etc/hosts文件。按照实际需要修改命令中的IP与hostname。
echo -e "10.0.0.11 master\n10.0.0.12 slave " >> /etc/hosts
#执行一次即可
配置hosts文件
-
配置免密登陆。每个节点执行。
su - postgres
ssh-keygen -t rsa -f /home/postgres/.ssh/id_rsa -P ""
cd ~/.ssh/
ssh-copy-id postgres@master
# 三台主机执行,master为主节点hostnamescp authorized_keys <postgres@slave:~/.ssh>
# 只在master主机执行
PostgreSQL流复制结构配置
-
主节点(master)修改恢复之后的实例postgresql.conf文件配置。这里只对部分参数做解释,其余参数请按照实际需要进行配置。
设置max_wal_senders,在主节点(master)设置,是从机连接到master的并发连接数之和。按照实际需要设置即可。该值不能超过系统的最大连接数(max_connections),可以允许超过实际的流复制用户数。
修改postgresql.conf文件
wal_level = hot_standby #这里只是举例,请按照需要设置参数值
postgresql.conf文件
若需要开启归档,请创建新的归档路径,作为恢复实例的归档路径。如下图举例,实际路径属性请按实际用户与要求设置。开启归档,非必须操作。
创建路径
archive_mode = on
archive_command = 'cp %p /resarch/%f'
#/resarch为归档路径,按实际路径配置即可postgresql.conf文件
删除或者重命名recovery.done文件。这个文件是做数据恢复时保存的文件。
重命名recovery.done文件
-
配置pg_hba.conf文件。按实际需要添加流复制用户权限。
修改pg_hba.conf文件
-
登陆主库,在主库中创建流复制用户与pgpool用户。用户名与密码按照实际需要设置。your_password设置自己的密码。
CREATE USER stream_replication replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD 'your_password';
CREATE USER srcheck replication LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD 'your_password';
-
从节点(slave)执行流复制命令,将主库数据复制到备库。
pg_basebackup -D $PGDATA --format=p -h masterhostname/ip -p port -U stream_replication -W
其中,$PGDATA是从节点数据路径;masterhostname/ip填写主节点的ip或者hostname(前提是配置了hosts文件),port填写主节点实例端口,stream_replication是流复制用户。
从节点执行流复制
-
从节点(slave)配置recovery.conf文件。若不存在,添加这个文件。内容为:
standby_mode='on'
primary_conninfo = 'host=master port=5432
user=stream_replication password=your_password'
restore_command = ''
recovery_target_timeline = 'latest'
其中,master可填写主节点ip或者hostname(前提是配置了hosts文件),5432为主库端口号,stream_replication为流复制用户,your_password为流复制用户密码。
从节点(slave)配置recovery.conf文件
-
启动从节点实例,备节点启动后为只读模式。可通过如下命令查看主从环境同步状态。
从节点(slave)启动实例状态
select pg_is_in_recovery();
#主库上执行命令返回f,备库上返回t。select txid_current_snapshot();
#执行命令查看快照,它返回主库记录点、备库记录点;主库每增加一条写入,记录点的值就会加1。select from pg_stat_replication;
#令可以查看主备同步状态。字段state显示的同步状态有:startup(连接中)、catchup(同步中)、streaming(同步);字段sync_state显示的模式有:async(异步)、sync(同步)、potential。从节点(slave)同步状态
或者通过查看postgres进程确定主从状态。
主节点进程含有wal sender process的进程。
主节点进程
从节点进程含有wal receiver process的进程。
从节点进程