Mogdb双网卡同步最佳实践

大家都知道Oracle数据库无论是单机还是RAC集群在进行生产部署实施时,我们都会对网卡做冗余考虑,比如使用双网卡,比如public、心跳网络。这样的目的主要是为了安全,避免淡点故障。当然也网卡Bond不仅是可以做主备还可以支持负载均衡。这里我们先不展开讨论。

有用户从Oracle迁移到MogDB的时候,机会问题,MogDB 的高可用怎么做,支持双网卡吗?

这里为肯定的告诉大家,MogDB支持!而且支持的非常好!

MogDB双网卡有什么用?

1、MogDB支持使用双网卡进行流复制,以确保主备数据库间的数据同步。双网卡配置在MogDB中用于流复制,可以显著提高数据同步的可靠性和系统的整体稳定性,尤其适合于对高可用性有严格要求的应用环境。

2、双重网络路径:两个网络接口卡提供了双重网络路径,增加了冗余性和容错能力。 .故障转移能力:如果其中一个网络接口发生故障,另一个可以接管数据同步任务,从而保持持续的数据一致性。

3、提高可靠性:在高负载或网络不稳定的情况下,双网卡配置提供了更高的可靠性和稳定性。

生产实际架构是怎样的?

这我给大家共享一下某客户的实践方案,以供大家参考。

alt

架构描述:

1、使用MogHA 构建高可用架构,主从复制都为同步模式。 2、主用云和备用云同步是单网模式,线控站有独立的A网和B网双网模式,A\B网通过云出口交换机与主备云主机互通。 3、每个中心都有一组VIP,云主中心(vip1),云备中心(vip2)、线控站(vip3,vip4); 4、每个应用服务器都连接主库,Mogha只会把主库的vip挂载,通过驱动设置ip list,自动连接能ping通的vip,即为主库;

其中相关服务器IP规划如下:

机房名 主机名 ip vip 主用云 mogdb01 192.168.1.3 192.168.1.30 主用云 mogdb02 192.168.1.4 192.168.1.30 备用云 mogdb03 192.168.3.3 192.168.3.30 线控站 mogdb04 192.168.4.101/192.168.5.101 192.168.4.100/192.168.5.100

如何部署实施呢

1、首先配置好/etc/hosts文件,如下所示:

cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.3    1  # ptk added
192.168.1.4    2  # ptk added
192.168.3.3    3  # ptk added
192.168.4.101  4  # ptk added

2、配置MogDB pg_hba.conf文件

注意: 需要添加互信,否则会出现Forbid remote connection with initia1 user的报错。

local   all             all                                     trust
host    all    omm    192.168.1.3/32    trust
host    all    omm    192.168.1.4/32    trust
host    all    omm    192.168.3.3/32    trust
host    all    omm    192.168.4.101/32    trust
host    all    omm    192.168.5.101/32    trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all    all    192.168.1.3/32    sha256
host    all    all    192.168.1.4/32    sha256
host    all    all    192.168.3.3/32    sha256
host    all    all    192.168.4.101/32    sha256
host    all    all    192.168.5.101/32    sha256

3、流复制通道配置

从上面的架构图可以看出,几个机房的优先顺序是主用云>备用云>线控站;也就是192.168.1.3>192.168.1.4>192.168.3.3>192.168.4.101(192.168.5.101)。

我们知道主备切换优先级需要参数synchronous_standby_names来控制,因此在进行参数控制的要注意。

参数说明: 潜在同步复制的备机名称列表,每个名称用逗号分隔。

FIRST N (node1,node2,…)表示在括号内按出现顺序的先后作为优先级选择前N个主机名称作为同步复制的备机名称列表。例如,FIRST 2 (node1,node2)表示选择node1作为同步复制的第一备机名称,node1作为同步复制的第二备机名称。

