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 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯第十一届c++大学B组详解

目录 1.字符串排序 2.门牌制作 3.即约分数 4.蛇型填数 5.跑步锻炼 6.七段码 7.成绩统计 8.回文日期 9.字串分值和 10.平面切分 1.字符串排序 题目解析:这个题目真没搞懂。有会的大佬教我一下谢谢。 2.门牌制作 题目解析:出过超级多这类题目&am…

坚持十天做完Python入门100题第一天

坚持十天做完Python入门100题第一天 第1题 变量更新第2题 变量命名规则第3题 类型错误第4题 序列索引第5题 序列切片第6题 负数切片第7题 Range函数 第1题 变量更新 解析:Python代码的读取和执行是由上至下的,变量n一开始被赋值为1,但被更新了…

ssm034学生请假系统+jsp

学生请假系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生请假系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处…

c++中的命名空间

对于C语言中我们有时候很难将标准库中的关键字当作变量的名称,这就是C语言中会存在的命名冲突的问题。 但是在c中我们可以自行开辟一块命名空间出来,我们可以将我们所需要的变量的名称放在一块区域中,当我们需要使用的时候我们就通过那块命名…

ssm035基于JavaWeb的家居商城系统的设计与实现+jsp

家居商城系统 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于家居商城系统当然也不能排除在外,随着网络技术的不断成熟,带动了家居商城系统,它彻底改…

c语言 :柔性数组与c/c++内存领域的划分

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一 柔性数组(1)什么是柔性数组1)柔性数组的声明2)柔性数组的特性 (2)柔性数组的使用 二 c/c内…

代码随想录算法训练营三刷 day49 | 动态规划 之121 买卖股票的最佳时机 122 买卖股票的最佳时机II

三刷day49 121. 买卖股票的最佳时机1.确定dp数组(dp table)以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组 122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 题目链接 解题思路: 动规五部曲分析如下&…

AI技术将影响更长远,比如未来的就业形势

随着人工智能渗透到工作场所,人类将需要掌握新的工作技能。 AI作为新技术已经开始扰乱就业市场了。对于最新的AI人工智能技术,经济学家、教育工作者、监管机构、商业分析师以及相关领域专家预测,在不久的将来,人工智能一代将需要…

MySQL的基础操作(二)

目录 一.数据库约束 1.主键约束 (Primary Key) 2.唯一约束 (Unique) 3.外键约束 (Foreign Key): 4.检查约束(Check) 5.默认约束 (Default) 二.聚合查询 1.简单聚合函数 2.GROUP BY子句 3.HAVING子句 三.联合查询 1.内连接 2.左连接 3.右连接 4.子查询 5.合并查询…

Java 基于微信小程序的校园请教小程序的研究与实现,附源码

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

【网络捉鬼记】微信可以部分网页可以,其它网页打不开提示无法找到NDS地址

蹭网蹭得好好的,为啥突然这样呢? 发现微信可以,百度搜索网页可以打开但图片出不来,再点一个新闻进去又是上图的样子。 问AI!却发现连质谱清言也打不开!用自己热点问: 至于win10怎么更换DNS&…

弹幕功能1

今天看pure-admin的时候发现有个弹幕功能 GitHub - hellodigua/vue-danmaku: 基于 Vue 的弹幕交互组件 | A danmaku component for Vue

场景文本检测识别学习 day02(AlexNet论文阅读、ResNet论文精读)

怎么读论文 在第一遍阅读的时候,只需要看题目,摘要和结论,先看题目是不是跟我的方向有关,看摘要是不是用到了我感兴趣的方法,看结论他是怎么解决摘要中提出的问题,或者怎么实现摘要中的方法,然…

NumPy进阶(二)

2. NumPy进阶(二) 2.1 Numpy数组操作 2.1.1 添加元素 numpy.append 函数在数组的末尾添加值。 追加操作会分配整个数组,并把原来的数组复制到新数组中 注意: 插入的维度要保证所有数组的长度是相同的如果没有指定轴,数组会被扁平处理 ndarr…

《极域多媒体教室互动管理系统软件》控制方法大全

前言及背景: 当我坐在电脑前,打开它,点开谷歌,刚刚想打开百度,突然闪出来了: 该网页已被阻止!!! 正文: 1.极域控制原理: 好…

Oracle表空间满清理方案汇总分享

目录 前言思考 一、第一种增加表空间的数据文件数量达到总容量的提升 二、第二种解决方案针对system和sysaux的操作 2.1SYSTEM表空间优化 2.2sysaux表空间回收 2.2.1针对sysaux的表空间爆满还有第二套方案维护 三、第三种解决方案使用alter tablespace resize更改表空间的…

3D空间坐标到2D屏幕坐标

1、相机矩阵 2、投影矩阵 3、相平面矩阵 4、应用 漫游 案例一:实时修改View Matrix的三个分量,可以实现在三维场景中漫游。比如,要在场景中移动,可以修改视点位置 Eye;要拐弯了,修改参考点center&#xf…

SpringBoot第一个hello world项目

文章目录 前言一、Spring Boot是什么?二、使用步骤1. 创建项目2.书写测试 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了…

matlab学习002-函数及流程控制语句

目录 一,matlab编程基础 1)matlab脚本和函数文件 ①脚本文件 ②函数文件 2)函数的定义和调用 ①定义 ②调用 3)程序流程控制 ①使用for求 122^2……2^622^63之和 ②使用while语句求122^2……2^622^63之和 ③使用matl…

Android设备使用DS file远程访问群晖NAS管理本地文件

文章目录 1. 群晖安装Cpolar2. 创建TCP公网地址3. 远程访问群晖文件4. 固定TCP公网地址5. 固定TCP地址连接 DS file 是一个由群晖公司开发的文件管理应用程序,主要用于浏览、访问和管理存储在群晖NAS(网络附加存储)中的文件。这个应用程序具有…