当前位置: 首页 > wzjs >正文

广州各区正在进一步优化以下措施东莞百度推广排名优化

广州各区正在进一步优化以下措施,东莞百度推广排名优化,如何做中英版网站,广州市场监督管理局官网MongoDB 分片集群部署教程 1. 概述 MongoDB 分片是一种用于处理大规模数据集的集群技术。通过分片,MongoDB 可以将数据分布在多个服务器上,从而提高存储容量和读写性能。本教程将详细介绍如何从零开始部署 MongoDB 分片集群。 介绍 分片集群中主要由三…

MongoDB 分片集群部署教程

在这里插入图片描述

1. 概述

MongoDB 分片是一种用于处理大规模数据集的集群技术。通过分片,MongoDB 可以将数据分布在多个服务器上,从而提高存储容量和读写性能。本教程将详细介绍如何从零开始部署 MongoDB 分片集群。

介绍

分片集群中主要由三个部分组成,即分片服务器(Shard)、路由服务器(Mongos)以及配置服务器(Config Server)组成。其中,分片服务器有三个,即Shard1、Shard2、Shard3;路由服务器有两个,即Mongos1和Mongos2;配置服务器有三个,即主、副、副。

分片服务器

即MongoDB实例(即mongod,用Shard表示),分片服务器是实际存储数据的组件,持有完整数据集中的一部分,每个分片服务器都可以是一个MongoDB实例,也可是一组MongoDB实例组成的集群(副本集)。从MongoDB 3.6开始,必须将分片部署为副本集,这样具有更好的容错性。

路由服务器

即mongos,路由服务器主要提供客户端应用程序与分片集群交互的接口,所有请求都需要通过路由服务器进行协调工作。路由服务器实际上就是一个消息分发请求中心,它负责把客户端应用程序对应的数据请求转发到对应的分片服务器上。应用程序将查询、存储、更新等请求原封不动地发送给路由服务器。路由服务器询问配置服务器操作分片服务器需要获取哪些元数据,然后连接相应的分片服务器进行相关操作,最后将各个分片服务器的响应进行合并,返回给客户端应用程序。
生产环境中,一个分片集群通常会有多个路由服务器,一方面可以解决多个客户端同时请求,从而达到负载均衡的效果;另一方面可以解决当路由服务器宕机时导致整个分片集群无法使用的问题。

配置服务器

即Config Server。在生产环境中,通常需要多个配置服务器,因为它存储了分片集群的元数据,并且这些数据是不允许丢失的。因此,需要配置多个配置服务器以防止数据丢失,尽管其中一台分片服务器宕机,我们还有其它配置服务器,从而保证MongoDB分片集群依然能够正常工作。从MongoDB 3.4版本开始,配置服务器必须部署副本集,因此我们需要配置三个配置服务器组成的副本集。
配置服务器存储着分片集群的持久化元数据,而路由服务器存储着分片集群的非持久化元数据,这些数据均为内存缓存的数据。当路由服务器初次启动或关闭重启时,就会从配置服务器中加载分片集群的元数据。若是配置服务器的信息发生变化,则会通知所有路由服务器更新自己的状态,这样路由服务器就能继续准确的协调客户端与分片集群的交互工作。
在这里插入图片描述

2. 环境准备

在开始部署之前,确保已经准备好以下环境:

  • 三台服务器(例如:nosql01, nosql02, nosql03)
  • MongoDB 安装包
  • 每台服务器上已创建 user_mongo 用户
虚拟机名称服务器名称IP地址Shard1Shard2Shard3mongosConfig Server
NoSQL_1nosql01192.168.121.13427018主节点27020仲裁节点27019副节点2702127022主节点
NoSQL_2nosql02192.168.121.13527019副节点27018主节点27020仲裁节点2702127022副节点
NoSQL_3nosql03192.168.121.13627020仲裁节点27019副节点27018主节点27022副节点