192.168.1.3:
synchronous_standby_names = 'FIRST 2(dn_6002,dn_6003,dn_6004)'  # standby servers that provide sync rep
192.168.1.4:
synchronous_standby_names = 'FIRST 2(dn_6001,dn_6003,dn_6004)'  # standby servers that provide sync rep
192.168.3.3:
synchronous_standby_names = 'FIRST 2(dn_6001,dn_6002,dn_6004)'  # standby servers that provide sync rep
192.168.4.101(192.168.5.101):
synchronous_standby_names = 'FIRST 2(dn_6001,dn_6002,dn_6003)'  # standby servers that provide sync rep

所有节点
local_bind_address = '0.0.0.0'
改成
local_bind_address = '*'

注意:4台MogDB服务器的postgres.conf 都需要进行修改。

4、最后配置MogHA

修改每个节点的node.conf即可。 zone1~3 用于定义机房,分别表示主用云,备用云,线控站, 不同机房配置独立虚拟IP,分别为192.168.3.30,192.168.1.30,192.168.4.100,192.168.5.100。

最后修改后的样子如下所示:

# 注意: 如果需要打开注释修改参数, 参数名前不能有空格

[config]
# 数据库端口
db_port=26000

# 数据库的操作系统用户, 通常为omm
db_user=omm

# 数据库的数据目录
db_datadir=/opt/mogdb/data

# 本地主库元数据存储路径
# primary_info=__INSTALLDIR__/primary_info

# 本地备库元数据存储路径
# standby_info=__INSTALLDIR__/standby_info

# 是否使用 lite 模式, 可选值: True / False
lite_mode=False

# HA节点之间心跳端口, 如果有防火墙, 需要配置互通
agent_port=8081

# 心跳间隔时间
heartbeat_interval=3

# 主库丢失的探测时间
primary_lost_timeout=5

# 主库的孤单时间
primary_lonely_timeout=5

# 双主确认超时时间
double_primary_timeout=5

# 本地元数据文件类型,支持 json/bin
meta_file_type=json

# 设置输出的日志格式
logger_format=%(asctime)s %(levelname)s [%(filename)s:%(lineno)d]: %(message)s

# [2.3.0新增]设置日志存储目录
# log_dir=__INSTALLDIR__

# [2.3.0新增] 日志文件最大字节数(接近该值时,将发生日志滚动)
# 支持的单位: KB, MB, GB (忽略大小写)
# log_max_size=512MB

# [2.3.0新增] 日志保留的文件个数
# log_backup_count=10

# 设置除了主备相关的机器, 允许可以访问到web接口的IP列表, 多个IP时逗号分隔
# allow_ips=

# [2.1新增] 主实例进程未启动时,是否需要 HA 进行拉起或切换
# 搭配 primary_down_handle_method 使用
# handle_down_primary=True

# [2.1新增] 备库进程未启动时,是否需要 HA 进行拉起
# handle_down_standby=True

# [2.1新增] 主库实例进程未启动时,如何处理
# 支持两种处理方式:
# - restart: 尝试重启,尝试次数在 restart_strategy 参数中设定
# - failover: 直接切换
primary_down_handle_method=restart

# [2.1新增] 重启实例最大尝试条件: times/minutes
# 例: 3/3 最多尝试3次或者3分钟, 任何一个条件先满足就不再尝试。
# [2.4.10更新] 调整默认值为 3/1, 重试次数最多3次]
# restart_strategy=3/1

# [2.2.1新增]
# debug_mode=False

# [2.3.0新增]
# HA节点间HTTP API 心跳请求超时时间(秒)
# http_req_timeout=2


# host1-9, 每个代表一个机器(最多支持1主8备)
# - ip: HA节点间通信IP
# - heartbeat_ips: (选填)HA节点间通信的冗余 ip, 允许配置多个, 以逗号隔开,
[host1]
ip=192.168.1.3

[host2]
ip=192.168.1.4

[host3]
ip=192.168.3.3

[host4]
ip=192.168.4.101
heartbeat_ips=192.168.5.101
replconn_ip=192.168.4.101,192.168.5.101


