离线安装 PostgreSQL 12、配置主从服务器以及使用 pgpool-II 实现快速主从切换的教程

2023-11-16

离线安装 PostgreSQL 12、配置主从服务器以及使用 pgpool-II 实现快速切换的完整教程。

PostgreSQL 是一款功能强大的关系型数据库管理系统,既可以运行在 Linux 系统上,也可以运行在其他操作系统上。为了提高 PostgreSQL 的可用性和性能,我们通常需要将其部署为主从服务器架构,并使用 pgpool-II 工具实现快速主从切换。下面是详细的步骤:

  1. 离线安装 PostgreSQL 12

    1.1 下载 PostgreSQL 12 的离线安装包,可以在官网下载链接中找到:https://www.postgresql.org/download/linux/redhat/。

    1.2 将安装包传输到 CentOS 服务器上,例如:/opt 目录下。

    1.3 打开终端并切换到 root 用户,然后执行以下命令解压缩:

    cd /opt
    tar xvfz postgresql-12.*.tar.gz
    

    1.4 安装依赖库:

    yum install -y readline-devel zlib-devel openssl-devel
    

    1.5 创建 PostgreSQL 数据目录:

    mkdir /opt/pgsql/data
    chown postgres:postgres /opt/pgsql/data
    

    1.6 切换到 postgres 用户并初始化数据库:

    su - postgres
    /opt/postgresql-12.*/bin/initdb -D /opt/pgsql/data/
    

    1.7 修改数据目录的权限:

    chmod 700 /opt/pgsql/data
    

    1.8 启动 PostgreSQL 服务:

    /opt/postgresql-12.*/bin/pg_ctl -D /opt/pgsql/data/ start
    

    1.9 修改 postgres 用户密码:

    psql -c "ALTER USER postgres WITH PASSWORD 'your_password';"
    
  2. 配置主从服务器

    2.1 在主服务器中修改 postgresql.conf 文件,设置以下参数:

    listen_addresses = '*'
    wal_level = replica
    max_wal_senders = 10
    wal_keep_segments = 64
    archive_mode = on
    archive_command = 'rsync -a %p user@slave:/path/to/archive/%f'
    

    2.2 在 pg_hba.conf 文件中添加从服务器 IP 地址的访问规则:

    host replication all slave_ip/32 md5
    

    2.3 在从服务器中修改 postgresql.conf 文件,设置以下参数:

    hot_standby = on
    max_standby_streaming_delay = 30s
    restore_command = 'cp /path/to/archive/%f "%p"'
    primary_conninfo = 'host=master_ip port=5432 user=replica password=your_password'
    

    注意:其中的 master_ip 和 your_password 分别为主服务器的 IP 地址和 postgres 用户的密码。

  3. 使用 pgpool-II 实现快速切换

    3.1 下载 pgpool-II 工具:

    wget https://www.pgpool.net/mediawiki/images/pgpool-II-4.1.4.tar.gz
    tar zxvf pgpool-II-4.1.4.tar.gz
    

    3.2 编译并安装 pgpool-II:

    cd pgpool-II-4.1.4
    ./configure
    make
    sudo make install
    

    3.3 创建 pgpool.conf 文件:

    cp src/sample/pgpool.conf.sample etc/pgpool.conf
    

    3.4 修改 pgpool.conf 文件:

    listen_addresses = '*'
    backend_hostname0 = 'master_ip'
    backend_port0 = 5432
    backend_weight0 = 1
    backend_data_directory0 = '/opt/pgsql/data'
    backend_flag0 = 'ALLOW_TO_FAILOVER'
    backend_hostname1 = 'slave_ip'
    backend_port1 = 5432
    backend_weight1 = 1
    backend_data_directory1 = '/opt/pgsql/data'
    backend_flag1 = 'ALLOW_TO_FAILOVER'
    failover_command =   '/opt/failover.sh %d %H %P /opt/pgsql/data promote'
    

    其中,failover_command 是在主服务器宕机后执行的脚本文件,该脚本用于将从服务器提升为主服务器。

    3.5 创建 failover.sh 文件:

    touch /opt/failover.sh
    chmod +x /opt/failover.sh
    

    3.6 编辑 failover.sh 文件,添加以下内容:

    #!/bin/sh
    
    FAILED_NODE_ID=$1
    NEW_MASTER_HOST=$2
    NEW_MASTER_PORT=$3
    PGDATA=$4
    
    if [ $FAILED_NODE_ID -eq 0 ]; then
        echo "promote standby node"
        ssh postgres@$NEW_MASTER_HOST "/usr/pgsql-12/bin/pg_ctl -D $PGDATA promote"
    fi
    

    这个脚本会在主服务器宕机后运行,并将从服务器升级为新的主服务器。如果 FAILED_NODE_ID 等于 0,则表示当前节点为从服务器,可以执行 pg_ctl promote 命令将其升级为主服务器。

  4. 测试主从配置和快速切换

    4.1 使用以下命令检查主从配置是否正确:

    psql -h master_ip -U postgres -c "SELECT * FROM pg_stat_replication;"
    

    如果结果显示从服务器已经成功连接到主服务器并开始复制数据,则说明主从配置正确。

    4.2 打开终端并连接到从服务器,运行以下命令,监听数据库变更:

    tail -f /opt/pgsql/data/pg_log/postgresql-*.log
    

    4.3 打开另一个终端并连接到主服务器,运行以下命令,模拟主服务器宕机:

    pkill postgres
    

    4.4 观察从服务器的终端窗口,可以看到它已经成为了新的主服务器。

    4.5 再次连接到主服务器,运行以下命令,重新启动 PostgreSQL 服务:

    /opt/postgresql-12.*/bin/pg_ctl -D /opt/pgsql/data/ start
    

    这时,它会成为从服务器,并开始复制新的主服务器。

  5. 结束操作

    当你完成测试后,可以按以下步骤停止 pgpool-II 和 PostgreSQL 服务:

    5.1 使用以下命令停止 pgpool-II:

    pcp_shutdown -h localhost -p 9898 -U your_user -w
    

    5.2 使用以下命令停止 PostgreSQL 服务:

    /opt/postgresql-12.*/bin/pg_ctl -D /opt/pgsql/data/ stop
    

