容器部署-MongoDB-高可用 (容器部署mysql挂载本地数据目录没生效)

教程大全 2025-07-17 18:16:09 浏览

MongoDB 是一款 NoSQL 数据,通常用来存储非结构化数据,我们的产品中也有用到,例如:一些文件存储在 MongoDB 的 GridFS 中。

MongoDB 有三种方式来实现高可用:

本文中选择 MongoDB 的副本集的方式来进行演示,副本集相对简单,也能达到高可用的目的,架构图如下:

为了方便,在一台 服务器 上使用多个容器的方式来进行部署,真实场景下只需要把三个容器分别部署到三台服务器上即可,具体步骤如下:

1、准备一台 CentOS 服务器,安装好 Docker 和 docker-Compose

2、在 /home 目录创建 mongodb 目录,进入 mongodb 目录创建>

6、随便进入一个 MongoDB 容器,下面命令为进入容器名 mongo1 的容器内部。

docker exec -it mongo1 bash

7、进入容器内部后,输入mongo命令进入 MongoDB 的命令行模式,在该模式执行下面的命令进行副本集的初始化:

rs.initiate({_id: "rs0", members: [{_id: 0, host: "10.211.55.3:27017"},{_id: 1, host: "10.211.55.3:27017"},{_id: 2, host: "10.211.55.3:27017"}]})

8、继续在 MongoDB 的命令行模式执行rs.status(),这个命令可以查看副本集的状态信息,包括成员、主节点和副本集配置。

9、在 Navicat 中配置连接副本集,如下图:

10、到这里,MongoDB 在 Docker 中部署副本集就已经完成,接下来可以通过一些场景测试下是否能故障自动转移,我验证的场景如下:

11、使用 .NET Core 程序进行验证,创建一个 .NET 6 的控制台程序,引用 NuGet 包 MongoDB.Driver 。

12、Program 类的代码如下:


容器部署

mongodb分片后怎么取数据

分片是MongoDB提供的一种机制,其可以将大型的集合分割保存到不同的服务器上。 与其他的分区方案相比,MongoDB几乎能自动为我们完成所有事情。 只要我们进行简单的配置,并告诉MongoDB要分配的数据,它就可以自动维护数据在不同服务器之间的平衡。 同时根据需要增减服务器,MongoDB也会自动移动平移已有数据。 分片机制提供了如下三种优势1. 对集群进行抽象,让集群“不可见”。 MongoDB自带了一个叫做mongos的专有路由进程。 mongos就是掌握统一路口的路由器,其会将客户端发来的请求准确无误的路由到集群中的一个或者一组服务器上,同时会把接收到的响应拼装起来发回到客户端。 2.保证集群总是可读写。 MongoDB通过多种途径来确保集群的可用性和可靠性。 将MongoDB的分片和复制功能结合使用,在确保数据分片到多台服务器的同时,也确保了每分数据都有相应的备份,这样就可以确保有服务器换掉时,其他的副本可以立即接替坏掉的部分继续工作。 3.使集群易于扩展。 当系统需要更多的空间和资源的时候,MongoDB使我们可以按需方便的扩充系统容量。 实现数据分割分片(shard)是集群中存储集合数据子集的一台或者多台服务器。 在生产环境中一个分片通常是一个副本集(replica set)。 片键(key),MongoDB以其作为依据来确定需要在不同分片服务器之间移动的数据。 例如我们可以选择用户名(username)字段作为分片键,现有一用户名区间[“p”,”z”],那么wufengtinghai是属于这一区间的,那么数据最终会保存到与此区间对应的分片服务器上。 分配数据到分片服务器分配数据到分片服务器可以使用不同的方式,了解不同的方式可以加深我们对MongoDB使用方式的理解。 一分片一区间分配数据到分片最简单的方式莫过于一个区间一个分片。 假设我们有四个分片存储用户的相关信息,则我们可能会得到如下的分片和区间的对应关系。 这种分片方式非常简单易懂,但是在一个大型繁忙的系统中却会带来许多的不便。 假如大量的用户使用首字母在【“a”,”f”)中的名字来注册,这将会导致分片1比较大,因此需要将其一部分文档移动到分片2上,我们可以调整分片1对应区间【”a”,”c”),使分片2的区间变成【”c”,”n”)。 如果移动数据后,分片2因此过载怎么办?假设分片1和分片2各有500G数据,而分片3和分片4各自有300G数据。 那么按照这个方案,最终需要一连串的复制,总共算下来需要移动400G数据,考虑到需要在集群的服务器之间移动这些数据,可见移动数据量之大。 如果需要新加分片服务器进行水平扩展呢?假设此时每个分片上都有了500G数据,那么我们现在需要将分片4上的400G数据移动到分片5,将分片3的300G数据移动到分片4,将分片2的200G数据移动到分片3,将分片1的100G数据移动到分片2,整整移动了1T的数据!随着分片数量和数据量的增长,这种噩梦将会持续下去,因此MongoDB不会采用这种方式。 一分片多区间如果我们采用一分片多区间的方式,我们可以将分片1上的数据划分为两个区间,【”a”,”d”)包含400G数据,【”d”,”f”)包含100G数据,同样我们也可以对分片2做类似的处理,得到区间【”f”,”j”)和【“j”,”n”)。 现在我们只需要将分片1上的【”d”,”f”)数据移动到分片4,将分片2的【“j”,”n”)的数据移动到分片3。 这样我们仅仅只需要移动200G数据。 如果要添加新分片,可以从每个分片顶端取100G数据并将其移动到新的分片上,这样仅仅只需要移动400G数据即可。 MongoDB就是利用这种方式,当一个分片的数据越来越大时,其会自动分割片键区间,并将分片的数据进行分割并移动到其他分片。

