主机:192.168.100.70

从机:192.168.100.71

通用配置(即主从都要配置)

修改/etc/postgresql/10/main/pg_hba.conf

host   all all  192.168.100.xx/32   trust   #允许xx服务器连接到本机

host    replication  guoxm    192.168.100.xx/32   md5   #运行guoxm用户在xx上复制本机数据

  

例如:70服务器是主服务器,那么xx就是从服务器

修改/etc/postgresql/10/main/postgresql.conf

listen_addresses = ‘*’   #监听所有ip

wal_level = hot_standby    #热备模式

max_wal_senders = 1   #最多有1个流复制连接

wal_sender_timeout = 60s    #主机发送流超时时间

max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间

wal_receiver_status_interval = 10s # 多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间

hot_standby_feedback = on   #错误反馈

max_connections = 100   #最大连接时间,如果要支持主从切换那么就配置成一样

  

切换到postgres用户

sudo su - postgres

这个时间就已经进入到PostgreSQL的home目录(/var/lib/postgresql)下了

创建recovery.conf.upgrade升级文件

touch recovery.conf.upgrade

然后编辑recovery.conf.upgrade

vi recovery.conf.upgrade

编辑如下内容

standby_mode = on

primary_conninfo = 'host=192.168.100.71 port=5432 user=guoxm password=guoxm'

recovery_target_timeline = 'latest'

trigger_file = '/var/lib/postgresql/10/main/postlog/trigger.kenyou'

  

注意:host配置的是主服务器的ip和端口以及用户名密码

保存并退出

创建recovery.conf.downgrade降级文件

standby_mode = on

primary_conninfo = 'host=192.168.100.71 port=5432 user=guoxm password=guoxm'

recovery_target_timeline = 'latest'

  

其实就是比升级文件少了一个trigger_file配置项而已

注意:host配置的是主服务器的ip和端口以及用户名密码

保存并退出

因为/var/lib/postgresql/10/main/文件夹下并没有postlog所以要手动创建postlog文件夹

mkdir 10/main/postlog

以上是主从服务器都要配置的部分

从库切换成主库

注意,从库升级为主库需要手动创建trigger.kenyou文件(主库切从库不用创建)

touch 10/main/lostlog/trigger.kenyou

然后,将recovery.conf.upgrade文件copy到10/main文件夹中,并改名为recovery.conf

cp recovery.conf.upgrade 10/main/recovery.conf

退出到原用户

exit

重启数据库服务

sudo service postgresql restart

然后查看日志,检查服务是否起来了

tail –f /var/log/postgresql/postgresql-10-main.log

主库切换成从库

前面步骤和从库切换成主库差不多,区别就是不用创建trigger.kenyou文件

只需要将recovery.conf.upgrade文件copy到10/main文件夹中,并改名为recovery.conf

然后,将recovery.conf.downgrade文件copy到10/main文件夹中,并改名为recovery.conf

cp recovery.conf.downgrade 10/main/recovery.conf

退出到原用户

exit

重启数据库服务

sudo service postgresql restart

然后查看日志,检查服务是否起来了

tail –f /var/log/postgresql/postgresql-10-main.log

编写升级降级脚本

vi switch.sh

编辑如下内容

#!/bin/bash

downgrade() {

   echo "[$(date "+%Y-%m-%d %H:%M:%S")] Database role downgradeing..."

   echo 'guoxm' | sudo -S cp recovery.conf.downgrade 10/main/recovery.conf

   restartPostgreSqlServer $@

   echo "[$(date "+%Y-%m-%d %H:%M:%S")] Database role downgrade success"

}

upgrade() {

   echo "[$(date "+%Y-%m-%d %H:%M:%S")] Database role upgradeing..."

   echo 'guoxm' | sudo -S cp recovery.conf.upgrade 10/main/recovery.conf

   echo 'guoxm' | sudo -S touch 10/main/postlog/trigger.kenyou

   restartPostgreSqlServer $@

   echo "[$(date "+%Y-%m-%d %H:%M:%S")] Database role upgrade success"

}

setOwner() {

   echo "[$(date "+%Y-%m-%d %H:%M:%S")] File recovery.conf owner changeing..."

   echo 'guoxm' | sudo -S chown -R postgres:postgres 10/main/recovery.conf

   echo "[$(date "+%Y-%m-%d %H:%M:%S")] File recovery.conf  owner change success"

}

restartPostgreSqlServer() {

   setOwner $@

   echo "[$(date "+%Y-%m-%d %H:%M:%S")] Database server restart..."

   echo 'guoxm' | sudo -S service postgresql restart

   echo "[$(date "+%Y-%m-%d %H:%M:%S")] Database server restart success"

}

if [ "$1" != "" ]; then

    obj=$1

    shift

else

    echo 'Using parameters: downgrade | upgrade'