# zone1~3 用于定义机房, 不同机房配置独立虚拟IP
# - hosts: (必填) 本机房内机器列表, 填写机器在配置文件中对应的配置模块名 host1~9, 示例: host1,host2
# - ping_list: (必填) 用于检查网络是否通畅的仲裁节点, 例如网关, 支持填写多个IP (逗号分隔)
# - vip: (选填) 机房虚拟IP
# - vip_bind_nic: (选填) 虚拟IP要绑定的网卡名, 默认使用 host 配置中的 ip 的网卡 [2.4.0新增]
# - vip_netmask: (选填) 虚拟ip的子网掩码, 默认和 host 配置中 ip 同一网段 [2.4.0新增]
# - cascades: (选填) 机房内的级联机器列表 (配置方式同 hosts, 没有不填)
# - arping: (选填) 机房的 arping 地址, 切换虚拟IP后通知该地址
[zone1]
hosts=host1,host2
ping_list=192.168.1.6,192.168.3.2
cascades=
vip=192.168.1.30
vip_bind_nic=bond0
vip_netmask=255.255.255.0
arping=


[zone2]
hosts=host3
ping_list=192.168.1.6,192.168.3.2
cascades=
vip=192.168.3.30
vip_bind_nic=bond0
vip_netmask=255.255.255.0 
arping=

[zone3]
hosts=host4
ping_list=192.168.1.6,192.168.3.2
vip=192.168.4.100,192.168.5.100
vip_bind_nic=
vip_netmask=
cascades=
arping=

到这里就告一段落了。

参考文档:# https://docs.mogdb.io/zh/mogha/v2.3/overview

本文由 mdnice 多平台发布

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

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

相关文章

【OTA】STM32新能源汽车OTA技术ymodem协议PC串口升级过程

【OTA】STM32新能源汽车OTA技术ymodem协议PC串口升级过程 文章目录 前言一、实验工具1.串口USB线——烧录APP2生成的BIN文件2.STLINK——烧录BOOT代码和APP1代码3.烧录工具——将BIN文件烧录到单片机中4.FLYMCU——清除芯片FLASH 二、硬件绘制1.原理图2.PCB 三、软件配置1.BOOT…

树莓派驱动开发--搭建环境篇(保姆级)

前言:树莓派的环境搭建关系到之后的驱动开发,故一个好的环境能让你顺手完成驱动开发!我使用的是64位树莓派4b!有显示屏的前提!!!(因为wifi连接太刁钻了) 一、ubantu相关 …

目标检测笔记

目标检测笔记 one-stage和two-stage目标检测算法Two-Stage 目标检测算法One-Stage 目标检测算法既然Faster R-CNN使得候选区域生成和目标检测可以在同一个网络中端到端训练,为什么它还是属于Two-stage算法? 目标检测模型,训练中的正负样本是什…

使用Pandas实现股票交易数据可视化

一、折线图:展现股价走势 1.1、简单版-股价走势图 # 简洁版import pandas as pdimport matplotlib.pyplot as plt# 读取CSV文件df pd.read_csv(../数据集/格力电器.csv)data df[[high, close]].plot()plt.show() 首先通过df[[high,close]]从df中获取最高价和收盘…

UML学习

UML(Unified Modeling Language):统一建模语言,提供了一套符号和规则来帮助分析师和设计师表达系统的架构、行为和交互 类图:描绘类、接口之间的关系(继承、实现、关联、依赖等)以及类的内部结构(属性和方法),直观展现系统的静态…

uniapp开发小程序手写板、签名、签字

可以使用这个插件进行操作 手写板-签名签字-lime-signature - DCloud 插件市场 但是目前这个插件没有vue3 setup Composition API的写法。所以对于此文档提供的可以直接使用,需要使用Composition API方式实现的,可以继续看。 因为Composition API方式,更加的简单、灵活,…

Java 基于微信小程序的校园失物招领小程序,附源码

博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

elasticsearch7安全配置--最低安全等级,用户名密码

上一篇博客在centos7上安装了elasticsearch7 接下来对elasticsearch进行安全方面的配置 minimal security 最低安全等级,用户名密码 首先开启xpack vim config/elasticsearch.yml xpack.security.enabled: true由于我是单机配置的,还加了如下配置 d…

c语言->贪吃蛇实战技巧结合EasyX简单实现页面管理(简单实现)

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 1. 游戏背景 贪吃蛇是久负盛名的游戏,它也和俄罗斯⽅…

