PostgreSQL的HA解决方案-项目概述
公司使用的数据库时postgresql,一直运行都很流畅,但是最近java新做的管理平台,由于登录用户较多,并发性比较大。另外新系统可能优化也存在问题,所以pg经常崩溃,所以我就开始研究如何事项pg的高性能,高可用的HA的数据库集群解决方案。主要思路是利用postgresql自带的流复制功能,来实现了双机热备,利用pgpool实现数据库的负载均衡、失败接管、在线回复、消除单点故障,从而做到无缝隙无人工参与的主备循环N次切换的高可用。后来经过详细阅读他人的博客和帮助手册。最后逐一实现。下边是思维导图。对于配置过程中参数的含义即配置参数请参考帮助手册和我的代码注释。

参考博客:
宿宝臣在路上(HA): http://dz.sdut.edu.cn/blog/subaochen/?p=451
Guo_guo(实施手册):http://blog.csdn.net/sszgg2006/article/details/38684325
Constantin的博客(PG安装与配置):http://www.cnblogs.com/zhoulf/p/4040768.html
pgpool的中文手册:http://pgpool.projects.pgfoundry.org/pgpool-II/doc/pgpool-zh_cn.html#start
关于PG的安装,我在此简单说明一下,因为我之前并未从事过运维,所以在研究的过程中,学习了很多关于redhat的知识,比如:
① /ect/profile 、/home/user/.bash_profile 、/home/user/.bashrc中设置环境环境变量,并使之生效。
》使用source 文件名,在本终端中使得该文件生效。/ect/profile是系统级别的,、/home/user/.bash_profile 、/home/user/.bashrc是用户级别的。系统级的对于所有用户都起作用,用户级的只对对应的用户起作用。
》source .bashrc可以立刻生效,即使是新打开的终端也生效。
》但source .bash_prifile只能在当前终端生效,新打开的终端不生效,只有当重新启动的时候,才生效。
》对于export +环境变量,这样的环境变量才能变成全局的。
》关于详细的描述,参考:http://blog.csdn.net/chenchong08/article/details/7833242
下边附上我设置的.bashrc
# .bashrc # Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi # User specific aliases and functions
export PGHOME=/usr/local/pgsql export POOLHOME=/usr/local/pgpool export PGDATA=/usr/local/pgsql/data export PATH=$PATH:$HOME/bin:$PGHOME/bin:$POOLHOME/bin:/sbin export LANG=GBK export PS1='$HOSTNAME#$LOGNAME:$PWD> ' set -o vi
ulimit -c alias lf="ls -CF"
alias ll="ls -trl"
alias l="ls -l" alias dbc='psql -d postgres -U postgres'
alias pgstart='pg_ctl -D $PGDATA start'
alias pgstop='pg_ctl kill INT `head -1 $PGDATA/postmaster.pid`'
② redhat系列类型与ubuntu系列类型的linux软件包管理的异同。
》接下来的实验PG的安装采取源码安装,安装的过程,参考这篇博文:Constantin的博客(PG安装与配置):http://www.cnblogs.com/zhoulf/p/4040768.html
》安装过程会出现或多或少的问题。记住--help永远是最可靠的朋友,如 ./configure --help 就明白了。我安装过程会报readline和另外一个找不到,不过可以查看帮助使用--without,就去检查系统是否存在,当然也可以自行安装,然后指明文件的路径即可,readline是系统的工具,主要是记录记录历史和tab命令补全用的。
PostgreSQL的HA解决方案-项目概述的更多相关文章
- PostgreSQL的HA解决方案-2负载均衡(load balance)
一.部署说明 1.1 实施环境 本文档实验环境如下: PGSQL主机: 192.168.1.45 PGSQL备机: 192.168.1.50 软件和系统版本 Pgsql 版本: pgsql 9.2.4 ...
- PostgreSQL的HA解决方案-1主从和备份(master/slave and backup)
一.部署说明 1.1 实施环境 本文档实验环境如下: PGSQL主机: 192.168.1.45 PGSQL备机: 192.168.1.50 软件和系统版本 Pgsql 版本: pgsql 9.2.4 ...
- Web服务器项目详解 - 00 项目概述
目录 00 项目概述 01 线程同步机制包装类 02 半同步/半反应堆线程池(上) 03 半同步/半反应堆线程池(下) 04 http连接处理(上) 05 http连接处理(中) 06 http连接处 ...
- Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...
- 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)
1.熟悉几个组件 1.1.apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...
- Mall电商项目总结(一)——项目概述
项目概述 此电商项目为本人学习项目,后端 使用nginx实现负载均衡转发请求到多台tomcat服务器,使用多台 redis服务器分布式 缓存用户登录信息. 项目已经部署到阿里云服务器,从阿里云linu ...
- CMDB01 /paramiko模块、项目概述、项目架构、项目实现
CMDB01 /paramiko模块.项目概述.项目架构.项目实现 目录 CMDB01 /paramiko模块.项目概述.项目架构.项目实现 1. paramiko 2. 基于xshell连接服务器 ...
- .NET 开源GIS解决方案一 概述
写在前面 最近开始研究开源GIS,国内开源GIS的资料很少,而基于.net的又是少之又少.所以决定把自己研究的资料进行总结整理,技术在于分享,本系列(计划是写一个系列,如果我可以坚持下来的话)部分是自 ...
- java技术栈:项目概述
学习使用java到现在也有三年多了,这三年基本是以项目驱动的方式学习,有好有坏,个人觉得好处在于,有一个清晰的目标让你解决,这会让你学习非常迅速有效.当然坏处就是片面,不成体系.这种学习方式在学校以小 ...
随机推荐
- Java 将要上传的文件上传至指定路径代码实现
代码: /** * 上传文件到指定路径 * @param mFile 要上传的文件 * @param path 指定路径 */ public static void uploadFile(Multip ...
- PAT_A1127#ZigZagging on a Tree
Source: PAT A1127 ZigZagging on a Tree (30 分) Description: Suppose that all the keys in a binary tre ...
- TensorFlow学习笔记----安装(1)
在入门前,推荐一个博客链接:https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/ Windows下tensorflow ...
- 【剑指Offer】12、数值的整数次方
题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 本题看似比较简单,是一个简单的指数运算,但需要完 ...
- SQL中的条件判断语句(case when zhen if,ifnull)用法
简介: case具有两种格式.简单case函数和case搜索函数.这两种方式,可以实现相同的功能.简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式.还有 ...
- C#学习笔记_04_流程控制
04_流程控制 程序的执行结构: 顺序结构 分支结构 循环结构 可以通过某些特定的控制语句来控制代码的执行结构 分支流程控制 if else 基本语法 可以只有if没有else,但是不能没有if只有e ...
- UVa OJ 679 - Dropping Balls
本题是一个二叉树问题——Perfect Binary Tree. 一个完美二叉树(PBT)的深度为D,从根结点开始,按层次遍历顺序编号为1,2,...,2D-1. 有若干个球,依次由根结点落下.当一个 ...
- js获取数组中任意一项
1.获取数组任一项 在一些实际应用场景中,会要求实现一个随机的需求,随机获取某一项,来展示出来,都知道要通过javaScript的Math.random()方法来实现,这里我在Array的原型上添加了 ...
- (30)导入时如何定制spring-boot依赖项的版本【转载】【从零开始学Spring Boot】
此文章转载地址:http://www.tuicool.com/articles/RJJvMj3 请注重作者的版权. spring-boot通过maven的依赖管理为我们写好了很多依赖项及其版本,我们可 ...
- SIM300命令参考
开机命令 AT+CFUN=1,1 //此命令可以开启simcom模块的大部分功能,一般在初始化模块的时候都要写上: AT&F ...