openGauss 6.0 LTS 实现高可用性部署

openGauss 6.0 LTS是华为开发的企业级分布式数据库:高性能、高可用性、强扩展性,基于PostgreSQL,支持SQL和JSON数据类型,提供高并发、高吞吐量的处理能力,适合金融、电信、政府等行业使用,6.0版本主要增强了分布式事务支持、存储引擎的优化、安全性提升及多种新特性,确保长时间稳定运行和高效的数据管理能力。

  • 官网体验地址:openGauss社区官网

  • 软件包下载地址:openGauss社区

图片

安装流程

1、关闭安全服务

sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

2、关闭防火墙

systemctl status firewalldsystemctl stop firewalld.servicesystemctl disable firewalld.servicesystemctl status firewalld.service

3、关闭selinux

sudo setenforce 0

4、配置host

[root@centos79 ~]# cat /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.10.10 centos79

5、安装依赖

  • 创建挂载目录

mkdir /cdrom
  • 挂载CD-ROM镜像

mount -t iso9660 -o ro /dev/cdrom /cdrom
  • 备份现有的YUM源配置文件

cd /etc/yum.repos.d/  mkdir bak  mv CentOS* bak
  • 配置本地YUM源

vi local.repocat >/etc/yum.repos.d/local.repo <<EOF  [base-local]  name=CentOS7-local  baseurl=file:///cdrom  enabled=1  gpgcheck=0  EOF
  • 清空并重载YUM缓存

yum clean all  yum makecache
  • 安装依赖包

yum -y install libaio-devel flex bison ncurses-devel \  glibc-devel patch redhat-lsb-core readline-devel openssl-devel sqlite-devel libnsl

6、设置字符集​​​​​​​

echo 'export LANG=en_US.UTF-8' >> /etc/profile  echo 'export packagePath=/opt/software/openGauss' >> /etc/profile  echo 'export LD_LIBRARY_PATH=$packagePath/script/gspylib/clib:$LD_LIBRARY_PATH' >> /etc/profile

7、时区配置

sudo timedatectl set-timezone systemdefault

8、openGauss 6.0 LTS安装

  • 创建安装目录,上传安装包

mkdir -p /opt/openGauss
  • 解压安装包

tar -zxvf openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz

9、目录添加权限

chmod 775 -R /opt/openGauss

10、配置XML文件​​​​​​​

vi /opt/openGauss/db_config.xml<?xml version="1.0" encoding="UTF-8"?><ROOT>    <!-- openGauss整体信息 -->    <CLUSTER>        <!-- 数据库名称 -->        <PARAM name="clusterName" value="dbCluster" />        <!-- 数据库节点名称(hostname) -->        <PARAM name="nodeNames" value="centos79" />        <!-- 数据库安装目录-->        <PARAM name="gaussdbAppPath" value="/openGauss/app" />        <!-- 日志目录-->        <PARAM name="gaussdbLogPath" value="/openGauss/log/omm" />        <!-- 临时文件目录-->        <PARAM name="tmpMppdbPath" value="/openGauss/tmp" />        <!-- 数据库工具目录-->        <PARAM name="gaussdbToolPath" value="/openGauss/om" />        <!-- 数据库core文件目录-->        <PARAM name="corePath" value="/openGauss/corefile" />        <!-- 节点IP,与数据库节点名称列表一一对应 -->        <PARAM name="backIp1s" value="192.168.6.20"/>    </CLUSTER>    <!-- 每台服务器上的节点部署信息 -->    <DEVICELIST>        <!-- 节点1上的部署信息 -->        <DEVICE sn="centos79">            <!-- 节点1的主机名称 -->            <PARAM name="name" value="centos79"/>            <!-- 节点1所在的AZ及AZ优先级 -->            <PARAM name="azName" value="AZ1"/>            <PARAM name="azPriority" value="1"/>            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->            <PARAM name="backIp1" value="192.168.6.20"/>            <PARAM name="sshIp1" value="192.168.6.20"/>
      <!--dbnode-->      <PARAM name="dataNum" value="1"/>      <PARAM name="dataPortBase" value="15400"/>      <PARAM name="dataNode1" value="/openGauss/data/dn"/>            <PARAM name="dataNode1_syncNum" value="0"/>        </DEVICE>    </DEVICELIST></ROOT>

11、用户和组创建

  • 创建用户组

groupadd dbgroup
  • 创建用户

useradd -g dbgroup omm

12、初始化安装

./gs_preinstall -U omm -G dbgroup -X /opt/software/openGauss/cluster_config.xml

