zoukankan      html  css  js  c++  java
  • windows下postgresql主从热备

    前置条件

    1. 主从服务器需安装相同版本的postgresql数据库;
    2. 确保主从服务器能相互访问对方的postgresql数据库;

    主端

    1.创建流复制用户

    CREATE USER 用户名 replication LOGIN CONNECTION LIMIT 3 ENCRYPTED PASSWORD ‘密码’;
    

    2.修改pg_hba.conf文件

    该文件一般位于postgresql数据库安装目录下的data文件夹内 添加内容:host replication 流复制用户名 从端地址 md5 如:host replication hotbackup 192.168.36.26/32 md5

    3.修改postgresql.conf文件

    该文件一般位于postgresql数据库安装目录下的data文件夹内 添加如下内容

    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也可以选择关闭,归档是定时恢复用的,流复制不是必须的

    4.主端data备份

    开启文件备份,前提是wal_level参数值必须是archive或者host_standby,在上一步已经配置过了。执行如下sql开启备份:

    select pg_start_backup('Replition work');
    
    1. 关闭从端数据库服务;
    2. 清空从端的data下的所有内容;
    3. 然后将主端data的所有内容复制到从端的data下;
    4. 删除从端下的postmaster.pid和pg_xlog下的内容;
    5. 结束主端的备份,执行如下sql:
    select pg_stop_backup();
    
    1. 修改从端pg_hba.conf文件使其主端能访问;

    5.修改从端recovery.conf配置文件

    将数据库安装目录下share文件夹内的recovery.conf.sample文件复制到安装目录下data文件夹内,修改名称recovery.conf,添加如下内容:

    standby_mode ='on' 
    primary_conninfo='host=192.168.36.25 port=5432 user=hotbackup password=smgi keepalives_idle=60'
    

    说明:上面的地址 host=主端的地址,port端口也是,user和password是之前创建的流复制用户和密码

    6.修改从端pgpass.conf配置文件

    该文件的默认地址在:C:\Users\Administrator\AppData\Roaming\postgresql。 这个文件里面可以放入连接远程数据库的默认账号密码,免去手动连接输入账号密码。 添加如下内容:

    192.168.1.160:5432:postgres:repuser:repuser
    

    说明:上面ip是主端的地址,端口也是,postgres是你的数据库名,repuser:repuser是账号和密码,是第二步创建的流复制用户名和密码。

    7.启动从端数据库

    打开从端的数据库, 可以看到从端和主端上面的数据库是一样的,当对主端数据库进行insert,update,delete操作时,从端也会同步更新数据,且从端的会话为只读,不能进行insert,update,delete操作。 如果从端数据库服务启动失败,则需要看data/pg_log的日志。

    showtooltip

  • 相关阅读:
    CentOS7中安装Mysql5.7
    CentOS7安装JDK
    设计模式之策略模式
    jmeter:文件下载连接请求保存文件
    pytest框架
    jmeter:设置全局默认请求
    jmeter:全局设置变量参数
    Badboy报错:不支持XXX属性、方法
    jmeter配置元器件:CSV Data Set Config
    jmeter报错:java.lang.IllegalArgumentException: Filename must not be null or empty
  • 原文地址:https://www.cnblogs.com/coding8832/p/14473748.html
Copyright © 2011-2022 走看看