当前位置: 首页 > news >正文

配置 `PostgreSQL` 与 `Keepalived` 以实现高可用性

配置 PostgreSQLKeepalived 以实现高可用性通常包括以下步骤:

PostgreSQL 配置

  1. 安装 PostgreSQL:在两台服务器上安装相同版本的 PostgreSQL。

    sudo yum install postgresql-server postgresql-contrib
    
  2. 初始化数据库:在两台服务器上初始化 PGDATA 目录。

    sudo postgresql-setup initdb
    
  3. 配置主从复制:设置一台服务器为主节点,另一台为从节点。

    • 在主服务器上

      • 修改 postgresql.conf 文件以允许复制。
        wal_level = replica
        max_wal_senders = 3
        wal_keep_segments = 64
        archive_mode = on
        archive_command = 'cp %p /path_to_archive/%f'
        
      • pg_hba.conf 文件中允许从服务器的连接。
        host replication all 192.168.9.183/32 md5
        
    • 在从服务器上

      • 停止 PostgreSQL 服务。
        sudo systemctl stop postgresql
        
      • 清空 PGDATA 目录。
      • 从主服务器上使用 pg_basebackup 进行基础备份。
        pg_basebackup -h 192.168.9.195 -D /var/lib/pgsql/data -U replicator -v -P --wal-method=stream
        
      • 创建 recovery.conf 文件以连接到主服务器。
        standby_mode = 'on'
        primary_conninfo = 'host=192.168.9.195 port=5432 user=replicator password=yourpassword'
        trigger_file = '/tmp/postgresql.trigger.5432'
        
  4. 启动 PostgreSQL 服务:在两台服务器上启动服务。

    sudo systemctl start postgresql
    

Keepalived 配置

  1. 安装 Keepalived:如前所述,在两台服务器上安装 keepalived
    sudo yum install keepalived -y

  2. 配置 Keepalived:编辑 /etc/keepalived/keepalived.conf 文件,在两台服务器上配置主从。

    • 在主服务器上

      vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.9.200}track_script {chk_postgresql}
      }vrrp_script chk_postgresql {script "/usr/lib/keepalived/check_postgres.sh"interval 2weight 2
      }
      
    • 在从服务器上

      vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.9.200}track_script {chk_postgresql}
      }vrrp_script chk_postgresql {script "/usr/lib/keepalived/check_postgres.sh"interval 2weight 2
      }
      
  3. 创建 PostgreSQL 检查脚本:在两台服务器上创建脚本 /usr/lib/keepalived/check_postgres.sh,用于检查 PostgreSQL 服务状态。

    #!/bin/bash
    PSQL="/usr/bin/psql"
    PGUSER="postgres"
    PGDATABASE="yourdatabase"$PSQL -U $PGUSER -d $PGDATABASE -c "select 1;" >/dev/null 2>&1
    if [ $? != 0 ]; thenexit 1
    fi
    exit 0
    

    确保脚本可执行:

    sudo chmod +x /usr/lib/keepalived/check_postgres.sh
    
  4. 启动 Keepalived:在两台服务器上启动 Keepalived 服务。

    sudo systemctl start keepalived
    sudo systemctl enable keepalived
    

测试和

验证

  • 验证主从复制:确保主从复制正确设置且在运行。
  • 测试 Failover:尝试停止主服务器上的 PostgreSQL 服务,确保 Keepalived 将虚拟 IP 地址转移到从服务器。
  • 监控日志:查看 Keepalived 和 PostgreSQL 日志,确保没有错误。

配置 PostgreSQLKeepalived 时,一定要考虑数据一致性和故障转移的机制。这通常涉及仔细的规划和测试,以确保在生产环境中可靠地运行。

相关文章:

配置 `PostgreSQL` 与 `Keepalived` 以实现高可用性

配置 PostgreSQL 与 Keepalived 以实现高可用性通常包括以下步骤: PostgreSQL 配置 安装 PostgreSQL:在两台服务器上安装相同版本的 PostgreSQL。 sudo yum install postgresql-server postgresql-contrib初始化数据库:在两台服务器上初始化…...

C++: int转换成LPCSTR

LPCSTR类型是指向字符常量的指针,因此需要将int类型转换为字符串类型,然后再将字符串类型转换为LPCSTR类型。 以下是一个示例代码: int num 123; char str[10]; sprintf(str, "%d", num); // 将int类型转换为字符串类型 LPCSTR …...

kettle官网和中文网地址

整理的kettle相关的网站地址: github 地址: https://github.com/pentaho/pentaho-kettle kettle下载目录: https://sourceforge/projects/pentaho/files/ kettle9.2下载地址: https://sourceforge/projects/pentaho/files/Penta…...

纽扣电池类产品上架亚马逊澳大利站认证标准要求AS/NZS 62368

纽扣电池一般来说常见的有充电的和不充电的两种, 充电的包括3.6V可充锂离子扣式电池(LIR系列),3V可充锂离子扣式电池(ML或VL系列);不充电的包括3V锂锰扣式电池(CR系列)及1.5V碱性锌锰扣式电池(LR及SR系列)。 澳大利亚*已经发布了经批准的《消…...

网站监控的重要性及实施策略