SQL Server 2005的有哪些新特点

看看官方的介绍吧:SQL Server 2005 新增功能企业数据管理在当今的互联世界中,数据和管理数据的系统必须始终为 用户可用且能够确保安全。 有了 SQL Server 2005,组织内的用户和信息技术 (IT) 专家将从减少的应用程序停机时间、提高的可伸缩性及 性能、更紧密而灵活的安全控制中获益。 SQL Server 2005 也包括了许多新的和改进的功能来帮助 IT 工作人员更有效率地工作。 SQL Server 2005 包含几个在企业数据管理中关键的增强:易管理性SQL Server 2005 使部署、管理和优化企业数据以及分析应用程序变得更简单、更容易。 作为一个企业数据管理平台,它提供单 一管理控制台,使数据管理员能够在任何地方监视、管理和调谐企业中所有的数据库和相关的服务。 它还提供了一个可以使用 SQL 管理对象轻松编程的可扩展 的管理基础结构,使得用户可以定制和扩展他们的管理环境,同时使独立软件供应商 (ISV) 也能够创建附加的工具和功能来更好地扩展打开即得的能力。 SQL Server management StudioSQL Server 2005 通 过提供一个集成的管理控制台来监视和管理 SQL Server 关系数据库、Integration Services、 Analysis Services、Reporting Services、Notification Services 以及在数量众多的分布式服务 器和数据库上的 SQL Server Mobile Edition,从而简化了管理工作。 数据库管理员能够同时执行多个任务,例如,编写和执行查询, 查看服务器对象,管理对象,监视系统活动和查看联机帮助。 SQL Server Management Studio 提供了一个开发环境,可在其中使 用 Transact-SQL、多维表达式、XML for Analysis 和 SQL Server Mobile Edition 来编写、编辑 和管理脚本和存储过程。 Management Studio 可以很容易地与源代码控制集成在一起。 Management Studio 还包括一些工具 可用来调度 SQL Server 代理作业和管理维护计划,以自动执行日常维护和操作任务。 管理和脚本编写集成在单一工具中,同时,该工具具有管理所有 类型的服务器的能力,为数据库管理员们提供了更强的生产效率。 SQL Server 2005 开放了 70 多个新的内部数据库性能和 资源使用的度量值,涵盖了从内存、锁定到对事务、网络和磁盘 I/O 的调度等。 这些动态管理视图 (DMV) 提供了对数据库和强大的基础结构的更大的 透明度和可见性,可以主动监视数据库的状况和性能。 SQL 管理对象SQL 管理对象 (SMO) 是一个新的可编程对象集,它 可实现所有 SQL Server 数据库的管理功能。 事实上,Management Studio 就是构建在 SQL 管理对象之上的。 SMO 是作 为 Microsoft Framework 程序集实现的。 您可以使用 SMO 自动执行常见的 SQL Server 管理任务,例如,用 编程方式检索配置设置,创建新数据库,应用 Transact-SQL 脚本,创建 SQL Server 代理作业以及调度备份等。 SMO 对象模型替 代了包含在 SQL Server 早期版本中的分布式管理对象 (DMO),因为它更安全可靠并具有更高的可伸缩性。 可用性在 高可用性技术、额外的备份和恢复功能,以及复制增强上的投资使企业能够构建和部署高可用的应用程序。 在高可用性上的创新有:数据库镜像、故障转移群集、数 据库快照和增强的联机操作,这有助于最小化停机时间,并确保可以访问关键的企业系统。 本节将详细介绍这些增强特性。 数据库镜像数 据库镜像允许事务日志以连续的方式从源服务器传递到单台目标服务器上。 当主系统出现故障时,应用程序可以立即重新连接到辅助服务器上的数据库。 辅助实例几 秒钟内即可检测到主服务器发生了故障,并能立即接受数据库连接。 数据库镜像工作在标

请问mongodb为什么比mysql效率高,求详细,

首先是内存映射机制,数据不是持久化到存储设备中的,而是暂时存储在内存中,这就提高了在IO上效率以及操作系统对存储介质之间的性能损耗。 (毕竟内存读取最快) 其次,NoSQL并不是不使用sql,只是不使用关系。 没有关系的存在,就表示每个数据都好比是拥有一个单独的存储空间,然后一个聚集索引来指向。 搜索性能一定会提高的。 第三,语言。 使用javascript语法进行操作更加高效、直接。 这些是MongoDB针对关系型数据库的效率要高的原因。 但是不能仅仅看重效率,这种数据库的设计带来的弊端也是有的。 例如数据关系的维护会带来很多冗余数据、客户端代码需要大量针对数据库进行的IO操作、数据挖掘难以实现等等。 所以,应当针对应用系统来选择合适的数据存储介质才是优先需要考虑的。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