WebLogic-XMLDecoder(CVE-2017-10271)反序列化漏洞分析及复现

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

机器学习——自动驾驶

本章我们主要学习以下内容: 阅读自动驾驶论文采集数据根据论文搭建自动驾驶神经网络训练模型在仿真环境中进行自动驾驶 论文介绍 本文参考自2016年英伟达发表的论文《End to End Learning for Self-Driving Cars》 📎end2end.pdf

【opencv】示例-npr_demo.cpp 非真实感渲染:边缘保留平滑、细节增强、铅笔素描/彩色铅笔绘图和风格化处理...

Edge Preserve Smoothing- Using Normalized convolution Filter Edge Preserve Smoothing-Using Recursive Filter Detail Enhancement Pencil sketch/Color Pencil Drawing Stylization /* * npr_demo.cpp * * 作者: * Siddharth Kherada <siddharthkherada27[at]gmail[do…

基于Python的深度学习的中文情感分析系统(V2.0),附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

海洋信息管理系统:守护蓝色星球,促进海洋经济新发展

海洋&#xff0c;覆盖地球表面超过七成的广阔水域&#xff0c;是生命之源&#xff0c;也是经济发展的重要空间。然而&#xff0c;随着人类活动的增加&#xff0c;海洋生态环境面临严峻挑战&#xff0c;海洋资源的可持续利用成为全球关注的焦点。在这样的背景下&#xff0c;构建…

Mac 下 Python+Selenium 自动上传西瓜视频

背景 研究下 PythonSelenium 自动化测试框架&#xff0c;简单实现 Mac 下自动化批量上传视频西瓜视频并发布&#xff0c;分享给需要的同学&#xff08;未做过多的异常处理&#xff09;。 脚本实现 首先通过手工手机号登录&#xff0c;保存西瓜视频网站的 cookie 文件 之后加载…

【心路历程】初次参加蓝桥杯实况

送给大家一句话&#xff1a; 寂静的光辉平铺的一刻&#xff0c;地上的每一个坎坷都被映照得灿烂。 – 史铁生 《我与地坛》 初次参加蓝桥杯有感 一点小小的震撼难评的做题过程A题 艺术与篮球问题描述解题 B 题 五子棋问题描述解题 C题 训练士兵问题描述解题 D题 团建解题 E题 …

聊一聊一些关于npm、pnpm、yarn的事

前言 整理了最近的闲聊&#xff0c;话题是前端各个包管理器&#xff0c;如果分享的不对或者有异议的地方&#xff0c;麻烦请及时告诉我~ 耐心看完&#xff0c;也许你会有所收获~ 概述 本文阅读时间&#xff1a;10-15分钟左右&#xff1b; 难度&#xff1a;初级&#xff0c…

人工智能|机器学习——基于机器学习的信用卡办卡意愿模型预测项目

一、背景介绍 在金融领域&#xff0c;了解客户的信用卡办卡意愿对于银行和金融机构至关重要。借助机器学习技术&#xff0c;我们可以根据客户的历史数据和行为模式预测其是否有办理信用卡的倾向。本项目通过Python中的机器学习库&#xff0c;构建了两个常用的分类模型&#xff…

13 Php学习:面向对象

PHP 面向对象 面向对象&#xff08;Object-Oriented&#xff0c;简称 OO&#xff09;是一种编程思想和方法&#xff0c;它将程序中的数据和操作数据的方法封装在一起&#xff0c;形成"对象"&#xff0c;并通过对象之间的交互和消息传递来完成程序的功能。面向对象编…

【DL水记】循环神经网络RNN的前世今生,Transformer的崛起,Mamba模型

文章目录 RNN网络简介传统RNN网络结构RNN的分类 长-短期记忆网络 (LSTM)GRU网络横空出世的Transformer网络Self-AttentionVisionTransformer Mamba模型Reference: RNN网络简介 “当人类接触新事物时&#xff0c;他们不会从头开始思考。就像你在阅读这篇文章时&#xff0c;你会根…