zoukankan      html  css  js  c++  java
  • PostgreSQL数据库主从部署

    一、基础环境

    1、操作系统:CentOS 7.3

    2、PostgreSQL:10.3

    3、主节点:192.168.0.101 从节点:192.168.0.102

    二、部署主从

    1、安装postgreSQL

    主节点与从节点均安装postgreSQL.

    2、配置主从

    主节点(192.168.0.101)配置

    (1)创建归档目录

    mkdir -p /opt/pgsql/pg_archive

    (2)创建一个数据库用户replica进行主从同步

    postgres用户登录到数据库:

    su postgres
    cd /usr/local/pgsql/bin
    ./psql

    create role replica login replication encrypted password '123456';

    (3)修改pg_hba.conf,增加两行配置,允许replica用户来同步

    vi /usr/local/pgsql/data/pg_hba.conf

    host all all 192.168.0.102/32 trust #允许从服务器连接到主服务器
    host replication replica 192.168.0.102/32 md5 #允许从服务器使用replica用户来复制

    (4)修改postgresql.conf

    vi /usr/local/pgsql/data/postgresql.conf

    listen_addresses = '*' #监听所有IP
    archive_mode = on #允许归档
    archive_command = 'cp %p /opt/pgsql/pg_archive/%f' #用该命令来归档logfile segment
    wal_level = hot_standby
    max_wal_senders = 10 #这个设置可以最多有几个流复制连接
    wal_keep_segments = 256 #设置流复制保留的最多的xlog数目
    wal_sender_timeout = 60s #设置流复制主机发送数据的超时时间
    max_connections = 100 #从库的max_connections必须要大于主库

    (5)配置完两个文件后重启数据库

    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/logs/postgres.log restart

    (6)测试从服务器能否连接主服务器数据库

    从节点操作:

    su postgres
    /usr/local/pgsql/bin

    ./psql -h 192.168.0.101 -U postgres

    从节点(192.168.0.102)配置

    (1)从主节点拷贝数据到从节点

    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/logs/postgres.log stop #停数据库

    su postgres
    rm -rf /usr/local/pgsql/data/* #清空从节点数据

    /usr/local/pgsql/bin/pg_basebackup -h 192.168.0.101 -U replica -D /usr/local/pgsql/data/ -X stream -P # 从主节点拷贝数据到从节点(基础备份)

    mkdir -p /opt/pgsql/pg_archive #root用户下创建

    (2)配置recovery.conf

    su postgres
    cp /usr/local/pgsql/share/recovery.conf.sample /usr/local/pgsql/data/recovery.conf #拷贝配置文件

    vim recovery.conf

    standby_mode = on #说明该节点是从服务器
    primary_conninfo = 'host=192.168.0.101 port=5432 user=replica password=123456' #主节点的信息以及连接的用户
    recovery_target_timeline = 'latest'

    (3)配置postgresql.conf

    vi /usr/local/pgsql/data/postgresql.conf

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

    (4)配置完启动数据库

    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l /usr/local/pgsql/logs/postgres.log start

    三、验证主从

    方法一:

    登录主节点数据库执行如下命令:

    su postgres
    cd /usr/local/pgsql/bin
    ./psql

    select client_addr,sync_state from pg_stat_replication;

    结果如下:

    postgres=# select client_addr,sync_state from pg_stat_replication;
    client_addr | sync_state
    ---------------+------------
    192.168.0.102 | async
    (1 row)

    说明102服务器是从节点,在接收流,而且是异步流复制;

    方法二:

    在主节点与从节点分别执行如下命令

    ps -ef | grep postgres

    postgres   2903   2711  0 18:32 ?        00:00:00 postgres: wal sender process replica 192.168.0.102(32886) streaming 0/5000140

    可以看到从节点有wal receiver进程

    postgres   2572   2567  0 18:32 ?        00:00:00 postgres: wal receiver process   streaming 0/5000140

    主服务器上插入数据或删除数据,在从服务器上能看到相应的变化。从服务器上只能查询,不能插入或删除。

  • 相关阅读:
    k8s与监控--k8s部署grafana6.0
    执行kubectl create-f replicaset.yaml后k8s是如何工作的
    Kubernetes+Prometheus+Grafana部署笔记
    Kubernetes Storage Persistent Volumes
    Linux出现假死,怎么回事?
    《算法导论》
    各种算法的核心思想
    Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
    Java编程思想中关于闭包的一个例子
    Java编程思想第四版随书源码官方下载方法
  • 原文地址:https://www.cnblogs.com/vzhangxk/p/14181045.html
Copyright © 2011-2022 走看看