前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mongodb主从搭建

Mongodb主从搭建

作者头像
Yuou
发布2022-09-26 15:36:13
5040
发布2022-09-26 15:36:13
举报

Mongodb主从搭建

  • 内存2以上
  • 无特殊要求
  • 主IP:192.168.1.100
  • 从IP:192.168.1.101
  • 准备配置如下,每台服务器都执行
sudo echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
sudo echo "never" >  /sys/kernel/mm/transparent_hugepage/defrag
vim /etc/security/limits.conf
# 添加mongo用户可以打开的文件数量的限制
mongod  soft  nofile  64000
mongod  hard  nofile  64000
mongod  soft  nproc  32000
mongod  hard  nproc  32000
1.0 下载安装Mongo
[root@bogon ~]# curl -O http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.2.tar.gz
[root@bogon ~]# tar -zxf mongodb-linux-x86_64-3.4.2.tgz # 解压 
[root@bogon ~]# mv mongodb-linux-x86_64-3.4.2 /usr/local/mongo # 移动目录到/usr/local/mongo
1.2 主mongo配置
[root@bogon mongo]# mkdir /usr/local/mongo/{conf,data,logs}
[root@bogon mongo]# vim /usr/local/mongo/conf/mongo.conf
port=27017
fork=true
logpath=/usr/local/mongo/logs/mongodb.log
logappend=true
dbpath=/usr/local/mongo/data
maxConns=1024
master=true
oplogSize=2048
port=27017       #端口号
fork=true        #以守护进程方式运行
logpath=/usr/local/mongodb/logs/mongodb.log  #日志文件
logappend=true   #日志输出方式
dbpath=/usr/local/mongodb/data  #数据库位置
maxConns=1024    #数据库最大连接数
master=true      #主模式
oplogSize=2048   #日志滚动,单位M
1.3 从Mongo配置
[root@bogon mongo]# mkdir /usr/local/mongo/{conf,data,logs}
[root@bogon mongo]# vim /usr/local/mongo/conf/mongo.conf
port=27017
fork=true
logpath=/usr/local/mongo/logs/mongodb.log
logappend=true
dbpath=/usr/local/mongo/data
maxConns=1024
slave=true
source=192.168.1.100:27017
autoresync=true
port=27017
fork=true
logpath=/usr/local/mongo/logs/mongodb.log
logappend=true
dbpath=/usr/local/mongo/data
maxConns=1024
slave=true                  # 从模式
source=192.168.1.100:27017  # 指定主Mongodb
autoresync=true             # 自动同步
[root@localhost ~]# ln -s /usr/local/mongo/bin/* /usr/bin/
[root@bogon mongo]# mongod -f /usr/local/mongo/conf/mongo.conf 
# -f 指定配置文件
[root@bogon mongo]# mongod -f /usr/local/mongo/conf/mongo.conf --shutdown //关闭mongo
测试mongo主从同步
#  创建一个user库,然后创建集合,插入字段测试是否同步
[root@bogon mongo]# mongo 
> use test
> db.test.save({AGE:18})
> db.test.find()
{ "_id" :ObjectId("52addd66124c02eb8b2d1a5a"), "AGE" : 18 } //此为查出的数据
> show dbs
admin  0.000GB
local  0.000GB
test   0.000GB

#  从库查询数据
[root@bogon mongo]# mongo 
> use test
> db.test.find()
{ "_id" :ObjectId("52addd66124c02eb8b2d1a5a"), "AGE" : 18 } //此为查出的数据

问题解决

  • WARNING: Access control is not enabled for the database

原因分析:新版本的MongDB增加了安全性设计,推荐用户创建使用数据库时进行验证。如果用户想建立简单连接,则会提示警示信息。

解决方法

[root@bogon logs]# mongo # 进入mongo数据库
use admin //进入admin
db.createUser({user: 'root', pwd: '123456qwerty!@#$%^', roles: ['root']}) # 创建用户密码和权限
db.auth('root', '123456qwerty!@#$%^') # 返回1 认证成功,返回0认证失败
# 因为mongo的密码是针对库设置的,不是像mysql一样针对全局设置的
  • “errmsg” : “not master and slaveOk=false”

如果从服务器上进入mongo以后使用show dbs查看是否同步数据库报这个错误是正常的 因为SECONDARY是禁止读的

解决方法

# 从库执行
rs.slaveOk()
use test
db.agre.find()
{ "_id" : ObjectId("5f87ff66ab2013c2fb746333"), "AGE" : 18 } //从库能查寻到数据即可

关于Mongo认证机制

  • --auth:表示带着认证方式进行启动
mongod -f /usr/local/mongo/conf/mongo.conf --auth

进入到mongo使用show dbs发现报错

not authorized on admin to execute command { listDatabases: 1.0 }

此时应该先到admin库中进行验证

> use admin
> db.auth('root', '123456qwerty!@#$%^')  # 返回结果为1则认证成功
> show dbs # 此时查看数据就可以了
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mongodb主从搭建
    • 1.0 下载安装Mongo
      • 1.2 主mongo配置
        • 1.3 从Mongo配置
          • 测试mongo主从同步
          • 问题解决
          • 关于Mongo认证机制
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档