13、以 omm 用户身份登录服务器

su - omm

14、使用 gs_om -t status 命令检查数据库状态

gs_om -t status

15、使用 gs_om -t status --detail 命令查看详细信息

gs_om -t status --detail

16、连接数据库

gsql -d postgres -p 15400

17、列出数据库

openGauss=# \l

18、查看 gsql 版本

gsql -V

19、检查数据库服务是否启动

gs_om -t status

如果数据库正常运行,输出的 cluster_state 应显示为 Normal

cluster_state   : Normal

20、如果异常可以查看数据库日志

tail -f /path/to/data_directory/pg_log/*.log

openGauss 6.0 LTS 高可用性架构

openGauss 6.0 LTS 提供了两种主要高可用性架构:

  • 主从复制架构:一个主节点和多个备份节点,通过数据同步确保数据一致性,主节点负责所有写操作,备份节点同步主节点的数据,并且可以用来读取数据。

  • 自动故障转移:在主节点发生故障时,系统自动将备份节点提升为主节点,保证数据库的高可用性和持续服务。

主从复制架构

1、主节点配置,登录到主节点

sudo -u opengauss gsql -d postgres -p 15400

2、执行 SQL 创建复制用户

CREATE USER replication_user WITH REPLICATION PASSWORD '12345';

3、编辑主节点的 postgresql.conf 配置文件,启用流复制​​​​​​​

vi /path/to/data_directory/postgresql.confwal_level = replica            # 启用流复制max_wal_senders = 10           # 设置最大 WAL 发送进程数wal_keep_size = 1GB            # 设置 WAL 日志保留大小hot_standby = on               # 启用热备份模式,使从节点可以读取数据

4、配置主节点的访问控制(编辑 pg_hba.conf 文件,允许从节点使用复制权限连接到主节点)

vi /path/to/data_directory/pg_hba.conf

5、添加如下配置,允许从节点连接主节点

host    replication    replication_user    from_node_ip/32    md5

6、重新加载主节点配置

sudo -u opengauss gs_ctl reload -D /path/to/data_directory

7、检查主节点的状态

  • 登录主节点

sudo -u opengauss gsql -d postgres -p 15400
  • 查询复制状态

SELECT * FROM pg_stat_replication;

8、从节点配置(从节点需要从主节点进行数据同步。使用 pg_basebackup 工具从主节点获取全量数据备份)

运行 pg_basebackup 命令进行备份​​​​​​​

pg_basebackup -h master_node_ip -D /path/to/standby/data_directory -U replication_user -P --wal-method=streammaster_node_ip --主节点的 IP 地址replication_user --在主节点上创建的复制用户/path/to/standby/data_directory --从节点的数据存储目录

9、配置从节点的 recovery.conf 文件(在从节点的数据目录下创建 recovery.conf 文件,以指定从节点如何连接主节点进行同步)​​​​​​​

vi /path/to/standby/data_directory/recovery.confstandby_mode = 'on'                             # 启用从节点模式primary_conninfo = 'host=master_node_ip port=15400 user=replication_user password=your_password'  # 主节点连接信息trigger_file = '/tmp/postgresql.promote'        # 主从切换标志文件

10、启动从节点

sudo -u opengauss gs_ctl start -D /path/to/standby/data_directory

11、验证从节点同步状态

  • 登录到从节点

sudo -u opengauss gsql -d postgres -p 15400
  • 查询复制状态

SELECT * FROM pg_stat_wal_receiver;

自动故障转移

1、手动故障转移(如果主节点出现故障,需要将从节点提升为新的主节点,可以通过以下步骤手动触发故障转移,在从节点上创建一个空文件,用于触发从节点切换为主节点)

从节点会检测到此文件并自动切换为新的主节点

touch /tmp/postgresql.promote

2、自动故障转移(openGauss 6.0 LTS 支持通过 gs_om 工具实现自动故障转移,为了实现自动故障转移,需要配置一个监控节点,该节点会监控主节点的状态,发现主节点宕机时自动将备份节点提升为主节点)

通过 gs_om 工具配置监控服务和启用自动故障转移功能

gs_om -t start -D /path/to/data_directory

3、检查集群状态

gs_om -t status --detail

总结

开发者角度来看,openGauss 6.0 LTS 提供的主从复制架构和自动故障转移机制为数据库系统提供了高可用性保障,简化容灾和故障恢复的过程。通过流复制技术,数据在主从节点之间高效同步,保证了系统的稳定性与容错能力,且支持热备份模式实现读写分离,有效减轻主节点负载,提高查询吞吐量。

然而,复制延迟和网络瓶颈可能导致从节点数据滞后,因此在高并发环境下需要对同步延迟进行监控和优化,自动故障转移机制则在主节点故障时自动将从节点提升为新的主节点,确保系统的持续可用性,减少人为干预,提高运维效率,然而在某些极端情况下,故障转移过程中可能会出现短暂的服务中断或数据丢失,通过合适的配置与监控,可以优化故障转移的响应速度和数据一致性,确保在实际业务中能够高效稳定运行。

总的来说,openGauss 的高可用性架构不仅提升了数据库系统的稳定性和扩展性,也为开发者提供了更简洁的运维管理工具,减轻了系统管理负担,使得开发者能够更加专注于业务功能的开发与优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对比学习 (Contrastive Learning) 算法详解与PyTorch实现

对比学习 (Contrastive Learning) 算法详解与PyTorch实现 目录 对比学习 (Contrastive Learning) 算法详解与PyTorch实现1. 对比学习 (Contrastive Learning) 算法概述1.1 自监督学习1.2 对比学习的优势2. 对比学习的核心技术2.1 正样本对与负样本对2.2 对比损失函数2.3 数据增…

前端开发:Web前端和HTML

一、解释 1.Web前端开发&#xff1f; Web前端开发是指创建用户在浏览器中直接交互和体验的部分的过程。‌前端开发主要涉及HTML、CSS和JavaScript这三大核心技术。HTML用于构建网页内容的骨架&#xff0c;CSS用于设置和控制网页的外观和布局&#xff0c;而JavaScript则赋予网…

LeetCode 热题 100_腐烂的橘子(52_994_中等_C++)(图;广度优先遍历(队列))

LeetCode 热题 100_腐烂的橘子&#xff08;52_994&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;广度优先遍历&#xff08;队列&#xff09;&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一…

C#,图论与图算法,输出无向图“欧拉路径”的弗勒里(Fleury Algorithm)算法和源程序

1 欧拉路径 欧拉路径是图中每一条边只访问一次的路径。欧拉回路是在同一顶点上开始和结束的欧拉路径。 这里展示一种输出欧拉路径或回路的算法。 以下是Fleury用于打印欧拉轨迹或循环的算法&#xff08;源&#xff09;。 1、确保图形有0个或2个奇数顶点。2、如果有0个奇数顶…

[文献精汇]使用 LSTM Networks 的均值回归交易策略

Backtrader 策略实例 [Backtrader]实例:均线策略[Backtrader] 实例:MACD策略[Backtrader] 实例:KDJ 策略[Backtrader] 实例:RSI 与 EMA 结合[Backtrader] 实例:SMA自定义数据源[Backtrader] 实例:海龟策略[Backtrader] 实例:网格交易[Backtrader] 实例: 配对交[Backtrader] 机…

用gpg和sha256验证ubuntu.iso

链接 https://ubuntu.com/tutorials/how-to-verify-ubuntuhttps://releases.ubuntu.com/jammy/ 本文是2的简明版 sha256sum介绍 sha256sum -c SHA256SUMS 2>&1这段脚本的作用是验证文件的 SHA-256 校验和。具体来说&#xff0c;命令的各个部分含义如下&#xff1a; …

使用VSCode搭建Ruby on Rails集成开发环境

目录 背景选择插件配置插件 背景 在windows平台下开发Ruby on Rails&#xff0c;之前使用的IDE是Rubymine&#xff0c;但是发现激活码失效了&#xff0c;于是怀着折腾的心思在VSCode上搭建一下Ruby on Rails集成开发环境&#xff0c;后来搭建好了之后&#xff0c;发现使用起来…

SpringData-Redis缓存之RedisTemplate

一、概述 大多数用户可能会使用RedisTemplate及其相应的包org.springframework.data.redis.core或其反应式变体ReactiveRedisTemplate。由于其丰富的功能集&#xff0c;该模板实际上是Redis模块的中心类。该模板为Redis交互提供了高级抽象。虽然[Reactive]RedisConnection提供…

WeakAuras NES Script(lua)

WeakAuras NES Script 修星脚本字符串 脚本1&#xff1a;NES !WA:2!TMZFWXX1zDxVAs4siiRKiBN4eV(sTRKZ5Z6opYbhQQSoPtsxr(K8ENSJtS50(J3D7wV3UBF7E6hgmKOXdjKsgAvZFaPTtte0mD60XdCmmecDMKruyykDcplAZiGPfWtSsag6myGuOuq89EVDV9wPvKeGBM7U99EFVVVV33VFFB8Z2TJ8azYMlZj7Ur3QDR(…

【江协STM32】11-2/3 W25Q64简介、软件SPI读写W25Q64

1. W25Q64简介 W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器&#xff0c;常应用于数据存储、字库存储、固件程序存储等场景存储介质&#xff1a;Nor Flash&#xff08;闪存&#xff09;时钟频率&#xff1a;80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)存储容…

沸点 | 聚焦嬴图Cloud V2.1:具备水平可扩展性+深度计算的云原生嬴图动力站!

近日&#xff0c;嬴图正式推出嬴图Cloud V2.1&#xff0c;此次发布专注于提供无与伦比的用户体验&#xff0c;包括具有水平可扩展性的嬴图Powerhouse的一键部署、具有灵活定制功能的管理控制台、VPC / 专用链接等&#xff0c;旨在满足用户不断变化需求的各项前沿功能&#xff0…

【IDEA版本升级JDK21报错方法引用无效 找不到符号】

java: 方法引用无效 找不到符号 符号: 方法 getFirst() 位置: 接口 java.util.List 升级JDK21版本遇到问题&#xff0c;报错找不到符号 但是点进去又能发现这个函数&#xff0c;证明能够找到这个方法&#xff0c;但是就是报错 java: 方法引用无效 找不到符号 符号: …

Elasticsearch入门学习

Elasticsearch是什么 Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展的数据存储和矢量数据库。 它针对生产规模工作负载的速度和相关性进行了优化。 使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。 特点 分布式&a…

重邮+数字信号处理实验六:用 MATLAB 设计 IIR 数字滤波器

一、实验目的 1、加深对 IIR 数字滤波器设计方法和设计步骤的理解&#xff1b; 2、掌握用模拟滤波器原型设计 IIR 数字滤波器的方法&#xff1b; 3、能编写 MATLAB 函数&#xff0c;掌握设计 IIR 数字滤波器的函数调用方法&#xff1b; 4、根据不同的应用场景&#xff0…

【JAVA 基础 第(18)课】HashSet 使用方法详解

HashSet&#xff1a;Set 接口的实现类&#xff0c;存放无序的&#xff0c;不可重复的元素 判断是否为重复的对象 比较hashCode()方法的返回值,如果不同&#xff0c;判定为不同的对象&#xff0c;如果相同&#xff0c;执行第二步判断equals()方法的返回值&#xff0c;如果为tr…

mac intel芯片下载安卓模拟器

一、调研 目前主流两个模拟器&#xff1a; 雷神模拟器 不支持macosmumu模拟器pro版 不支持macos intel芯片 搜索到mumu的Q&A中有 “Intel芯片Mac如何安装MuMu&#xff1f;” q&a&#x1f517;&#xff1a;https://mumu.163.com/mac/faq/install-on-intel-mac.html 提…

一 rk3568 Android 11固件开发环境搭建 (docker)

一 目标 搭建 rk3568 android 系统内核 及固件开发编译调试环境, 支持开发环境导出分享 基于荣品 rk3568 核心板 系统环境: ubuntu22.04 /ubuntu20.04 64位桌面版 编译环境: docker + ubuntu20.04 , 独立的容器隔离环境,不受系统库版本冲突等影响,无性能损耗, 可…

fast-crud select下拉框 实现多选功能及下拉框数据动态获取(通过接口获取)

教程 fast-crud select示例配置需求:需求比较复杂 1. 下拉框选项需要通过后端接口获取 2. 实现多选功能 由于这个前端框架使用逻辑比较复杂我也是第一次使用,所以只记录核心问题 环境:vue3,typescript,fast-crud ,elementPlus 效果 代码 // crud.tsx文件(/.ts也行 js应…

Docker启动失败 - 解决方案

Docker启动失败 - 解决方案 问题原因解决方案service问题 问题 重启docker失败&#xff1a; toolchainendurance:~$ sudo systemctl restart docker Job for docker.service failed because:the control process exited with error codesee:"systemctl status docker.se…

【伪随机数】关于排序算法自测如何生成随机数而引发的……

以 Random 开始 可能一开始&#xff0c;你只是写到了排序算法如何生成随机数 public static void main(String[] args) {Random random new Random();int[] nums new int[10];for (int i 0; i < nums.length; i) {nums[i] random.nextInt(100);}System.out.println(&q…