循序渐进丨MogDB 数据库带级联从库的集群切换后如何保持原有架构?

生产数据库运行过程中可能会涉及到升级或者打补丁,导致各节点的角色有计划的发生改变。如果集群内角色发生改变,是否还能保持原有架构继续对外提供服务呢?我们来做一下测试。

采用2+2模式模拟同城两机房部署4节点 MogDB 数据库集群,即主机房是primary节点和1个备库,同城节点是1个备库和1个级联从库。

测试的目标是:无论我们怎么切换主库,希望在集群节点都正常运行的情况下始终保持这个2+2的架构。接下来我们以switchover的方式来进行切换测试。

1

测试

数据库准备

利用PTK一键安装 MogDB 进行数据库安装。安装后集群的初始状态是1主2备1级联。如下图所示,45是主库,46和47是备库,48是级联从库。

695af2831c8c05dd80bdb68edb97483b.png

03cc92aa4b9f764d209f1150fb3d42a5.png

各节点同步角色配置

45(dn_6001): synchronous_standby_names='first 2 (dn_6002,dn_6003)'
46(dn_6002): synchronous_standby_names='first 2 (dn_6001,dn_6003)'
47(dn_6003): synchronous_standby_names='first 2 (dn_6001,dn_6004)'
48(dn_6004): synchronous_standby_names='first 2 (dn_6001,dn_6003)'

本地机房切主

将主库由45切到46,执行ptk cluster switchover -n switchtest -H 172.16.3.46

14a2f4efc2807e1264bc54cae00b5575.png

在46上查询同步状态,45和47是同步备,48是级联从,符合预期。

fba82141a69cfbb8aad997ce15f73f57.png

同城机房切主

将主库由46切到47,执行ptk cluster switchover -n switchtest -H 172.16.3.46

ebd2112c4d2dae982f42352554ac5479.png

在47上查询同步状态,45是同步备,46是异步备,48是Need repair状态,不符合预期。

562ecd0ed6abcbab509696bd1d10b9e7.png

原因分析

  • 级联从永远是级联从,不会将角色自动变为同步备或异步备;

  • 备库可以升级为主库,但不会变为级联从。

处理步骤

  • 修改数据库参数,将需要变成级联从的replconninfo参数添加iscascade=true,将其他replconninfo中的iscascade=true去掉;

  • 重启原级联节点和新级联节点,重启的方式有两种,一种是直接通过gs_ctl命令重启,另一种是修改ptk的配置参数后重启。

47节点修改参数前后:

397ad4559cb51fe390aedea7452863d6.png

ecdf6cb8d7067deda6bc1c42770b0fc5.png

48节点修改参数前后,需要添加其他备库同步信息:

9565c4202ed87b2e4b3d69ff5ef0120c.png

46节点修改参数前后,需要去掉其他同步备信息:

00bb9d80207bfc005e69e258a4571465.png

45节点修改参数前后:

d9cd806091bdc116cf9d34294227a360.png

重启新级联节点

df9c01c8f1d0eebd34b9237b0e616455.png

重启原级联节点

09098001c690ebcf37f8a4d7e15acf7c.png

2

结论

  • 如果集群中不存在级联从,不需要人为参与;

  • 如果集群中有级联从,需要手工修改数据库参数,并且需要对原级联和新级联节点进行重启。

关于作者

高云龙,云和恩墨南北大区服务总监,擅长 PostgreSQL / Greenplum / Citus 数据库架构设计、故障处理、运维优化及数据库迁移,乐于数据库技术分享,曾任职去哪儿网及某金融公司,负责核心数据库架构建设,目前在云和恩墨从事 PG / MogDB / openGauss 数据库交付管理工作。

c40e54aa714e6388c9554e47fb2579ba.gif

数据驱动,成就未来,云和恩墨,不负所托!


云和恩墨创立于2011年,是业界领先的“智能的数据技术提供商”。公司总部位于北京,在国内外35个地区设有本地办公室并开展业务。

云和恩墨以“数据驱动,成就未来”为使命,致力于将创新的数据技术产品和解决方案带给全球的企业和组织,帮助客户构建安全、高效、敏捷且经济的数据环境,持续增强客户在数据洞察和决策上的竞争优势,实现数据驱动的业务创新和升级发展。

