• 配置PostgreSQL Streaming Replication集群


    运行环境:

    Primary: 192.168.0.11

    Standby: 192.168.0.21, 192.168.0.22

    OS: CentOS 6.2

    PostgreSQL: 9.1.2 版本以上才支持Streaming Replication。

    1. 环境规划

       Primary和Standby节点最好有相同的环境。

    2. 安装PostgreSQL

    1)在Primary和Standy节点上安装PostgreSQL软件,安装路径为/opt/pgsql

    2)设置postgres用户的环境变量

         PGHOME=/opt/pgsql

         PGDATA=/home/postgres/main

         PATH=$PG_HOME/bin:$PATH:$HOME/bin

    3. Primary节点

    1)切换到postgres用户

        $su - postgres

    2)初始化数据库

        $initdb

    3)配置pg_hba.conf

         在# IPv4 local connections下面添加一行,设置PostgreSQL的访问及其权限

         host    all             all             192.168.0.1/24        trust

         在# replication privilege.下面添加一行,设置replication用户及权限

         host     replication     postgres        192.168.0.1/24       trust

    4)配置postgresql.conf

         配置监听,修改listen_addresses = 'localhost'

         listen_addresses = '*'     # what IP address(es) to listen on;

         配置Primary Replication参数

         wal_level = hot_standby

         max_wal_senders = 8

         wal_keep_segments = 32

         archive_mode = on

         archive_command = 'cp %p /home/postgres/archive/%f < /dev/null'

         "/home/postgres/archive"是Replication的archive的存储路径。PostgreSQL会将Replication的WAL保存在 "/home/postgres/archive"路径下。

    5) 启动Primary上的PostgreSQL数据库

        $pg_ctl start

    6) 在primary上执行以下命令

        $psql -c "SELECT pg_start_backup('label', true);"

        将Primary的PGDATA目录下的文件,除了postmaster.pid复制到Standby节点的“/home/postgres/main”目录下,该目录是 Standby节点上的PostgreSQL数据库的PGDATA目录。

        $rsync -a ${PGDATA}/ postgres@192.168.0.21:/home/postgres/main --exclude postmaster.pid

        $psql -c "SELECT pg_stop_backup();"

        192.168.0.21的/home/postgres/main目录下的内容为

    4. Standby节点

        PGDATA=/home/postgres/main

        Standby节点的PGDATA路径就是Primary节点的PGDATA的副本

    1)配置postgresql.conf

         设置hot_standby为

         hot_standby= on

    2)编辑recovery.conf,文件路径为$(PGDATA)/recovery.conf,内容为

    ---------------------------------------------------------------------------------------------------------------------------

    # Specifies whether to start the server as a standby. In streaming replication,

    # this parameter must to be set to on.
    standby_mode  = 'on'

    # Specifies a connection string which is used for the standby server to connect
    # with the primary.
    primary_conninfo = 'host=192.168.0.11 port=5432 user=postgres'
    # Specifies a trigger file whose presence should cause streaming replication to
    # end (i.e., failover).
    trigger_file = '/home/postgres/trigger'

    # Specifies a command to load archive segments from the WAL archive. If
    # wal_keep_segments is a high enough number to retain the WAL segments
    # required for the standby server, this may not be necessary. But
    # a large workload can cause segments to be recycled before the standby
    # is fully synchronized, requiring you to start again from a new base backup.
    restore_command = 'cp /home/postgres/archive/%f %p'

    --------------------------------------------------------------------------------



    3)复制pg_xlog下的所有文件到/home/postgres/archive目录下


    4)启动Standby节点,完成Replication。


    完成Streaming Replication配置。

    5. 验证

    使用psql连接primary,创建test数据库。刷新从节点,可以看到在其上也生成了test数据库。

    6. 问题

    1)Standby的data目录是空的,其所有配置均是在rsync之后;

    2)recovery.conf文件其实只需要修改standby_mode 和 primary_info,其余并不是必须的;

    3)注意Primary的防火墙,必要时关闭,免得干扰集群配置;

    4)如果从节点PostgreSQL已有数据,需要全部删除。

    参考:

    PostgreSQL配置Streaming Replication集群(http://www.cnblogs.com/marsprj/archive/2013/03/04/2943373.html)

    http://opensourcedbms.com/dbms/setup-replication-with-postgres-9-2-on-centos-6redhat-el6fedora/

  • 相关阅读:
    elastic search-php 多关键词查询实践(名称,日期,省份)
    记一次thinkphp 配置主从域名网站单点登录,退出
    thinkphp6 解决登录session跨域
    php富文本图片传递 通用css更改
    ELASTIC-PHP + IK分词器 + THINKPHP6 初次使用 (关键词查询)
    think-queue 加 redis实现批量导入excel
    百度api根据ip获取省市区
    php使用GD库将图片圆角 解决背景变黑问题 以及 图片丢失问题
    在树莓派上实现截图
    Arduino入门实践(五)--1、关于lcd的成像原理
  • 原文地址:https://www.cnblogs.com/geosky/p/3409730.html
Copyright © 2020-2023  润新知