随着互联网的快速发展,网站已经成为企业和个人不可或缺的在线服务平台。然而,网站的安全性和稳定性一直是企业及个人非常关注的问题。一旦网站出现故障或者被攻击,将会给企业和个人带来严重的损失。因此,实施有效的网站监控策略对…...

亚马逊车灯外贸出口CE认证标准办理解析

车灯是车辆夜间行驶在道路照明的工具,也是发出各种车辆行驶信号的提示工具。车灯一般分为前照灯、尾灯、转向灯等。车灯出口欧盟需要办理CE认证。 CE认证是欧盟对进入欧洲市场的产品强制性的认证标志,是指符合欧盟安全、健康、环境保护等标准和要求的产…...

windows 查看防火墙设置命令使用方法

点击键盘上windows键,输入cmd,选择以管理员身份运行 输入下面命令查看使用说明 netsh advfirewall firewall add rule ? 发现显示不全,不方便看 可以输入下面命令,生成文件,方便查看 netsh advfirewall firewall ad…...

[Linux版本Debian系统]安装cuda 和对应的cudnn以cuda 12.0为例

写在前面 先检查自己有没有安装使用wget的命令,没有的话输入下面命令安装: apt-get install wget -y查看gcc的安装 sudo apt install gcc #安装gcc gcc --version #查看gcc是否安装成功 #若上述命令不成功使用下面的命令尝试之后再执行上面…...

NextJS开发:解决React Hook useEffect has a missing dependency

NextJS编译出现如下错误,原因是在使用useEffect时,当我们将函数的声明放在useEffect函数外面时 或者使用useState定义的历史变量,会报警告 Warning: React Hook useEffect has a missing dependency解决方法: 1、逐个添加注释忽略警告 useEffect(() &…...

交叉编译tcpdump

1、下载libpcap源码和tcpdump源码【最后有链接】 2、先编译libpcap 解压后,进入目录,执行以下命令: mkdir build cd build ../configure --hostarm-linux CCarm-gcc7.3-linux-musleabi-gcc --prefix$PWD/install make make install3、再编译…...

万字解析设计模式之 装饰者模式

一、装饰者模式 1.1概述 装饰者模式是一种结构型设计模式,它允许在运行时动态地为一个对象添加额外的职责。它以一种透明的方式来扩展对象的功能,而不需要通过子类来实现。在装饰者模式中,有一个基本对象,也称为组件,…...

生成对抗网络Generative Adversarial Network,GAN

Basic Idea of GAN Generation(生成器)  Generation是一个neural network,它的输入是一个vector,它的输出是一个更高维的vector,以图片生成为例,输出就是一张图片,其中每个维度的值代表生…...

C++入门第八篇---STL模板---list的模拟实现

前言: 有了前面的string和vector两个模板的基础,我们接下来就来模拟实现一下list链表模板,我还是要强调的一点是,我们模拟实现模板的目的是熟练的去使用以及去学习一些对于我们本身学习C有用的知识和用法,而不是单纯的…...

论文导读 | 大语言模型与知识图谱复杂逻辑推理

前 言 大语言模型,尤其是基于思维链提示词(Chain-of Thought Prompting)[1]的方法,在多种自然语言推理任务上取得了出色的表现,但不擅长解决比示例问题更难的推理问题上。本文首先介绍复杂推理的两个分解提示词方法&a…...

数智竞技何以成为“科技+体育”新样本?

文 | 智能相对论 作者 | 青月 “欢迎来到,钢铁突袭。” 三人一组,头戴VR设备,中国香港队和泰国队在数实融合的空间里捉对厮杀,通过互相射击对方能量铠甲获取积分。 虽然双方都展现出了极强的机动性,但显然中国香港队…...

Vue项目Jenkins自动化部署

1. 需求描述 我们希望提交uat分支时,UAT项目能够自动发布,提交master分支时,无需自动发布,管理员手工发布 2. 效果展示 3. 采用技术 Jenkins + K8S + Docker + Nginx 4. 具体实现 4.1 编写default.conf 在Vue项目根目录新建default.conf文件,主要进行代理配置、首页…...

特效!视频里的特效在哪制作——Adobe After Effects

今天,我们来谈谈一款在Adobe系列中推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室的属于层类型后期软件——Adobe After Effects。 Adobe After Effects&#xf…...

2023年中国醇酸树脂涂料需求量、应用领域及市场规模前景分析[图]

醇酸树脂指多元醇和多元酸与脂肪酸经过酯化缩聚生成的高聚物,其由邻苯二甲酸酐、多元醇和脂肪酸或甘油三脂肪酸酯缩合聚合而成。醇酸树脂固化成膜后,具有耐磨性好、绝缘性佳等优势,在涂料领域应用广泛。2022年醇酸树脂产量约336.3万吨&#x…...

【Linux进阶之路】动静态库

文章目录 回顾一. 静态库1.代码传递的方式2.简易制作3.原理 二. 动态库1.简易制作2.基本原理 尾序 回顾 前面在gcc与g的使用中,我们简单的介绍了动态库与静态库的各自的优点与区别: 动态链接库,也就是所有的程序公用一份代码,虽然方便省空间&…...

Ubuntu磁盘扩展容量

gparted扩展...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...