自成立以来,云和恩墨专注于数据技术领域,根据不断变化的市场需求,创新研发了系列软件产品,涵盖数据库、数据库存储、数据库云管和数据智能分析等领域。这些产品已经在集团型、大中型、高成长型客户以及行业云场景中得到广泛应用,证明了我们的技术和商业竞争力,展现了公司在数据技术端到端解决方案方面的优势。

在云化、数字化和智能化的时代背景下,云和恩墨始终以正和多赢为目标,感恩每一位客户和合作伙伴的信任与支持,“利他先行”,坚持投入于数据技术核心能力,为构建数据驱动的智能未来而不懈努力。

我们期待与您携手,共同探索数据力量,迎接智能未来。

f19eeebb05ef7ca9b579063af5731a04.gif

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

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

相关文章

K8S临时存储-本地存储-PV和PVC的使用-动态存储(StorageClass)

介绍 容器中的文件在磁盘上是临时存放的,当容器崩溃或停止时容器上面的数据未保存, 因此在容器生命周期内创建或修改的所有文件都将丢失。 在崩溃期间,kubelet 会以干净的状态重新启动容器。 当多个容器在一个 Pod 中运行并且需要共享文件时…

gitlab、jenkins安装及使用文档二

安装 jenkins IP地址操作系统服务版本192.168.75.137Rocky9.2jenkins 2.450-1.1 jdk 11.0.22 git 2.39.3192.168.75.138Rocky9.2gitlab-ce 16.10.0 结合上文 jenkins安装 前期准备: yum install -y epel-release yum -y install net-tools vim lrzsz wget…

WSL访问adb usb device

1.Windows上用PowerShell运行: winget install --interactive --exact dorssel.usbipd-win 2.在WSLUbuntu上终端运行: sudo apt install linux-tools-generic hwdata sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-too…

Gitea是一个开源、轻量级的自托管Git解决方案

Gitea介绍 Gitea是一个由Go语言编写的、轻量级的、自托管的Git解决方案,类似于GitHub、GitLab等平台。它是用Go语言编写的开源软件,提供了Git版本控制系统的基本功能,包括代码托管、问题跟踪、代码审查、Wiki等。Gitea的设计目标是简单易用、…

Swift中的枚举

在Swift中,枚举(Enumeration)是一种定义一组相关值的方式。枚举可以包含零个或多个成员,每个成员可以有关联的值。枚举可以用于定义一组相关的选项、状态或错误类型。 以下是Swift中定义枚举的示例: //定义一个简单的…

酷开科技OTT大屏营销:开启新时代的营销革命

随着互联网技术的不断发展和普及,大屏已经成为越来越多家庭选择的娱乐方式。在这个背景下,酷开科技凭借其强大的技术实力和敏锐的市场洞察力,成功地将大屏转化为一种新的营销渠道,为品牌和企业带来了前所未有的商业机会。 酷开科技…

爬虫jsoup解析工具之解析标题

