更新时间:2024-06-14 10:25:53

前期环境准备配置

  1. 查看恢复到的单机路径下的数据,如图8-1,这里以/res为例。若要将单机扩展成集群,请确保配置的从节点与主节点数据库版本一致。此章节步骤只做简单指导,实际各项参数请按需要进行配置。

    image28.png

    恢复路径

  2. 在每个节点上配置 /etc/hosts文件。按照实际需要修改命令中的IP与hostname。

    echo -e "10.0.0.11 master\n10.0.0.12 slave " >> /etc/hosts

    #执行一次即可

    image29.png

    配置hosts文件

  3. 配置免密登陆。每个节点执行。

    su - postgres

    ssh-keygen -t rsa -f /home/postgres/.ssh/id_rsa -P ""

    cd ~/.ssh/

    ssh-copy-id postgres@master # 三台主机执行,master为主节点hostname

    scp authorized_keys <postgres@slave:~/.ssh> # 只在master主机执行

PostgreSQL流复制结构配置

  1. 主节点(master)修改恢复之后的实例postgresql.conf文件配置。这里只对部分参数做解释,其余参数请按照实际需要进行配置。

    设置max_wal_senders,在主节点(master)设置,是从机连接到master的并发连接数之和。按照实际需要设置即可。该值不能超过系统的最大连接数(max_connections),可以允许超过实际的流复制用户数。

    image30.png

    修改postgresql.conf文件

    wal_level = hot_standby #这里只是举例,请按照需要设置参数值

    image31.png

    postgresql.conf文件

    若需要开启归档,请创建新的归档路径,作为恢复实例的归档路径。如下图举例,实际路径属性请按实际用户与要求设置。开启归档,非必须操作。

    image32.png

    创建路径

    archive_mode = on

    archive_command = 'cp %p /resarch/%f'
    #/resarch为归档路径,按实际路径配置即可

    image33.png

    postgresql.conf文件

    删除或者重命名recovery.done文件。这个文件是做数据恢复时保存的文件。

    image34.png

    重命名recovery.done文件

  2. 配置pg_hba.conf文件。按实际需要添加流复制用户权限。

    image35.png

    修改pg_hba.conf文件

  3. 登陆主库,在主库中创建流复制用户与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';

  4. 从节点(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是流复制用户。

    image36.png

    从节点执行流复制

  5. 从节点(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为流复制用户密码。

    image37.png

    从节点(slave)配置recovery.conf文件

  6. 启动从节点实例,备节点启动后为只读模式。可通过如下命令查看主从环境同步状态。

    image38.png

    从节点(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。

    image39.png

    从节点(slave)同步状态

    或者通过查看postgres进程确定主从状态。

    主节点进程含有wal sender process的进程。

    image40.png

    主节点进程

    从节点进程含有wal receiver process的进程。

    image41.png

    从节点进程