04.mongodb集群
创始人
2025-05-30 23:47:31
0

-----集群和安全----
1.副本集(相当于一台机器挂掉,另外一台来代替)

与主从复制的区别:副本集没有固定的主节点,副本集总有一个活跃点
(主,primary可读写)和一个或多个从节点secondary(备份,读或选举)

2.副本集的三种角色

1.primary主要成员 可读写
2.replicate 副本成员 可读,选举
3.arbiter 仲裁者 不存放任何业务数据(只负责选举主节点) rs.slaveOk() 也没有用

3.副本集的搭建

   #建立三个文件夹放配置文件和log文件#联系3个节点起来#登录主节点mongo --host=xxxx.xxx.xxx.xxx --port=27017#初始化副本集用默认的配置rs.initiate()#查看节点运行状态#添加副本从节点,公网iprs.add("180.76.159.126:27018")#添加仲裁节点rs.addArb("180.76.159.126:27019")#查看主节点获取数据的状态db.comment.find();#从节点,不能使用show dbs;#切换到从节点,让从节点承认是从节点,才可以看rs.slaveOk() //默认true#返回主节点查看db.comment.find();#可以到从节点查看,取消从节点rs.slaveOk(false);
  1. 主节点选举原则
   什么时候选举?1.主节点故障2.主节点网络不可达(心跳10秒)3.人工干预 res.stepDown(600)
怎么选举?1. 全部成员/2+1,大多数节点支持(没有节点,[除了自己投自己]就不满足)2.票数相同,新的节点胜,通过oplog找到数据是新的节点的数据新旧3.优先级大priority可以(可以设置额外票数)默认 仲裁节点优先级为0  主节点1 从节点1

4.故障测试

   #杀掉子节点,对操作没有问题ps -ef | grep mongokill -2  4045#第二个参数#主节点插入数据,副本节点挂,重启 会自动同步数据到子节点#杀掉主节点27017,27018会成为主节点#仲裁节点和主节点故障,副本节点还是副本节点#成员恢复数量,又自动选举#仲裁节点和副本节点都没有了,主节点自动降级为副本节点

5.springdata连接副本集,改ip

   var config=rs.config();config.members[0].host="xxid:27017";rs.reconfig(config);//工具修改副本名,也可以通过选择主节点和副本节点//改配置文件,通过uriuri:  mongodb://xxid:port,xxid:port,xxid:port/articledb?connect=replicaSet&slaveOk=true&replicaSet=myrs

6.分片集群(把数据拆分到不同服务器的方法,可以让几台小服务器有一台大服务器的效果)shareded cluster 副本集的再备份一个服务器
拓展系统性能的方式:垂直拓展(就是加一台服务器的性能内存带宽,直接加,性能有上限),水平拓展(多台服务器联合,无上限)
组件

     1.分片(副本集)2.mongos路由,调用寻找分片的接口,返回所有数据3.config servers 去寻找分片如图mongo1

请添加图片描述

7.搭建副本集 sharding分片角色
//清除之前创建的monogo服务
//全部要自己搭建起来,是局域网ip和副本集的集群名不同
//配置文件的副本集 clusterRole:configsvr

//主节点mongos加入分片,通过配置文件加入配置节点
//不能插入数据,需要添加和开启分片
 sh.addShard("myshardrs02/xxxip:xxport,xxip:xxport,xxip:xxport")
sh.enableSharding("articledb")#库名
//对库名.集合开启集合分片,根据自动生成的hash值范围分片(不同的片放在不同的地方)
sh.shardCollection("article.comment",{"nickname":"hashed"})

8.分片策略 哈希(平均分布,不确定范围)和范围(插入数据的时候,再分范围,确定范围用)策略

 sh.shardCollection("article.author",{"age":1})
#看分片策略,就看不同客户端的查看数据use articledb#循环插入1000条数据,js语法,会平均分配for(var i=1; i<=1000;i++){db.comment.insert({_id:i+"",nickname:"xxx"+i})}show collectionsdb.comment.count()show dbsuse articledbdb.comment.count()#为了查看效果,默认会存在chunk块64m,我们设置成1muse configdb.settings.save({_id:"chunksize",value:1})#author保存2万条数据#下一页it    

9.再增加一个路由节点(云服务器ip必须是公网才能启动)

10.springData连接
//还是一样

   spring:mongodb:#连接哪个数据库uri:  mongodb:mongsip:port,ip:port/articledb  