package day01;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.junit.Test; import java.net.URL; public class JsoupFirstTest {Testpublic void main() throws Exception {/** <!--jsoup解析工具所需依赖--><dependency><groupId>…

【数据结构与算法篇】双链表实现

【数据结构与算法篇】双链表实现&#xff08;近300行实现代码&#xff09; &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;数据结构与算法&#x1f345; &#x1f33c;文章目录&#x1f33c; 1. List.h 头文件的声明 2. List.c 源文…

上海计算机学会 2023年9月月赛 乙组T3 工程建设(拓扑排序)

第三题&#xff1a;T3工程建设 标签&#xff1a;拓扑排序题意&#xff1a;有 n n n个建设任务&#xff0c;第 i i i个建设任务完成时间为 t i t_i ti​。给定 m m m个前置任务要求&#xff0c;第 j j j条规则&#xff0c;若要开工 b j b_j bj​号任务&#xff0c;必须先完成 a…

etcd相关知识整理归纳 —— 筑梦之路

什么是etcd? Etcd 是 CoreOS 团队于2013年6月发起的开源项目&#xff0c;它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法&#xff0c;Etcd基于 Go 语言实现。 名字由来&#xff0c;它源于两个方面&#xff0c;unix的“/etc”文件…

安卓手机APP开发媒体内容部分__ExoPlayer支持的格式

安卓手机APP开发媒体内容部分__ExoPlayer支持的格式 目录 概述 可适配的流 DASH 光滑流 HLS 先进的容器的格式 RTSP 支持的采样格式 支持的网络类型 采样的格式 FFmpeg 代码库

软件概要设计说明书实际项目编制案例(直接套用)

1引言 1.1编写目的 1.2项目背景 1.3参考资料 2系统总体设计 2.1整体架构 2.2整体功能架构 2.3整体技术架构 2.4运行环境设计 2.5设计目标 3系统功能模块设计 3.1个人办公 3.2系统管理 4性能设计 4.1响应时间 4.2并发用户数 5接口设计 5.1接口设计原则 5.2接口…

【word2pdf】Springboot word转pdf(自学使用)

文章目录 概要整体介绍具体实现官网pom文件增加依赖 遇到的问题本地运行OK&#xff0c;发布到Linux报错还是本地OK&#xff0c;但是Linux能运行的&#xff0c;但是中文乱码 小结 概要 Springboot word 转 pdf 整体介绍 搜了一下&#xff0c;发现了能实现功能的方法有四种 U…

手写一个简单的 OrbitControls 轨道控制器

手写一个简单的 OrbitControls 轨道控制器 相信使用过THREE.JS的同学&#xff0c;都知道 OrbitControls 这个的轨道控制器&#xff0c;他是绕着一个观察点&#xff0c;来进行什么什么的… 反正就是那么个意思。 所以很明显OrbitControls的运动轨迹是一个球体&#xff0c;他是绕…

【我的代码生成器】React的FrmUser类源码

FrmUser 类的源码中&#xff1a;FrmUser btnSaveClick 等命名方式都是参考VB.Net的写法。 import React, { forwardRef, useImperativeHandle, useState, useEffect, } from "react"; import { makeStyles, TextField, Grid, Paper, Button, ButtonGroup, } from &q…

Ubuntu安装或卸载mariadb-server软件包

sudo apt install mariadb-server 检查MariaDB服务器的服务状态 service mariadb status 仅需要卸载MariaDB&#xff0c;而不是删除所有MariaDB相关软件包 sudo apt-get remove mariadb-server 从系统中完全删除MariaDB数据库&#xff0c;请按照以下步骤操作 sudo apt-get…

(delphi11最新学习资料) Object Pascal 学习笔记---第9章第3节( 真实世界中的异常处理)

9.3 真实世界中的异常处理 ​ 异常是一种很好的错误报告和错误处理机制&#xff08;不是在单个代码片段中&#xff0c;而是作为大型架构的一部分&#xff09;。一般来说&#xff0c;异常不应替代检查一个局部错误条件&#xff08;尽管有些开发人员会这样使用异常&#xff09;。…

AWTK 开源串口屏 MODBUS Server 模型

名称&#xff1a;modbus_server 功能&#xff1a;通过 modbus 协议提供服务&#xff0c;供远程客户端&#xff08;主站&#xff09;访问。 1. 创建 通过 modbus_server 创建模型。 示例&#xff1a; <window v-model"modbus_server" name"home_page&quo…

学习 Rust 的第二天:Cargo包管理器的使用

今天&#xff0c;我们来探讨一下 Cargo&#xff0c;这个强大而方便的 Rust 构建系统和包管理器。 Cargo 是一个稳健而高效的 Rust 构建系统和包管理器&#xff0c;旨在帮助管理项目依赖关系&#xff0c;并确保在不同环境下进行一致的构建。 使用 cargo 创建新程序&#xff1a…

npm install 报错权限问题

npm i 报错权限问题 npm install 报错权限问题 npm WARN EBADENGINE Unsupported engine { npm WARN EBADENGINE package: npm10.5.0, npm WARN EBADENGINE required: { node: ^18.17.0 || >20.5.0 }, npm WARN EBADENGINE current: { node: v18.15.0, npm: 9.5.0 } …