Ubuntu PostgreSql主从切换
主机: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主从切换的更多相关文章
- PostgreSQL手动主从切换
主从切换操作: 1>主库宕机或者测试主备切换情况下停掉主库:systemctl stop postgres 从库会报日志错误信息:[root@db02 /]# cd /var/postgresq ...
- PostgreSQL高可用集群方案收集/主从切换/一主多从(待实践)
对于业内来说,基本都在围绕主从切换的高可用方案: http://www.10tiao.com/html/175/201509/210974337/1.html https://www.jianshu. ...
- Mycat读写分离、主从切换、分库分表的操作记录
系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...
- postgresql主从配置
master:10.0.1.114 slaver:10.0.1.116 一.yum安装https://blog.csdn.net/weixin_41048363/article/details/803 ...
- postgresql主从同步配置
前言 不久前,公司的一台物理机器硬件坏了,导致运行在其上的虚拟机都挂了.很不凑巧的是,我负责的那台虚拟机的系统盘坏了(ps:感觉老天在玩我),导致里面的数据永远的离我而去(ps:当时我的内心是崩溃的) ...
- mycat(读写分离、负载均衡、主从切换)
博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 1.环境准备 1.1新增两台虚拟机 mycat01:192.168.247.81 mycat02:192.168.247 ...
- Redis集群(九):Redis Sharding集群Redis节点主从切换后客户端自动重新连接
上文介绍了Redis Sharding集群的使用,点击阅读 本文介绍当某个Redis节点的Master节点发生问题,发生主从切换时,Jedis怎样自动重连新的Master节点 一.步骤如下: 1.配 ...
- redis主从配置及主从切换
环境描述: 主redis:192.168.10.1 6379从redis:192.168.10.2 6380 一.主从配置 1.将主从redis配置文件redis.conf中的aemonize no ...
- mysql主从切换
mysql 主从切换 主停,从做主步骤如下: 1 确认从服务器已经完成所有同步操作:stop slave io_thread show processlist 直到看到状态都为:xxx has rea ...
随机推荐
- iis配置问题报错 -- Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies
具体提示: Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. 试图加载格式不正确的程序. ...
- mongodb 学习笔记 07 -- 数据备份、恢复
mongoexport 导出json或者csv格式 mongoimport 导入json或者csv mongodump 导出二进制bson结构数据以及索引信息 mongorestore 导入二进制文件 ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps 集成SP和Office App
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps 集成SP和Office App 你能够用两种 ...
- linux 下password加密程序(能够用于替换shadow文件里的用户password)
源代码例如以下: #include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]){ if(arg ...
- Android——隐藏输入法的小技巧
今天偶然在百度地图提供的DEMO里看到这样一段代码.认为确实是个小技巧,就写下来分享一下. 针对的问题: 我们在开发android界面的时候,常常使用EditText控件.然后每次进入这个页面的时候, ...
- SAM学习笔记
SAM学习笔记 后缀自动机(模板)NSUBSTR(Caioj1471 || SPOJ 8222) [题意] 给出一个字符串S(S<=250000),令F(x)表示S的所有长度为x的子串中,出现次 ...
- Java基础之对象序列化
1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现 ...
- c#初学12-12-为什么mian函数必须是static的
c#初学12-12-为什么mian函数必须是static的 c#程序刚开始启动的时候都会有唯一一个入口函数main()函数, 而非静态成员又称实例成员,必须作用于实例.在程序刚开始运行的时候,未建立任 ...
- APUE学习笔记7——进程间通信
1 管道 管道一般是一种半双工的进程间通信方式,只能够在具有公共祖先的进程之间使用,比如一个管道由一个进程创建,然后该进程调用fork,之后父.子进程就可以使用该管道. 管道是调用pipe函数创建的. ...
- 03《UML大战需求分析》之三
学习了活动图之后,我又学习了流程分析工具之二的状态机图.看上去状态机图和活动图很类似,我也很容易从活动图的角度来理解状态机图.但是学习之后,发现两种图是两种完全不同的分析角度.活动图在流程分析时是玩你 ...