11.安全认证,类比mysql就是登录了有什么权限

   0.启用访问控制才能进行读写操作1.角色(默认的角色已经够用了)还有很多内置的角色: 常用的  read只读 readWrite可以读写 userAdmin可以创建数据库和修改用户root 超级管理员,所有权限2.权限3.使用1.单机服务使用//使用管理员才能管理,和mysql一样use admin//创建超管用户 db.createUser({user:"myroot",pwd:"123456",roles:["root"]})//专门管理myadmin用户,指定操作的数据库是admin数据库db.createUser({user:"myadmin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})//查看创建了哪些用户db.system.users.find()//删除用户db.dropUser("myadmin")  //修改用户密码db.changeUserPassword("myroot","12345")  //必须切换admin 才能测试 用户登录use admin  #可以不用切换数据库验证db.auth("myroot","12345")  // (常用)使用普通用户 只读和修改某个数据库,!!!必须切换admin登录超级管理员账号后,切换那个数据库才能添加 这个用户否则验证失败!!!use articledb// !!! db的名字 与切换的数据库名要一致db.createUser({user:"aaa",pwd:"123456",roles:[{role:"readWrite",db:"articledb"}]})#登录aaa用户db.auth("aaa","123456")

12.在服务端开启了认证,客户端登录(经常使用)
#需要修改配置文件 mongod.conf

   mongod --config ../config/mongod.conf
  security:authorization: enabled
#虽然进得去但是操作不了
#我们登录db.auth("myroot","123456")show collectionsexit
#使用普通用户,必须切换数据库再验证db.auth("aaa","12345")

13.springData 连接mongodb的两种方法

 1. 加上 2.uri方式 用户名+密码uri:mongodb://aaa:12345@ip:27017/article

14.集群安全认证 需要key文件加密(集群中key文件都相同)

  1.副本集 全部启动起来2.登录主节点3.创建myroot账户4.生成key文件#生成90位的加密文件openssl rand -base64 90  -out ./mongo.keyfile#只对当前用户可读,比较安全 4读 2写 1执行chmod 400 ./mongo.keyfile#复制到每个节点的目录与conf文件一起4.全部集群配置文件 把权限打开security:keyFile: /xxxx/mogo.keyfile   authorization: enabled#在主节点有账户,从节点也有这个账户

15.分片集群 每个节点都需要keyfile,先放文件后创建用户

相关内容

热门资讯

String类的初始化?  在Java程序开发中我们经常会用到字符串。字符串是指一连串的字符,它是由许多单个字符...
《反脆弱》读后感 《反脆弱》读后感(精选7篇)  认真读完一本著作后,想必你有不少可以分享的东西,是时候抽出时间写写读...
简爱读后感英文100字 下面是由unjs小编为大家整理的关于简爱读后感英文100字,欢迎阅读参考。希望可以帮助到你。篇一:K...
大暑节气文案 关于大暑节气文案4篇  随着网络社交的悄悄演进,越来越多人会在闲暇时发表文案,文案具有在理智上启发人...
【天文】认识星空之观星术纵横 文章目录写在前面中国古人如何仰望星空?从地动仪到水运仪象台地动仪水运仪象台结构和功能三...
工地新年开工奠基仪式祝福语 工地新年开工奠基仪式祝福语(精选100句)  在日常学习、工作抑或是生活中,大家或多或少都会用到过祝...
【云原生】使用PyCharm上... 文章目录在gitlab上创建Project打开PyCharm,修改配置,...
经典新年微信祝福语80条 2022年经典新年微信祝福语集锦80条  花园里面,鲜花开,鲜花开;一朵朵,真可爱,真可爱;一条短信...
农村新居落成对联 农村新居落成对联大全  在平平淡淡的学习、工作、生活中,大家或多或少都接触过一些对联吧,对联,又称对...
送别领导的祝福的话 送别领导的祝福的话(通用130句)  在我们平凡的日常里,要用到祝福语的情况还是蛮多的,祝福语的种类...
表达春节快乐的祝福语 2020年精选表达春节快乐的祝福语57条  四大幸事:除夕订到年夜饭,出门拦到出租车,串门拿到压岁钱...
Prometheus+Graf... 部署方式   非k8s方式 tar包下载 prometheus(国内镜像࿰...
头部险企如何打造低代码数据集市... 保险业的金融科技建设正在按下快进键,从最新发布的“2022 保险科技创新指数报告”来看...
《Linux下提交代码到git... 本文主要介绍在linux平台下提交代码到gitee 文章目录1、git命令行基本操作(1)创建仓库...
妈妈送六一儿童节祝福语 妈妈送六一儿童节祝福语(精选60句)  在学习、工作或生活中,许多人都写过祝福语吧,根据祝愿的对象不...
护士节送花简短祝福语 护士节送花简短祝福语(精选180句)  在我们平凡的日常里,大家都写过祝福语,肯定对各类祝福语都很熟...
算法问题中的动态规划思想(不断... 什么是动态规划? 动态规划(Dynamic Programming&#x...
恭喜结婚祝福语 常用恭喜结婚祝福语(精选90句)  在平日的学习、工作和生活里,大家都用到过祝福语吧,祝福语的类型多...
女友过生日浪漫祝福语 女友过生日浪漫祝福语  在日常学习、工作抑或是生活中,要用到祝福语的情况还是蛮多的,借助祝福语人们可...
对话鲁邦通陶洋|中国专精特新“... 文|智能相对论作者|沈浪1986年,德国管理学家赫尔曼·西蒙在对德国经济和国际贸易体系...