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

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

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    现在使用控件, 更喜欢继承(覆盖控件已有的函数,很奇怪的一种使用方式)
    Controls 属性与继承 TShape 类的小练习(使用TShape可以解决很多图形问题)
    QT创建窗口程序、消息循环和WinMain函数(为主线程建立了一个QEventLoop,并执行exec函数)
  • 原文地址:https://www.cnblogs.com/vzhangxk/p/14181045.html
Copyright © 2011-2022 走看看