postgresql热备hot standby

作者: 清远_03d9 | 来源:发表于2019-06-19 14:11 被阅读4次

    Tags: 数据库
    [toc]

    postgresql在windows 环境下的热备hot standby

    标签(空格分隔): 未分类


    虚拟主机2台
    MASTER: 192.16.41.114(这个看实际情况来修改),后面简称M
    SLAVE: 192.16.41.112(这个看实际情况来修改),后面简称S

    Step1:安装PG数据库

    slave端可以只装数据库,不初始化数据库(安装好就不用动它了,要记得账号密码),因为后面需要把data文件家替换掉。
    程序位置:C:\Program Files\PostgreSQL\ ,位置没有具体的要求,可以随改。

    Step2:创建流复制用户

    master端执行:
    CREATE USER 用户名 replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD '密码';

    提供一下查询方法:
    SELECT rolname FROM pg_roles; 查询用户信息
    DROP ROLE 用户名 ; 删除某个用户

    Step3:配置Master端的访问文件pg_hba.conf,我的路径为:C:\Program Files\PostgreSQL\9.4\data

    增加一行:
    host replication repuser 192.16.41.112/16 md5
    说明:repuser是上面新建的用户,后面的ip地址是该用户的地址,改成任何地址都可以过来访问。
    后期安全起见可以指定访问的ip

    Step4:配置MASTER端配置文件 C:\Program Files\PostgreSQL\9.4\data\postgresql.conf

    配置的时候为了方便可以放到这个文件后面,因为这些配置默认都是被注释的。所有本质上都是唯一的,不用担心其他地方配置过了
    max_wal_senders = 1
    wal_level = hot_standby
    archive_mode = on
    archive_command = 'cd ./'

    hot_standby = on
    wal_keep_segments = 64

    注:max_wal_senders是Slave库的节点数,有多少个slave库就设多少,
    wal_level是write ahead log参数值,设置流复制务必将此值更新成hot_standby
    wal_keep_segments默认值是16,是PG_XLOG下的日志文件数相关参数
    archive也可以选择关闭,归档是定时恢复用的,流复制不是必须的

    Step5:主库备份(Master端)

    5.1:开启文件备份,前提是wal_level参数值必须是archive或者hot_standby,

    select pg_start_backup('Replition work');

    5.2:拷贝C:\Program Files\PostgreSQL\9.4\data文件夹,并复制到Slave端上,是data下面的所有的文件哦

    Slave端如果已经安装了postgres数据库,可以先停掉Slave端数据库(不停止有文件不能操作),将data文件夹中内容清空。将master中data文件夹中内容拷贝到slave中相同文件夹下。

    5.3:上述步骤完成后,结束master端的备份

    select pg_stop_backup(),current_timestamp;

    Step6:修改Slave端配置信息

    6.1 :postgresql.conf

    这个文件由于是拷贝了的,所以可以不用修改

    6.2:recovery.conf文件

    将C:\Program Files\PostgreSQL\9.4\share\recovery.conf.sample文件拷贝到C:\Program Files\PostgreSQL\9.4\data文件夹下,重命名为recovery.conf
    在该文件末尾新增以下内容:
    standby_mode ='on'
    primary_conninfo='host=192.16.41.114 port=5432 user=repuser password=repuser keepalives_idle=60'
    说明:上面的地址 host= 是master的地址,端口也是,user和password是第step 2创建的用户。

    6.3:配置.pgpass文件(slave端)

    该文件的默认地址在:C:\Users\Administrator\AppData\Roaming\postgresql。这个文件里面可以放入连接远程数据库的默认账号密码,免去手动连接输入账号密码。
    在该文件后面新增一行:
    192.16.41.114:5432:postgres:repuser:repuser

    6.4:删除slave端(从master端拷过来的)的postmaster.pid文件和pg_xlog文件夹中内容。在C:\Program Files\PostgreSQL\9.4\data里面

    Step7:启动Slave库

    打开Slave上面的数据库,可以看到slave和master上面的数据库是一样的。

    Step8:测试!

    相关文章

      网友评论

        本文标题:postgresql热备hot standby

        本文链接:https://www.haomeiwen.com/subject/ophqqctx.html