mongodb 生产_mongodb副本集生产环境下部署案例,推荐一个主两个从三台机器

news/2025/4/22 1:49:03

Linux中部署Mongodb副本集

提示:

以下操作步骤较多,请耐心阅读。

关于理论部分请参考上篇浅谈mongodb副本集。

1、 准备

192.168.102.110 master

192.168.102.111 slave1

192.168.102.112 slave2

以下操作以常用的1主2从3台机器为例

2、 操作

以master为例,配置好一台再scp到slave1、slave2

2.1、准备好mongodb

2c9d50110f051bc963822e5e609b538b.png

2.2、创建数据库目录和日志文件、配置文件、mongo.pid文件

[root@odysee mongodb4.0]# mkdir data/db -p

[root@odysee mongodb4.0]# mkdir {etc,logs}

[root@odysee mongodb4.0]# touch logs/mongodb.log

[root@odysee mongodb4.0]# touch etc/mongodb.conf

5724d5b9a178a4dd9ae5ebe6f604da4e.png

创建mongo.pid文件

touch mongo.pid

41e010c3958e7645dfccd33e10ffb2ca.png

2.3、配置mongodb.conf文件

port=27017

bind_ip=192.168.102.110

dbpath=/root/General/mongodb4.0/data/db/

logpath=/root/General/mongodb4.0/logs/mongodb.log

pidfilepath=/root/General/mongodb4.0/mongo.pid

fork=true

logappend=true

shardsvr=true

directoryperdb=true

#auth=true

#keyFile=/root/General/mongodb4.0/keyfile

#副本集名字

replSet=odysee

22f45e0a775ba67f2b51156139efd47a.png

3、 编写启动脚本

[root@odysee mongodb4.0]# vi /etc/init.d/mongod

f7d81e637d2e229d044d10eceac844e0.png

写入

#!/bin/bash

# chkconfig: - 64 36

# description: this is mongod

case $1 in

start)

/root/General/mongodb4.0/bin/mongod --maxConns 20000 --config /root/General/mongodb4.0/etc/mongodb.conf

;;

stop)

/root/General/mongodb4.0/bin/mongo 192.168.102.110:27017/admin --eval "db.shutdownServer()"

#/root/General/mongodb4.0/bin/mongo 192.168.102.110:27017/admin --eval "db.auth('system', '123456');db.shutdownServer()"

;;

status)

/root/General/mongodb4.0/bin/mongo 192.168.102.110:27017/admin --eval "db.stats()"

#/root/General/mongodb4.0/bin/mongo 192.168.102.110:27017/admin --eval "db.auth('system', '123456');db.stats()"

;; esac

57570591d2399f28f4799171070f5514.png

启动master节点

注意:

给mongod执行的权限

chmod a+x /etc/init.d/mongod

/etc/init.d/mongod start

197070a732d744b62d836b917904d439.png

4、 Scp mongodb4.0和mongod.conf文件到slave1和slave2

将mongodb4.0 远程cp的slave1

scp -r ~/General/mongodb4.0/ root@192.168.102.111:~/General/

f51cdb7f3d60451b978e079b16877f75.png

将mongodb4.0 远程cp的slave2

scp -r ~/General/mongodb4.0/ root@192.168.102.112:~/General/

0aeac4088ba81df9b4281f0d3a7fcb5c.png

将mongod.conf 远程cp的slave1

scp /etc/init.d/mongod root@192.168.102.111:/etc/init.d/

0ed6ff909aa96729d8bdf382c053e1cc.png

将mongod.conf 远程cp的slave2

scp /etc/init.d/mongod root@192.168.102.112:/etc/init.d/

b9f3736d4bb4bb69843dd7315a9325d2.png

修改slave1 mongodb.conf的ip

dfe8b5f40e996aa8591663d54ed1312c.png

修改slave2 mongodb.conf的ip

80fcd15853327b3d60bea53e2a23988b.png

修改slave1 mongod的ip

44434cd66fafeda056b4e5313a8332d1.png

修改slave2 mongod的ip

51aecf0e5ee1c99417710f43d1af0a4a.png

启动slave1

/etc/init.d/mongod start

c490e20b0b4db86b57cbca9abf4b1d34.png

启动slave2

/etc/init.d/mongod start

6f741b0d81ec8c971b58493c71560dab.png

5、配置主节点

5.1、利用mongo登录

bin/mongo 192.168.102.110

e3f58ebea7ff358450347b4650ecc052.png
2ba8e02076a3d870e400bbdc1376cd85.png

5.2、初始化副本集,设置本机为主节点

rs.initiate()

29789c89c6ea2c5e5fb2d969129840ad.png

rs.conf()

0e8faa3c2470b9816d8893d4797c07f8.png

注意:

执行上面的两个命令后,前缀已经改成odysee:PRIMARY>

5.3、添加副本集从节点

添加slave1

rs.add("192.168.102.111:27017")

4e1ea8866d1174578d9297f930058fc3.png

添加slave2

rs.add("192.168.102.112:27017")

0004000211e838bd40fece5068d734a8.png

5.4、设置节点优先级

查看节点顺序

cfg = rs.conf()

0e82b34fffd1f595db631fec2667bbb6.png
8cbb113bb1e459d727fb8a35061b7f5a.png