至此,我们完成了离线安装 PostgreSQL 12、配置主从服务器以及使用 pgpool-II 实现快速主从切换的教程。希望对你有所帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

离线安装 PostgreSQL 12、配置主从服务器以及使用 pgpool-II 实现快速主从切换的教程 的相关文章

随机推荐

  • 把iconfront的资源放cdn访问_详解mpvue小程序中怎么引入iconfont字体图标

    前言 iconfont阿里巴巴矢量图标库是我很喜欢的一个网站 可以下载 在线编辑 上传自己需要的矢量图标 也支持团队协作 那么在mpvue项目中如何引入呢 将图标加入购物车 搜索关键词可以是中文也可以是英文 下载素材 点击网站右上角的购物车
  • C/C++中#pragma once的使用

    在C C 中 为了避免同一个文件被include多次 有两种方式 一种是 ifndef方式 一种是 pragma once方式 在头文件的最开始加入 ifndef SOME UNIQUE NAME HERE define SOME UNIQ
  • 一本二本三本有什么区别

    一本二本三本有什么区别 很多家长和考生问老师 一本二本三本到到底什么区别于老师给大家普及一下 其实一本 二本 三本 无论是学历性质还是学历层次都是一样的 毕业证书除了毕业学校的公章和校长的签章 其他没有任何区别 都是中华人民共和国教育部监制
  • tensorflow中,session.run()与tensor.eval()的区别

    session run 与tensor eval 都是tensorflow用来计算图的一一部分的方法 那么这两种方式有什么异同呢 假设有一个tensor a 在使用a eval时 等价于 sess run 其中 sess是当前默认会话 这这
  • GitHub 开源推荐

    说起 Web 开发 大多数人会想到 Java Python Golang 因为它们的主流 Web 框架有很多 Java 有非常知名的 Spring 全家桶 Python 有大而全的 Django 小而精的 Flask 高性能的 Tornad
  • 最新SQL注入漏洞原理及与MySQL相关的知识点

    点击星标 即时接收最新推文 本文选自 web安全攻防渗透测试实战指南 第2版 点击图片五折购书 SQL注入漏洞简介 SQL注入是指Web应用程序对用户输入数据的合法性没有判断 前端传入后端的参数是攻击者可控的 并且参数被带入数据库查询 攻击
  • 关于linux内核编译时出现错误 objtool: missing symbol table的解决方法

    在内核编译时出现了objtool missing symbol table的错误导致编译失败上网找了一圈之后找到下面的方法 新建一个文件thunkpatch patch填入 tools objtool elf c 7 1 file chan
  • 西门子S7-200 SMART编程软件下载

    概述 西门子S7 200 SMART是一款入门级且非常好用的PLC 相比较于欧姆龙 三菱等同级别PLC SMART的编程软件架构更合理且逻辑性强 且官方一直在持续更新 截止于2021年8月 官方最新版编程软件 STEP7 MicroWIN
  • C#读取文件时中文显示问号

    StreamReader reader new StreamReader test txt Encoding Default string str reader ReadToEnd Console WriteLine str reader
  • 音视频大牛雷霄骅

    https blog csdn net leixiaohua1020 https www zhihu com question 49211380 https www bilibili com video av9927626 share so
  • volatile 与处理器的嗅探技术

    在 java并发编程的艺术 这本书中 关于volatile的内存原理本质的描述如下 有volatile变量修饰共享变量在编译器编译后 后多出一个 lock 来 lock前缀指令相当于一个内存屏障 会强制将对缓存的修改操作写入主内存 该字符在
  • DAPM之二:audio paths与dapm kcontrol

    在用alsa amixer controls时 除了我们之前提到的snd soc add controls添加的kcontrols外 还有一些多出来的controls 其实多出来的那些都是属于dapm kcontrol 主要用于切换音频路径
  • 【Antlr】rule expr: must label all alternatives or none

    1 背景 写了一个antlr 语法文件 如下 报错 grammar FunctionGrammar root stat stat expr printExpr ID assign expr ID
  • java经典笔试题大全(50道含答案)

    java经典笔试题大全 50道含答案 整理了一套常用的Java笔试题 选择题50道 简答题5道 试试你能做对多少题吧 含答案 选择题 共50题 每题1 5分 共75分 多选题选不全或选错都不得分 1 以下属于面向对象的特征的是 C D 两项
  • 关于Python子类调用父类同名属性和方法的讲解

    父类 class Person object def init self self name 张三 self age 30 def showInfo self print self name print self age 子类继承Perso
  • linux centos7 启动到登录页面黑屏解决方案

    你看下你黑屏的特征是不是跟我一样的 1 虚拟机装的 centos7 可视化界面版本 2 虚拟机没关机情况下 主机断电了 3 虚拟机启动时 前面正常读秒和开机 要进到用户登录输入密码那个界面时黑屏了 说下我的解决方案吧 其实也不算解决 只不过
  • 4-1 张量的结构操作

    张量结构操作主要包括 张量创建 索引切片 维度变换 合并分割 一 创建张量 张量创建的许多方法和numpy中创建array的方法很像 以下记录一些比较常用的操作 1 直接采用torch tensor创建 指定数据类型为torch float
  • 基于Simulink的牛顿摆效应模型建模与仿真

    基于Simulink的牛顿摆效应模型建模与仿真 摘要 本文介绍了如何使用Matlab中的Simulink工具来建立和仿真牛顿摆效应模型 牛顿摆效应是指在振动系统中 由于初始条件的微小变化 导致系统发生不可预测的行为 通过建立牛顿摆效应模型
  • 编程语言的区别(静态VS动态)

    编程语言的区别 静态VS动态 编译型VS解释型 静态 VS 动态 Static typing when possible dynamic typing when needed 1 静态语言定义 数据类型需要在编译其间检查的语言 即写程序时要
  • 离线安装 PostgreSQL 12、配置主从服务器以及使用 pgpool-II 实现快速主从切换的教程

    离线安装 PostgreSQL 12 配置主从服务器以及使用 pgpool II 实现快速切换的完整教程 PostgreSQL 是一款功能强大的关系型数据库管理系统 既可以运行在 Linux 系统上 也可以运行在其他操作系统上 为了提高 P