(1)/opt/servers/mongodb_demo/shardcluster/:存放分片集群的相关配置文件目录、日志文件目录和数据目录等内容。
(2)/opt/servers/mongodb_demo/shardcluster/configServer/configFile:存放配置服务器的配置文件。
(3)/opt/servers/mongodb_demo/shardcluster/configServer/data:存放配置服务器的数据文件。
(4)/opt/servers/mongodb_demo/shardcluster/configServer/logs:存放配置服务器的日志文件。
(5)/opt/servers/mongodb_demo/shardcluster/shard/configFile:存放分片服务器的配置文件。
(6)/opt/servers/mongodb_demo/shardcluster/shard/shard1_data:存放分片服务器1的数据文件。
(7)/opt/servers/mongodb_demo/shardcluster/shard/shard2_data:存放分片服务器2的数据文件。
(8)/opt/servers/mongodb_demo/shardcluster/shard/shard3_data:存放分片服务器3的数据文件。
(9)/opt/servers/mongodb_demo/shardcluster/shard/logs:存放分片服务器的日志文件。
(10)/opt/servers/mongodb_demo/shardcluster/mongos/configFile:存放路由服务器的配置文件。
(11)/opt/servers/mongodb_demo/shardcluster/mongos/logs:存放路由服务器的日志文件。

3. 部署 MongoDB

3.1 上传并解压 MongoDB 安装包

  1. 将 MongoDB 安装包上传到 nosql01 服务器的 /opt/software/ 目录下。
  2. 修改安装包的用户和用户组权限为 user_mongo
  3. 解压安装包到 /opt/servers/mongodb_demo/shardcluster/ 目录下:
    $ tar -zxvf /opt/software/mongodb-linux-x86_64-rhel70-4.2.2.tgz -C /opt/servers/mongodb_demo/shardcluster/
    
  4. 重命名解压后的目录为 mongodb
    $ mv mongodb-linux-x86_64-rhel70-4.2.2/ mongodb
    

3.2 分发 MongoDB 安装包

mongodb 目录分发到 nosql02nosql03 服务器:

$ scp -r /opt/servers/mongodb_demo/shardcluster/mongodb/ user_mongo@nosql02:/opt/servers/mongodb_demo/shardcluster/mongodb/
$ scp -r /opt/servers/mongodb_demo/shardcluster/mongodb/ user_mongo@nosql03:/opt/servers/mongodb_demo/shardcluster/mongodb/

4. 部署 Config Server

4.1 创建配置文件

  1. nosql01/configServer/configFile/ 目录下创建配置文件 mongodb_config.conf
    $ touch /opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf
    
  2. 编辑 mongodb_config.conf,添加以下内容:
    # 数据文件存放路径
    dbpath=/opt/servers/mongodb_demo/shardcluster/configServer/data# 日志文件路径
    logpath=/opt/servers/mongodb_demo/shardcluster/configServer/logs/config_server.log# MongoDB 服务监听的端口号
    port=27022# 绑定 IP 地址,指定 MongoDB 服务监听的网络接口
    bind_ip=nosql01# 以追加方式写入日志文件
    logappend=true# 以守护进程方式运行 MongoDB
    fork=true# 最大同时连接数
    maxConns=5000# 复制集名称
    replSet=configs# 声明这是一个集群的 Config Server
    configsvr=true
    

4.2 分发配置文件

将配置文件分发到 nosql02nosql03

$ scp /opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf user_mongo@nosql02:/opt/servers/mongodb_demo/shardcluster/configServer/configFile/
$ scp /opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf user_mongo@nosql03:/opt/servers/mongodb_demo/shardcluster/configServer/configFile/
  1. 修改 nosql02nosql03 上的 bind_ip 为各自的 IP 地址。

4.3 启动 Config Server

在三台服务器上启动 Config Server:

$ ./mongod -f /opt/servers/mongodb_demo/shardcluster/configServer/configFile/mongodb_config.conf

4.4 配置 Config Server 副本集

在任意一台服务器上初始化副本集:

$ ./mongo --host nosql01 --port 27022
> rs.initiate()
configs:SECONDARY> rs.add('nosql02:27022')
configs:PRIMARY> rs.add('nosql03:27022')

5. 部署 Shard