设置节点优先级

odysee:PRIMARY> cfg.members[0].priority = 1

1

odysee:PRIMARY> cfg.members[1].priority = 1

1

odysee:PRIMARY> cfg.members[2].priority = 2

2

//使配置生效

odysee:PRIMARY> rs.reconfig(cfg)

注意:

主节点发生故障时,优先级高的节点就会转变为主节点接管服务。

提示:

副本集通过设置priority决定优先级,默认优先级为1。

priority值是0到100之间的数字,数字越大优先级越高。

若priority=0,则此节点永远不能成为主节点primay。

6、配置slave1和slave2

Slave1

bin/mongo 192.168.102.111

//设置Slave1为只读

odysee:SECONDARY> db.getMongo().setSlaveOk()

odysee:SECONDARY>

7d803d34f3931fc9a0ae2c42a68bde78.png

Slave2

bin/mongo 192.168.102.112

//设置Slave2为只读

odysee:SECONDARY> db.getMongo().setSlaveOk()

odysee:SECONDARY>

7bbca9f722cb55253ca47193818af7f8.png

7、设置数据库账号

添加两个管理员账号:

一个系统管理员:system

一个数据库管理员:administrator

在master操作

db.createUser({user:"system


https://dhexx.cn/news/show-547760.html

相关文章

7-3 到底是不是太胖了 (10分)

据说一个人的标准体重应该是其身高&#xff08;单位&#xff1a;厘米&#xff09;减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材&#xff08;即 | 真实体重 − 标准体重 | < 标准体重10%&#xff09;。已知市斤是公斤的两倍。现给定一群人…

进入Node.js的世界

这些天&#xff0c;每个人都在谈论Node.js &#xff0c;但是您不确定它是什么吗&#xff1f; 或者&#xff0c;您是否只想以一些书呆子知识打动您的朋友&#xff1f; 本文将带您快速了解Node.js的世界&#xff01; 背景 2009年5月27日&#xff0c; Ryan Dahl发布了以JavaScript…

【笔记】wamp多站点配置

方法很多&#xff0c;不一一叙述。 1.打开httpd.conf 去掉“#Include conf/extra/httpd-vhosts.conf” 前的注释 2.确认配置&#xff1a; <Directory /> AllowOverride all Require all granted </Directory> 3.注释掉一些语句 #ServerAdmin adminlocalhost #Ser…

python修饰器太难搞_【Python】小说爬虫界面版(各种BUG已修复)

[Python] 纯文本查看 复制代码import tkinter as tkimport reimport urllib.requestimport osimport timefrom urllib.parse import quotefrom tkinter import *import tkinter.messageboxdef search1():search entryUrl.get()search_Book "https://www.qidian.com/sear…

hibernate mysql 图片_Struts2+Hibernate3将图片保存于mysql数据库并将其显示在JSP页面

这两天研究了一下图片存储在mysql数据库中&#xff0c;并显示在jsp页面上。我创建的数据库只有一个表image(id int,image blob)&#xff1b;上传文件页面&#xff1a;upImages.jsp上传照片struts.xml文件&#xff1a;/p>"-//Apache Software Foundation//DTD Struts Co…

现有c#项目中添加选择时间_航班是您现有网站的正确选择

现有c#项目中添加选择时间在2014年初&#xff0c;我什至从未考虑过使用Twitter的Flight JavaScript组件框架&#xff0c;但在此我明确表示这是您现有网站的正确选择&#xff0c;我可能一无所知。 当您准备好要发表评论的干草叉时&#xff0c;我最好向自己解释一下。 让我给你画…

7-5 出生年 (15分)

以上是新浪微博中一奇葩贴&#xff1a;“我出生于1988年&#xff0c;直到25岁才遇到4个数字都不相同的年份。”也就是说&#xff0c;直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求&#xff0c;自动填充“我出生于y年&#xff0c;直到x岁才遇到n个数字都不相同的…

集群环境中的单例设计模式

何时使用(单例模式)&#xff1a; 在创建线程池、缓存等对象时&#xff0c;我们可以使用单例模式来避免资源的浪费。但是如果你想要存储比如产品价格等全局数据的时候&#xff0c;单例模式就成了一种反面模式&#xff0c;要考虑用其他方法替代了。 注意&#…

ios 自动缩小字体_技巧:如何改变iPhone上的字体大小

腾讯数码讯(编译&#xff1a;李斯特)最近收到不少朋友关于iPhone默认字体大小的抱怨&#xff1a;虽然iOS默认字号设置是经过精心设计的&#xff0c;但是对于一些用户来说&#xff0c;默认的字号还是显得偏小&#xff0c;导致信息或者其他界面的文字看起来比较吃力。iOS不仅在默…

mfc 儿童算数作业生成器_孩子写作业磨蹭,宝妈十八般武艺上线,亲验这3招最管用...

文 / 魔斯妈妈育儿实录“如果有一天我不见了&#xff0c;那一定是卒于陪娃写作业。”经历过人生无数大考&#xff0c;敢叫板上司领导&#xff0c;却感慨养娃的道路上活路太少。养娃最难的事情&#xff0c;莫过于陪娃写作业。而陪娃写作业最难过的两道坎就是“拖拉磨蹭”和“一做…