fi

case $obj in

    downgrade)

        downgrade $@

    ;;

    upgrade)

        upgrade $@

    ;;

esac

  

保存并退出

然后赋予可执行权限

sudo chmod u+x switch.sh

这样就可以通过脚本切换主从角色了

Ubuntu PostgreSql主从切换的更多相关文章

  1. PostgreSQL手动主从切换

    主从切换操作: 1>主库宕机或者测试主备切换情况下停掉主库:systemctl stop postgres 从库会报日志错误信息:[root@db02 /]# cd /var/postgresq ...

  2. PostgreSQL高可用集群方案收集/主从切换/一主多从(待实践)

    对于业内来说,基本都在围绕主从切换的高可用方案: http://www.10tiao.com/html/175/201509/210974337/1.html https://www.jianshu. ...

  3. Mycat读写分离、主从切换、分库分表的操作记录

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  4. postgresql主从配置

    master:10.0.1.114 slaver:10.0.1.116 一.yum安装https://blog.csdn.net/weixin_41048363/article/details/803 ...

  5. postgresql主从同步配置

    前言 不久前,公司的一台物理机器硬件坏了,导致运行在其上的虚拟机都挂了.很不凑巧的是,我负责的那台虚拟机的系统盘坏了(ps:感觉老天在玩我),导致里面的数据永远的离我而去(ps:当时我的内心是崩溃的) ...

  6. mycat(读写分离、负载均衡、主从切换)

    博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 1.环境准备 1.1新增两台虚拟机 mycat01:192.168.247.81 mycat02:192.168.247 ...

  7. Redis集群(九):Redis Sharding集群Redis节点主从切换后客户端自动重新连接

    上文介绍了Redis Sharding集群的使用,点击阅读 本文介绍当某个Redis节点的Master节点发生问题,发生主从切换时,Jedis怎样自动重连新的Master节点 ​一.步骤如下: 1.配 ...

  8. redis主从配置及主从切换

    环境描述: 主redis:192.168.10.1 6379从redis:192.168.10.2 6380 一.主从配置 1.将主从redis配置文件redis.conf中的aemonize no ...

  9. mysql主从切换

    mysql 主从切换 主停,从做主步骤如下: 1 确认从服务器已经完成所有同步操作:stop slave io_thread show processlist 直到看到状态都为:xxx has rea ...

随机推荐

  1. opencv3.2+opencv_contrib+cmake

    转自原文 opencv3.2+opencv_contrib+cmake 心得体会 初学OpenCV发现opencv3.2(下载链接在附录)是没有xfeatures2d等模块的.第三方库opencv_c ...

  2. Spring Boot由jar包转成war包

    Spring Boot由jar包转成war包 spring boot 默认是以jar包形式启动web程序,在新建spring boot项目时候可以选择war包的启动方式. 建议在开发的时候建立以jar ...

  3. Java泛型(一):入门、原理、使用

    远在 JDK 1.4 版本的时候,那时候是没有泛型的概念的.当时 Java 程序员们写集合类的代码都是类似于下面这样: List list = new ArrayList(); list.add(&q ...

  4. gcc 源代码分析-前端篇2

    2. 对ID及保留字的处理    在c语言中,系统预留了非常多keyword.也被称为保留字,比方表示数据类型的int,short,char,控制分支运行的if,then等. 不论什么keyword, ...

  5. 为什么mysql中用\G表示按列方式显示

    关于mysql的错误 - no query specified 学习了:http://blog.csdn.net/tenfyguo/article/details/7566941 sql语句可以用分号 ...

  6. HDU 2196 Computer 树形DP经典题

    链接:http://acm.hdu.edu.cn/showproblem.php? pid=2196 题意:每一个电脑都用线连接到了还有一台电脑,连接用的线有一定的长度,最后把全部电脑连成了一棵树,问 ...

  7. 低调、奢华、有内涵的敏捷式大数据方案:Flume+Cassandra+Presto+SpagoBI

    基于FacebookPresto+Cassandra的敏捷式大数据 文件夹 1 1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 2 2.1 2.2 2.3 2.4 2.5 2.6 3 ...

  8. C语言之函数调用11—递归法求Hermite函数

    /*递归法! ========================================== 题目: Hermite 函数:输入n.x,求Hn(x)? H0(x)=1; H1(x)=2*x; H ...

  9. [ACM] FZU 1686 神龙的难题 (DLX 反复覆盖)

    Problem 1686 神龙的难题 Accept: 444    Submit: 1365 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Pro ...

  10. Android新手入门2016(8)--ListView之ArrayAdapter

    本文来自肥宝传说之路,引用必须注明出处! ListView是Android中经常使用的控件. 什么是列表视图,让我们先看看图: watermark/2/text/aHR0cDovL2Jsb2cuY3N ...