amz123/长沙正规竞价优化服务
整体架构图:
1. 配置域名
Server1:
OS version: CentOS Linux release 8.5.2111
hostnamectl --static set-hostname mongo01
vi /etc/sysconfig/network
# Created by anaconda
hostname=mong01
echo "192.168.88.20 mong1 mongo01.com mongo02.com" >> /etc/hosts
echo "192.168.88.24 mong2 mongo03.com mongo04.com" >> /etc/hosts
echo "192.168.88.26 mong3 mongo05.com mongo06.com" >> /etc/hosts
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
Server2:
OS version: CentOS Linux release 8.5.2111
hostnamectl --static set-hostname mongo2
vi /etc/sysconfig/network
# Created by anaconda
hostname=mong2
echo "192.168.88.20 mong1 mongo01.com mongo02.com" >> /etc/hosts
echo "192.168.88.24 mong2 mongo03.com mongo04.com" >> /etc/hosts
echo "192.168.88.26 mong3 mongo05.com mongo06.com" >> /etc/hosts
Server3:
OS version: CentOS Linux release 8.5.2111
hostnamectl --static set-hostname mongo3
vi /etc/sysconfig/network
# Created by anaconda
hostname=mong3
echo "192.168.88.20 mong1 mongo01.com mongo02.com" >> /etc/hosts
echo "192.168.88.24 mong2 mongo03.com mongo04.com" >> /etc/hosts
echo "192.168.88.26 mong3 mongo05.com mongo06.com" >> /etc/hosts
2. 准备分片目录
在各服务器上创建数据目录,使用/data,也可以按特定需求指定目录
在mongo01.com,mongo03.com,mongo05.com上执行:
mkdir -p /data/shard1/db /data/shard1/log /data/config/db /data/config/log
在mongo02.com,mongo04.com,mongo06.com上执行:
mkdir -p /data/shard2/db /data/shard2/log /data/mongos
3. download mongo image
Download MongoDB Community Server | MongoDB
将安装包上传到服务器,因为我实验服务器centos版本与mongdb兼容问题,最后选择了mongod 4.4.13的版本进行安装。每台服务器进行同样的安装。
upload install file to:
/root/install/mongodb-linux-x86_64-rhel80-4.4.13.tgz
cd /root/install
mkdir -p /opt/db
tar -xvf mongodb-linux-x86_64-rhel80-4.4.13.tgz -C /opt/db
cd /opt/db
mv mongodb-linux-x86_64-rhel80-4.4.13 mongodb-4.4.13
rm -rf /usr/bin/mongod
ln -s /opt/db/mongodb-4.4.13/bin/mongod /usr/bin/mongod
vi /etc/profile
...
#add below at last line
export PATH=/opt/db/mongodb-4.4.13/bin:$PATH
3. 分片
3.1 创建分片复制集,三台服务器上分别执行:
[root@mongo1 db]# mongod --bind_ip 0.0.0.0 --replSet shard1 --dbpath /data/shard1/db --logpath /data/shard1/log/mongod.log --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1
about to fork child process, waiting until server is ready for connections.
forked process: 5473
child process started successfully, parent exiting
在高版本的 MongoDB 中,--shardsvr 参数已被弃用,因为 MongoDB 的新版本改进了集群的自动配置和发现机制。若要在高版本 MongoDB 中设置分片集群,你不再需要显式指定 --shardsvr。
ps -ef |grep mongod
root 5473 1 3 01:02 ? 00:00:26 mongod --bind_ip 0.0.0.0 --replSet shard1 --dbpath /data/shard1/db --logpath /data/shard1/log/mongod.log --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1
3.2 初始化分片复制集:
# 进入mongo shell
mongo mongo01.com:27010
#shard1复制集节点初始化
rs.initiate({
_id: "shard1",
"members" : [
{
"_id": 0,
"host" : "mongo01.com:27010"
},
{
"_id": 1,
"host" : "mongo03.com:27010"
},
{
"_id": 2,
"host" : "mongo05.com:27010"
}
]
})
查看复制状态:
shard1:PRIMARY> rs.status()
{
"set" : "shard1",
"date" : ISODate("2024-06-16T07:47:41.418Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"majorityVoteCount" : 2,
"writeMajorityCount" : 2,
"votingMembersCount" : 3,
"writableVotingMembersCount" : 3,
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1718524053, 1),
"t" : NumberLong(1)
},
"lastCommittedWallTime" : ISODate("2024-06-16T07:47:33.075Z"),
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1718524053, 1),
"t" : NumberLong(1)
},
"readConcernMajorityWallTime" : ISODate("2024-06-16T07:47:33.075Z"),
"appliedOpTime" : {
"ts" : Timestamp(1718524053, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1718524053, 1),
"t" : NumberLong(1)
},
"lastAppliedWallTime" : ISODate("2024-06-16T07:47:33.075Z"),
"lastDurableWallTime" : ISODate("2024-06-16T07:47:33.075Z")
},
"lastStableRecoveryTimestamp" : Timestamp(1718524013, 1),
"electionCandidateMetrics" : {
"lastElectionReason" : "electionTimeout",
"lastElectionDate" : ISODate("2024-06-16T07:37:52.589Z"),
"electionTerm" : NumberLong(1),
"lastCommittedOpTimeAtElection" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"lastSeenOpTimeAtElection" : {
"ts" : Timestamp(1718523462, 1),
"t" : NumberLong(-1)
},
"numVotesNeeded" : 2,
"priorityAtElection" : 1,
"electionTimeoutMillis" : NumberLong(10000),
"numCatchUpOps" : NumberLong(0),
"newTermStartDate" : ISODate("2024-06-16T07:37:52.780Z"),
"wMajorityWriteAvailabilityDate" : ISODate("2024-06-16T07:37:53.499Z")
},
"members" : [
{
"_id" : 0,
"name" : "mongo01.com:27010",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 629,
"optime" : {
"ts" : Timestamp(1718524053, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2024-06-16T07:47:33Z"),
"lastAppliedWallTime" : ISODate("2024-06-16T07:47:33.075Z"),
"lastDurableWallTime" : ISODate("2024-06-16T07:47:33.075Z"),
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "",
"electionTime" : Timestamp(1718523472, 1),
"electionDate" : ISODate("2024-06-16T07:37:52Z"),
"configVersion" : 1,
"configTerm" : -1,
"self" : true,
"lastHeartbeatMessage" : ""
},
{
"_id" : 1,
"name" : "mongo03.com:27010",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 599,
"optime" : {
"ts" : Timestamp(1718524053, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1718524053, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2024-06-16T07:47:33Z"),
"optimeDurableDate" : ISODate("2024-06-16T07:47:33Z"),
"lastAppliedWallTime" : ISODate("2024-06-16T07:47:33.075Z"),
"lastDurableWallTime" : ISODate("2024-06-16T07:47:33.075Z"),
"lastHeartbeat" : ISODate("2024-06-16T07:47:40.602Z"),
"lastHeartbeatRecv" : ISODate("2024-06-16T07:47:39.815Z"),
"pingMs" : NumberLong(1),
"lastHeartbeatMessage" : "",
"syncSourceHost" : "mongo01.com:27010",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1,
"configTerm" : -1
},
{
"_id" : 2,
"name" : "mongo05.com:27010",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 599,
"optime" : {
"ts" : Timestamp(1718524053, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1718524053, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2024-06-16T07:47:33Z"),
"optimeDurableDate" : ISODate("2024-06-16T07:47:33Z"),
"lastAppliedWallTime" : ISODate("2024-06-16T07:47:33.075Z"),
"lastDurableWallTime" : ISODate("2024-06-16T07:47:33.075Z"),
"lastHeartbeat" : ISODate("2024-06-16T07:47:40.902Z"),
"lastHeartbeatRecv" : ISODate("2024-06-16T07:47:39.927Z"),
"pingMs" : NumberLong(1),
"lastHeartbeatMessage" : "",
"syncSourceHost" : "mongo01.com:27010",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1,
"configTerm" : -1
}
],
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1718524053, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1718524053, 1)
}
shard1:PRIMARY>
3.3 创建 config server 复制集
在三台服务器上执行以下命令:
mongod --bind_ip 0.0.0.0 --replSet config --dbpath /data/config/db \
--logpath /data/config/log/mongod.log --port 27019 --fork \
--configsvr --wiredTigerCacheSizeGB 1
[root@mongo1 db]# mongod --bind_ip 0.0.0.0 --replSet config --dbpath /data/config/db \
> --logpath /data/config/log/mongod.log --port 27019 --fork \
> --configsvr --wiredTigerCacheSizeGB 1
about to fork child process, waiting until server is ready for connections.
forked process: 36934
child process started successfully, parent exiting
3.4 初始化 config server 复制集
# 进入mongo shell
mongo mongo01.com:27019
#config复制集节点初始化
rs.initiate({
_id: "config",
"members" : [
{
"_id": 0,
"host" : "mongo01.com:27019"
},
{
"_id": 1,
"host" : "mongo03.com:27019"
},
{
"_id": 2,
"host" : "mongo05.com:27019"
}
]
})
4. 搭建 mongos
4.1 指定config复制集
在mongo01.com / mongo03.com / mongo05.com上执行以下命令:
#启动mongos,指定config复制集
mongos --bind_ip 0.0.0.0 --logpath /data/mongos/mongos.log --port 27017 --fork \
--configdb config/mongo01.com:27019,mongo03.com:27019,mongo05.com:27019
4.2 将mongos加入第1个分片
# 连接到mongos
mongo mongo01.com:27017
#添加分片
mongos>sh.addShard("shard1/mongo01.com:27010,mongo03.com:27010,mongo05.com:27010")
#查看mongos状态
mongos>sh.status()
5. 创建分片集合
连接到mongos, 创建分片集合
mongo mongo01.com:27017
mongos>sh.status()
#为了使集合支持分片,需要先开启database的分片功能
mongos>sh.enableSharding("company")
# 执行shardCollection命令,对集合执行分片初始化
mongos>sh.shardCollection("company.emp", {_id: 'hashed'})
mongos>sh.status()
#插入测试数据
use company
for (var i = 0; i < 10000; i++) {
db.emp.insert({i: i});
}
#查询数据分布
db.emp.getShardDistribution()
6. 创建第2个分片的复制集
在mongo02.com / mongo04.com / mongo06.com上执行以下命令:
mkdir -p /data/shard2/db /data/shard2/log/
mongod --bind_ip 0.0.0.0 --replSet shard2 --dbpath /data/shard2/db \
--logpath /data/shard2/log/mongod.log --port 27011 --fork \
--shardsvr --wiredTigerCacheSizeGB 1
初始化第二个分片的复制集
# 进入mongo shell
mongo mongo06.com:27011
#shard2复制集节点初始化
rs.initiate({
_id: "shard2",
"members" : [
{
"_id": 0,
"host" : "mongo06.com:27011"
},
{
"_id": 1,
"host" : "mongo02.com:27011"
},
{
"_id": 2,
"host" : "mongo04.com:27011"
}
]
})
#查看复制集状态
rs.status()
mongos加入第2个分片
# 连接到mongos
mongo mongo01.com:27017
#添加分片
mongos>sh.addShard("shard2/mongo02.com:27011,mongo04.com:27011,mongo06.com:27011")
#查看mongos状态
mongos>sh.status()
7. check
8.说明
本文主要目的是记录安装过程,也给有类似需求的同学参考。
参考了其他作者的文档。猿创征文|MongoDB数据库 分片集群搭建部署实战_搭建mongodb分片集群-CSDN博客
MongoDB分片集群搭建_哔哩哔哩_bilibili
相关文章:

mongodb 集群安装
整体架构图: 1. 配置域名 Server1: OS version: CentOS Linux release 8.5.2111 hostnamectl --static set-hostname mongo01 vi /etc/sysconfig/network # Created by anaconda hostnamemong01 echo "192.168.88.20 mong1 mongo01.com mongo…...

绿茶集团重启IPO:流量渐退、业绩波动,还能讲出好故事吗?
近日,绿茶集团有限公司(下称“绿茶集团”)向港交所递交上市申请,花旗、招银国际为其联席保荐人。 回望绿茶集团的上市之路,可谓有诸多坎坷。该公司于2021年3月首度向港交所发起冲击,但却将中文版招股书中的“流动负债总额”错写成…...

Git与SSH
Git Git是一种分布式版本控制系统,最初由Linus Torvalds为管理Linux内核开发而设计并开发。Git可以帮助开发团队协作管理代码,跟踪代码变更历史,并在需要时回溯到特定版本。 分布式版本控制:每个开发者都可以拥有完整的代码仓库…...

我的创作纪念日--码农阿豪
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] 📱…...

Git 学习笔记(超详细注释,从0到1)
Git学习笔记 1.1 关键词 Fork、pull requests、pull、fetch、push、diff、merge、commit、add、checkout 1.2 原理(看图学习) 1.3 Fork别人仓库到自己仓库中 记住2个地址 1)上游地址(upstream地址):http…...

GitLab项目组相关操作(创建项目组Group、创建项目组的项目、为项目添加成员并赋予权限)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 ——《将…...

英语恶补ing
ing的词组都有停下来做某事的感觉了。 second hand是形容词了。 wouldnt buy这里的would是情态动词,也是助动词 助动词不能单独使用,要搭配实义动词,这样才能构成谓语 情态动词(modals)在英语中有多种作用ÿ…...

DS1339C串行实时时钟-国产兼容RS4C1339
RS4C1339串行实时时钟是一种低功耗的时钟/日期设备,具有两个可编程的一天时间报警器和一个可编程方波输出。地址和数据通过2线双向总线串行传输。时钟/日期提供秒、分钟、小时、天、日期、月份和年份信息。对于少于31天的月份,月末的日期会自动调整&…...

神经网络模型---LeNet-5
一、LeNet-5 1.定义LeNet-5模型 model models.Sequential([1.1添加一个二维卷积层,有6个过滤器,每个过滤器的尺寸是5x5。输入图像尺寸是28x28像素,具有1个颜色通道,激活函数是relu layers.Conv2D(6, (5, 5), activationrelu, input_shape…...

免费分享:1994-2020年中国各行业二氧化碳排放数据(附下载方法)
日前,国务院印发《2024—2025年节能降碳行动方案》针对重点领域进行部署,同时明确了制度标准、价格政策、资金支持、科技引领、市场化机制、全民行动等6项措施,为节能降碳提供支撑保障。1994-2020年中国各行业二氧化碳排放数据为评估环境政策…...

Qemu虚拟机在线迁移到VMware
libvirt版本:libvirt-10.0.0qemu版本:qemu-8.2.0 在生产环境中,大多数的场景是 vmware 虚拟机迁移到 qemu 环境,一般是通过关机然后导出、导入磁盘镜像来实现。 如果要将 qemu 环境虚拟机迁移到 vmware 怎么办呢?要求…...

计算机游戏因为d3dcompiler_47.dll丢失无法启动怎么办?解决只要d3dcompiler_47.dll丢失无法启动游戏软件的方法
d3dcompiler_47.dll 是一个动态链接库文件,属于 Microsoft DirectX 的一部分,主要负责编译和运行 3D 图形程序。它是支持 Direct3D 功能的核心组件,Direct3D 是一种用于编程 3D 图形的 API,广泛应用于游戏和图形密集型应用程序中。…...

LDO的原理及测试方法
一、基本结构 这是LM317芯片的核心,这个电路单元称为Bandgap Reference带隙基准源。属于模拟集成电路中的经典电路结构。 LDO拓扑结构图 常见的基本结构 利用VBE的负温度系数,而VT是正温度系数,正负温度系数抵消就的得到稳定的基准参考电压了(三极管的方程VBE=VT*In(lC/IS…...

图论算法学习
图论 dfs是可一个方向去搜,不到黄河不回头,直到遇到绝境了,搜不下去了,再换方向(换方向的过程就涉及到了回溯)。bfs是先把本节点所连接的所有节点遍历一遍,走到下一个节点的时候,再…...

面试题——RabbitMQ
★1.如何保证消息的幂等性?(如何避免消息重复投递) 生产端: 在消息发送前,先查询数据库此消息是否被处理过。处理过则忽略、否则继续处理,并在处理完成后修改状态为已处理。 消费端: 每个消息都生成全局唯一ID或业务I…...

前端开发之浏览器垃圾回收机制
前端开发之浏览器垃圾回收机制 V8引擎,作为Chrome浏览器和Node.js等环境下的JavaScript运行引擎,其垃圾回收机制是确保高效内存管理的关键。 V8垃圾回收机制的深度解析与优化 V8 JavaScript引擎采用了高效的垃圾回收机制,其中核心的实现特…...

less-loader的less转成CSS的底层原理
在现代Web开发中,CSS预处理器如LESS极大地提高了编写样式的效率和灵活性。而less-loader作为webpack的一个加载器,用于将LESS文件转换为CSS文件。本文将深入探讨less-loader如何工作,从解析LESS文件到生成最终的CSS文件的底层原理。 工作流程…...

解锁Flutter中的ProcessResult:让外部命令执行变得轻松
介绍 在我们的编程世界中,有时候我们需要与外部系统或者命令行交互。这就像在一场迷宫中寻找出口一样,我们需要向迷宫的门口询问正确的道路。而在 Flutter 中,这个问路的过程就是通过 ProcessResult 来实现的。 为什么要使用 ProcessResult…...

第二十五篇——信息加密:韦小宝说谎的秘诀
目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 加密这件事,对于这个时代的我们来说非常重要,那么…...

Redis 主从复制+哨兵+集群
1、总结写在前面 Redis 集群 数据分片 高可用性 Redis 哨兵 主从复制 故障转移 2、主从复制 2.1、准备配置 查看docker 容器 ip docker inspect 容器id | grep IPAddressdocker inspect -f{{.Name}} {{.NetworkSettings.IPAddress}} $(docker ps -aq)修改配置文件 初始…...

cpolar:通过脚本自动更新主机名称和端口号进行内网穿透【免费版】
cpolar 的免费版经常会重新分配 HostName 和 Port,总是手动修改太过麻烦,分享一下自动更新配置文件并进行内网穿透的方法。 文章目录 配置 ssh config编写脚本获取 csrf_token打开登陆界面SafariChrome 设置别名 假设你已经配置好了服务器端的 cpolar。 …...

【Python日志模块全面指南】:记录每一行代码的呼吸,掌握应用程序的脉搏
文章目录 🚀一、了解日志🌈二、日志作用🌈三、了解日志模块⭐四、日志级别💥五、记录日志-基础❤️六、记录日志-处理器handler🎬七、记录日志-格式化记录☔八、记录日志-配置logger👊九、流程梳理 &#x…...

SpringBoot 多种优雅的线程池配置与使用(异步执行函数,反射机制,动态识别参数,有返回值)
想要明白生活你需要先经历它,而不是总在分析它。 —萨莉鲁尼 文章目录 前言一、@Async注解1. 概念2. 使用2.1 使用@EnableAsync启动函数异步支持2.2 不会异步执行的坑2.2.1 为什么内部调用不会异步执行?2.2.2 如何确保@Async方法异步执行?3. 配置线程池3.1 通过代码配置3.1.…...

ansible copy模块--持续创作中
copy模块用于将文件从ansible控制节点(管理主机)或者远程主机复制到远程主机上。其操作类似于scp(secure copy protocol)。 关键参数标红。 参数: src:(source:源) 要复制到远程…...

自学SAP是学习ECC版本还是S4版本?
很多人想学SAP,问我应该学ECC版本还是S4版本,我的建议如果你是自学的话,我个人建议使用ECC版本就行,因为这两个版本前台业务和后台配置的操作差异并不大,主要差异在于数据库的差异,前台业务操作和后台系统配…...

银河麒麟4.0.2安装带有opengl的Qt5.12.9
银河麒麟4.0.2下载地址:银河麒麟-银河麒麟(云桌面系统)-银河麒麟最新版下载v4.0.2-92下载站 VirtualBox:https://www.virtualbox.org/wiki/Downloads qt下载:Index of /archive/qt/5.12/5.12.9 1安装VirtualBox:网上教材比较多 1)安装完后安…...

django学习入门系列之第二点《浏览器能识别的标签3》
文章目录 列表表格往期回顾 列表 无序列表 <!-- <ul </ul> 无序列表 --> <ul><li> 内容1 </li><li> 内容2 </li><li> 内容3 </li><li> 内容4 </li> </ul>有序列表 <!-- <ol> &…...

git常见实用命令,简单上手操作
常用命令: 添加远程账号名称:git config --global user.name ‘’ 添加用户eamil:git config --global user.email ‘’ 初始化厂库:git init 新建文件夹:mkdir 文件夹名 新建文件:touch 文件名 查看…...

2-11 基于matlab的BP-Adaboost的强分类器分类预测
基于matlab的BP-Adaboost的强分类器分类预测,Adaboost是一种迭代分类算法,其在同一训练集采用不同方法训练不同分类器(弱分类器),并根据弱分类器的误差分配不同权重,然后将这些弱分类器组合成一个更强的最终…...

Neo4j图形数据库查询,Cypher语言详解
Cypher语言详解 Cypher是一种专为Neo4j图形数据库设计的声明式查询语言。它类似于SQL,但其设计目标是便于表达图数据库中常见的图形结构和操作。本文将详细介绍Cypher语言的基本语法、常见操作、高级功能以及使用Cypher进行图形数据分析的技巧。 1. Cypher的基本概…...