热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

集群搭建_Mongodb副本集+分片集群搭建

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb副本集+分片集群搭建相关的知识,希望对你有一定的参考价值。环境需求:

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mongodb 副本集+分片集群搭建相关的知识,希望对你有一定的参考价值。


环境需求:

在三台机器上搭建副本集,在副本集上做分片


服务器IP:

192.168.1.232/192.168.1.238/192.168.1.241


安装Mongodb

all nodes:

tar zxvf mongodb-linux-x86_64-rhel62-3.4.4.tgz

cp -rvf  mongodb-linux-x86_64-rhel62-3.4.4  /opt/mongodb_3.4.4

cd /opt/mongodb_3.4.4/

mkdir -pv conf logs data/{mongod,configsvr}

sleep 1

touch  logs/{mongo,configsvr,route}.log


配置Mongodb副本集

all nodes:

echo "port=10001

dbpath=/opt/mongodb_3.4.4/data/mongod

logpath=/opt/mongodb_3.4.4/logs/mongod.log

pidfilepath=/opt/mongodb_3.4.4/logs/mongod.pid

bind_ip=127.0.0.1,`ifconfig  | grep "inet addr:" | grep -v ‘127.0.0.1‘ | sed ‘s/^.*r://g‘  | sed ‘s/Bc.*$//g‘`

oplogSize=10000

fork=true

logappend=true

shardsvr=true

replSet=shard" > /opt/mongodb_3.4.4/conf/mongod.conf

/opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/mongod.conf


初始化mongodb  shard节点

192.168.1.232 node:

/opt/mongodb_3.4.4/bin/mongo  192.168.1.232:10001

use admin

cOnfig={ _id:"shard", members:[

{_id:0,host:‘192.168.1.232:10001‘},

{_id:1,host:‘192.168.1.238:10001‘},   

{_id:2,host:‘192.168.1.241:10001‘}] };

初始化副本集配置

rs.initiate(config);

查看集群节点的状态

rs.status();


配置Mongodb Config服务器

all node:

echo "port=20001

dbpath=/opt/mongodb_3.4.4/data/configsvr

logpath=/opt/mongodb_3.4.4/logs/configsvr.log

pidfilepath=/opt/mongodb_3.4.4/logs/configsvr.pid

bind_ip=127.0.0.1,`ifconfig  | grep "inet addr:" | grep -v ‘127.0.0.1‘ | sed ‘s/^.*r://g‘  | sed ‘s/Bc.*$//g‘`

cOnfigsvr=true

fork=true

logappend=true

replSet=cfgsvr"  > /opt/mongodb_3.4.4/conf/configsvr.conf

/opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/configsvr.conf


初始化mongodb  config节点

192.168.1.232 node:

/opt/mongodb_3.4.4/bin/mongo 192.168.1.232:20001

use admin

cOnfig={ _id:"cfgsvr", members:[

{_id:0,host:‘192.168.1.232:20001‘},

{_id:1,host:‘192.168.1.238:20001‘},   

{_id:2,host:‘192.168.1.241:20001‘}] };

初始化副本集配置

rs.initiate(config);

查看集群节点的状态

rs.status();


配置Mongodb Mongos路由

all node:

echo "port=27017
cOnfigdb=
cfgsvr/192.168.1.232:20001,192.168.1.238:20001,192.168.1.241:20001

bind_ip=127.0.0.1,`ifconfig  | grep "inet addr:" | grep -v ‘127.0.0.1‘ | sed ‘s/^.*r://g‘  | sed ‘s/Bc.*$//g‘`
fork = true

logpath = /opt/mongodb_3.4.4/logs/route.log

logappend=true":  >  /opt/mongodb_3.4.4/conf/mongos.conf

/opt/mongodb_3.4.4/bin/mongos -f /opt/mongodb_3.4.4/conf/mongos.conf


启用分片:

192.168.1.232 node:

/opt/mongodb_3.4.4/bin/mongo 192.168.1.232:27017

use  admin

db.runCommand({"addShard" :"shard/192.168.1.232:10001,192.168.1.238:10001,192.168.1.241:10001"})

查看分片服务器的配置              

db.runCommand( { listshards : 1 } );

指定testdb库分片生效

db.runCommand( { "enablesharding": "testdb"})

###未操作

##指定数据库里需要分片的集合和片键

##db.runCommand( { shardcollection : " enablesharding.step",key: {_id: 1} } )

##这里我们设置对testdb库的step 表进行分片,根据 id 自动分片到 shard1 ,shard2 上面去。这样##设置是因为不是所有mongodb 的数据库和表都需要分片。


测试副本集数据复制功能

连接到任意节点

/opt/mongodb_3.4.4/bin/mongo 192.168.1.232:27017

use test;

db.mongotest.insert({"name":"baiyongjie"}) #插入数据

db.mongotest.insert({"age":"24"})

连接到其他节点,数据是否有进行同步

/opt/mongodb_3.4.4/bin/mongo 192.168.1.238:27017

use test

show tables;

db.mongotest.find();

配置基于Key file 认证方式(要在admin库中建立用户)

1、在mongod节点创建用户

db.createUser({  

   user:"root",  

   pwd:"baiyongjie",  

   roles:[{role:"root",db:"admin"}]})

db.createUser({  

   user:"sa",  

   pwd:"baiyongjie",  

   roles:[{role:"root",db:"admin"}]})