5.1 创建配置文件

  1. nosql01/shard/configFile/ 目录下创建三个配置文件 mongodb_shard1.conf, mongodb_shard2.conf, mongodb_shard3.conf

    $ touch /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.conf
    $ touch /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.conf
    $ touch /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf
    
  2. 编辑 mongodb_shard1.conf,添加以下内容:

    # 数据文件存放路径
    dbpath=/opt/servers/mongodb_demo/shardcluster/shard/shard1_data# 日志文件路径
    logpath=/opt/servers/mongodb_demo/shardcluster/shard/logs/shard1.log# MongoDB 服务监听的端口号
    port=27018# 绑定 IP 地址,指定 MongoDB 服务监听的网络接口
    bind_ip=nosql01# 以追加方式写入日志文件
    logappend=true# 以守护进程方式运行 MongoDB
    fork=true# 最大同时连接数
    maxConns=5000# 复制集名称
    replSet=shard1
    
  3. 类似地,编辑 mongodb_shard2.confmongodb_shard3.conf,分别修改 dbpath, logpath, port, bind_ip, 和 replSet 参数。

5.2 启动 Shard

在三台服务器上启动 Shard:

$ ./mongod -f /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard1.conf
$ ./mongod -f /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard2.conf
$ ./mongod -f /opt/servers/mongodb_demo/shardcluster/shard/configFile/mongodb_shard3.conf

5.3 配置 Shard 副本集

在每台服务器上初始化副本集:

$ ./mongo --host nosql01 --port 27018
> rs.initiate()
shard1:SECONDARY> rs.add('nosql02:27019')
shard1:PRIMARY> rs.addArb('nosql03:27020')

6. 部署 mongos

6.1 创建配置文件

  1. nosql01/mongos/configFile/ 目录下创建配置文件 mongodb_mongos.conf
    $ touch /opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf
    
  2. 编辑 mongodb_mongos.conf,添加以下内容:
    # 日志文件路径
    logpath=/opt/servers/mongodb_demo/shardcluster/mongos/logs/mongos.log# 以追加方式写入日志文件
    logappend=true# MongoDB 服务监听的端口号
    port=27021# 绑定 IP 地址,指定 MongoDB 服务监听的网络接口
    bind_ip=nosql01# 以守护进程方式运行 MongoDB
    fork=true# 指定 Config Server 地址
    configdb=configs/nosql01:27022,nosql02:27022,nosql03:27022# 最大同时连接数
    maxConns=20000
    

6.2 分发配置文件

将配置文件分发到 nosql02

$ scp /opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf user_mongo@nosql02:/opt/servers/mongodb_demo/shardcluster/mongos/configFile/
  1. 修改 nosql02 上的 bind_ipnosql02

6.3 启动 mongos

nosql01nosql02 上启动 mongos:

$ ./mongos -f /opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf

7. 启动分片功能

7.1 登录 mongos

nosql01 上登录 mongos:

$ ./mongo --host nosql01 --port 27021

7.2 添加 Shard

向分片集群中添加 Shard:

mongos> use gateway
mongos> sh.addShard("shard1/nosql01:27018,nosql02:27019,nosql03:27020")
mongos> sh.addShard("shard2/nosql01:27020,nosql02:27018,nosql03:27019")
mongos> sh.addShard("shard3/nosql01:27019,nosql02:27020,nosql03:27018")

8. 分片基本操作

8.1 设置 chunk 大小

块大小的作用
数据分片:

MongoDB 将分片集合中的数据划分为多个块(chunk),每个块是一个连续的范围(range)。

默认情况下,每个块的大小为 64MB。

数据均衡:

当某个分片上的块数量过多或数据分布不均匀时,MongoDB 会自动触发数据迁移(chunk migration),将块从一个分片迁移到另一个分片,以实现数据均衡。

性能影响:

块大小会影响数据迁移的频率和性能。较小的块可以更精细地分布数据,但会增加迁移的频率;较大的块会减少迁移频率,但可能导致数据分布不均匀。

默认块大小

MongoDB 的默认块大小是 64MB。这个值在大多数场景下是一个合理的折衷方案。

查看 chunk 大小:

mongos> use config
mongos> db.settings.findOne({ _id: "chunksize" });

将 chunk 大小设置为 1MB:

mongos> use config
mongos> db.settings.save({"_id":"chunksize","value":1})

注意
在 MongoDB 5.0 及以上版本中,save() 方法已被弃用,不再支持。你需要使用 insertOne() 或 updateOne() 方法来插入或更新文档。

如果 config.settings 集合中还没有 chunksize 的记录,可以使用 insertOne() 插入新文档:

use config;
db.settings.insertOne({ _id: "chunksize", value: 1 });

如果 config.settings 集合中已经有 chunksize 的记录,可以使用 updateOne() 更新文档:

use config;
db.settings.updateOne({ _id: "chunksize" }, // 查询条件{ $set: { value: 1 } }, // 更新操作{ upsert: true } // 如果不存在则插入
);

8.2 模拟写入数据

创建数据库 school 并向集合 user 中插入 50000 条文档:

mongos> use school
mongos> for(i=1;i<=50000;i++){db.user.insert({"id":i,"name":"jack"+i})}

8.3 启用数据库分片

启用数据库 school 的分片功能:

mongos> use gateway
mongos> sh.enableSharding("school")

8.4 对集合进行分片

为集合 user 创建索引并进行分片:

mongos> use school
mongos> db.user.createIndex({"id":1})
mongos> sh.shardCollection("school.user",{"id":1})

9. 验证分片集群

9.1 查看分片信息

查看数据库 school 中集合 user 的分片信息:

mongos> sh.status()

9.2 验证数据分布

通过查询不同分片上的数据,验证数据是否均匀分布:

mongos> db.user.getShardDistribution()

10. 安全认证(可选)

10.1 创建 KeyFile

  1. 生成 KeyFile:
    $ openssl rand -base64 756 > /opt/servers/mongodb_demo/shardcluster/keyfile
    $ chmod 400 /opt/servers/mongodb_demo/shardcluster/keyfile
    
  2. 将 KeyFile 分发到所有服务器:
    $ scp /opt/servers/mongodb_demo/shardcluster/keyfile user_mongo@nosql02:/opt/servers/mongodb_demo/shardcluster/
    $ scp /opt/servers/mongodb_demo/shardcluster/keyfile user_mongo@nosql03:/opt/servers/mongodb_demo/shardcluster/
    

10.2 修改配置文件

在所有服务器的配置文件中添加以下内容:

# 启用安全认证
security:keyFile: /opt/servers/mongodb_demo/shardcluster/keyfile

10.3 重启集群

重启所有 MongoDB 服务以应用安全认证配置。

10.4 创建管理员用户

在 mongos 上创建管理员用户:

mongos> use admin
mongos> db.createUser({user: "admin", pwd: "admin123", roles: ["root"]})

10.5 验证安全认证

以安全认证模式登录 mongos:

$ ./mongo --host nosql01 --port 27021 -u admin -p admin123 --authenticationDatabase admin

11. 集群关闭

11.1 Mongosr、Shard、Configserver依次关闭

在关闭集群之前先关闭平衡器(Balancer)

$ ./mongo --host nosql01 --port 27021 
mongos> use gateway
mongos> sh.stopBalancer()
http://www.dtcms.com/wzjs/368681.html

相关文章:

  • 无锡网站建设企业排名百度收录入口在哪里查询
  • dw怎么做别人可以看的网站人工智能培训心得
  • 有做装修效果图赚钱的网站吗国内b站不收费网站有哪些
  • p2p网站建设价格网络营销的发展概述
  • 定制app开发 杭州app开发公司济南seo公司
  • 近期国际军事新闻网奇seo赚钱培训
  • 网站海外推广方案谷歌seo网站推广
  • 专业品牌网站设计公司优化关键词首页排行榜
  • 如保做网站赢利整站优化报价
  • 网站开发工程师的经验免费个人网站平台
  • 如何网络推广运营深圳网站优化公司
  • 哪个网站做二手车买卖网络营销案例
  • 进一步加强区门户网站建设管理推广方案策略怎么写
  • 邯郸做网站seo网络营销招聘
  • 什么网站做批发最便宜网络公司网站模板
  • 网站建设 签约信息郑州搜索引擎优化
  • 网站搭建后提示建设中网站开发工具
  • 网站建设 柳州湖州seo排名
  • 交友网站模板下载做seo需要用到什么软件
  • 网站代码在哪里写企业宣传ppt
  • 毕业设计做视频网站好做么自动收录
  • 福建省建设执业注册中心网站沈阳黄页88企业名录
  • 昆明网站建设索王道下拉个人网页在线制作
  • 把手机网站做成app企业网站运营推广
  • 做网站维护工商经营范围是什么怎么制作一个网站5个网页
  • 广州制作网站报价南京百度网站推广
  • 工厂做网站百度问答平台入口
  • 深圳市建工建设集团有限公司公司seo是什么级别
  • 网站建设管理规范电子商务网站推广策略
  • 营销型网站建设域名是站长统计app软件下载2021