2、在mongos节点创建用户

db.createUser({  

   user:"root",  

   pwd:"baiyongjie",  

   roles:[{role:"root",db:"admin"}]})

db.createUser({  

   user:"sa",  

   pwd:"baiyongjie",  

   roles:[{role:"root",db:"admin"}]})


3、关闭所有数据库

all nodes:

/opt/mongodb_3.4.4/bin/mongo 127.0.0.1:27017

use admin

db.shutdownServer()

/opt/mongodb_3.4.4/bin/mongo 127.0.0.1:10001

use admin

db.shutdownServer()

/opt/mongodb_3.4.4/bin/mongo 127.0.0.1:20001

use admin

db.shutdownServer()


4、创建keyFile文件

openssl rand -base64 745 > /opt/mongodb_3.4.4/conf/keyfile

chmod 600 /opt/mongodb_3.4.4/conf/keyfile


5、将keyfile同步到其他节点


6、使用keyFile参数指定keyfile启动mongod/configsvr/mongos

在所有mongod节点中追加key文件路径

echo "keyFile=/opt/mongodb_3.4.4/conf/keyfile" >> /opt/mongodb_3.4.4/conf/mongod.conf

echo "keyFile=/opt/mongodb_3.4.4/conf/keyfile" >> /opt/mongodb_3.4.4/conf/configsvr.conf

echo "keyFile=/opt/mongodb_3.4.4/conf/keyfile" >> /opt/mongodb_3.4.4/conf/mongos.conf


7、启动 mongod/configsvr/mongos

一定要先启动配置configsvr,在启动mongod,最后启动mongos

/opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/configsvr.conf

/opt/mongodb_3.4.4/bin/mongod -f /opt/mongodb_3.4.4/conf/mongod.conf

/opt/mongodb_3.4.4/bin/mongos -f /opt/mongodb_3.4.4/conf/mongos.conf


8、验证keyfile认证是否生效

验证mongod:

/opt/mongodb_3.4.4/bin/mongo   192.168.1.241:10001

db.auth("root","baiyongjie")

#/opt/mongodb_3.4.4/bin/mongo   192.168.1.241:10001 -uroot -pbaiyongjie

验证configsvr:使用rs.status()验证

/opt/mongodb_3.4.4/bin/mongo   192.168.1.241:20001

/opt/mongodb_3.4.4/bin/mongo   192.168.1.241:20001 -uroot -p

验证mongos:使用root账号

/opt/mongodb_3.4.4/bin/mongo   127.0.0.1:27017

/opt/mongodb_3.4.4/bin/mongo   127.0.0.1:27017  -uroot -pbaiyongjie

验证mongos:使用sa账号

查看已有的账号

9、测试集群读写是否正常

在其他服务器上测试数据是否同步

db.mongotest.find()

OK! 至此副本集+分片+Keyfile认证搭建完成。

3.4.4版本相比2.6版本认证方法需要修改为SCRAM-SHA-1

所以需要修改Mongodb 的认证方式

1、首先我这边通过数据库版本查看发现是这样的。

> use admin

switched to db admin

> db.system.version.find()

{ "_id" : "featureCompatibilityVersion", "version" : "3.4" }

{ "_id" : "authSchema", "currentVersion" : 5 }

2、开启MongoDBServiceNoAuth服务,

使用db.dropUser(‘username‘)命令删除之前所有原有的用户,再执行版本更改命令。

>db.dropUser(‘admin‘)

>db.dropUser(‘root‘)

>db.dropUser(‘sa‘)

>db.system.version.update({"_id":"authSchema"},{$set:{"currentVersion":3}})

3、创建用户

db.createUser({

user:"sa",pwd:"baiyongjie",

roles:[{"role":"root","db":"admin"}]})


db.createUser({user:"root",

pwd:"baiyongjie",

roles:[{"role":"root","db":"admin"}]})


db.createUser({user:"admin",

pwd:"baiyongjie",

roles:[{"role":"root","db":"admin"}]})


本文出自 “startuppp” 博客,请务必保留此出处http://startuppp.blog.51cto.com/11847460/1949006


推荐阅读
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • Linux环境下MySQL的安装与配置
    本文详细介绍了在Linux系统上安装和配置MySQL的步骤,包括安装前的准备工作、下载和解压安装包、初始化数据库、配置文件编辑、启动服务以及设置开机自启动等。 ... [详细]
  • 本文详细记录了 MIT 6.824 课程中 MapReduce 实验的开发过程,包括环境搭建、实验步骤和具体实现方法。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • Ubuntu 22.04 安装搜狗输入法详细指南及常见问题解决方案
    本文将详细介绍如何在 Ubuntu 22.04 上安装搜狗输入法,并提供常见问题的解决方法。包括下载安装包、更新源、安装依赖项等步骤。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 本文介绍了如何在Android应用中通过Intent调用其他应用的Activity,并提供了详细的代码示例和注意事项。 ... [详细]
  • 思科IOS XE与ISE集成实现TACACS认证配置
    本文详细介绍了如何在思科IOS XE设备上配置TACACS认证,并通过ISE(Identity Services Engine)进行用户管理和授权。配置包括网络拓扑、设备设置和ISE端的具体步骤。 ... [详细]
author-avatar
手机用户2602921813
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有