《MongoDB管理与开发精要》——2.3节启动数据库

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 本节书摘来自华章社区《MongoDB管理与开发精要》一书中的第2章,第2.3节启动数据库,作者:红 丸,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.3 启动数据库
MongoDB安装、配置完后,必须先启动,然后才能使用它。怎样启动呢?下面介绍3种方式启动实例。
2.3.1 命令行方式
MongoDB默认存储数据目录为/data/db/(或者C:/data/db),默认端口为27017,默认HTTP 端口为28017。当然,也可以改成其他目录,只需要指定“dbpath”参数,如下面的代码所示:

[root@localhost ~]# /Apps/mongo/bin/mongod --dbpath=/data/db
Sun Apr  8 22:41:06 [initandlisten] MongoDB starting : pid=13701 
port=27017 dbpath=/data/db 32-bit 
......
Sun Apr  8 22:41:06 [initandlisten] waiting for connections on port 27017
Sun Apr  8 22:41:06 [websvr] web admin interface listening on port 28017

2.3.2 配置文件方式
如果是专业的DBA,在实例启动时需要加很多的参数,以便使系统运行得更加稳定。可能启动时在mongod后面加一长串的参数,这样看起来非常混乱,而且不好管理和维护。有什么方法让这些参数有条理呢?MongoDB支持同MySql一样的读取配置文件的方式来启动数据库,如下面的代码所示:

[root@localhost bin]# cat /etc/mongodb.cnf 
dbpath=/data/db/

启动时加上“-f”参数,并指向配置文件即可,如下面的代码所示:

[root@localhost bin]# ./mongod -f /etc/mongodb.cnf 
Mon May 28 18:27:18 [initandlisten] MongoDB starting : pid=18481 
port=27017 dbpath=/data/db/ 32-bit 
......
Mon May 28 18:27:18 [initandlisten] waiting for connections on port 27017
Mon May 28 18:27:18 [websvr] web admin interface listening on port 28017

2.3.3 Daemon方式
大家可能注意到,前面的两种方式都是在前台启动MongoDB进程,当启动MongoDB进程的Session窗口不小心关闭时,MongoDB进程也将随之停止,这无疑是非常不安全的。幸好,MongoDB提供了一种后台Daemon方式启动,只需加上一个“--fork”参数即可,这就可以方便地操作数据库的启动。要注意的是,用到了“--fork”参数就必须启用“--logpath”参数,这是强制性的,如下面的代码所示:

[root@localhost ~]# /Apps/mongo/bin/mongod --dbpath=/data/db --fork
--fork has to be used with --logpath
[root@localhost ~]# /Apps/mongo/bin/mongod --dbpath=/data/db 
--logpath=/data/log/r3.log --fork
all output going to: /data/log/r3.log
forked process: 19528
[root@localhost ~]#

2.3.4 mongod参数方式
最简单的就是通过执行mongod启动MongoDB数据库服务。mongod支持很多的参数,但都有默认值,其中最重要的是,需要指定数据文件路径,或者确保默认的/data/db存在并且有访问权限,否则启动后会自动关闭服务。也就是说,只要确保dbpath就可以启动MongoDB服务了。
mongod的主要参数见表2-3。


150f8ed1db623c4c807a93fa4a4e8a1352d9dfb6


f30f279baab12cff3732a9af23ced9f3c9995d93

在源代码中,mongod的参数分为一般参数、Windows参数、Replication参数、Replica Set参数、隐含参数。表2-3中列举的都是一般参数。如果要配置Replication、Replica Set等,还需要设置对应的参数,这里先不展开,将在第11章讲述。执行“mongod --help”可以看到对大多数参数的解释,但有一些隐含参数只能通过查看源代码来获得。隐含参数要么是还在开发中,要么是准备废弃,因此在生产环境中不建议使用。
可能你已经注意到,mongod的参数中没有设置内存大小相关的参数。是的,MongoDB使用os mmap机制来缓存数据文件数据,自身目前不提供缓存机制。这样做的好处是代码简单,mmap在数据量不超过内存时效率很高。但是数据量超过系统可用内存后,写入的性能可能不太稳定,容易出现大起大落。最新的1.8版本中,这种情况已经有了一定程度的改善。
这么多参数全部写在命令行中容易杂乱、不好管理,因此,mongod支持将参数写到一个配置文本文件中,然后通过“config”参数来引用此配置文件,如下面的代码所示:

./mongod --config /etc/mongo.cnf
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
7天前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
5天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
8天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
27 4
|
21天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
22天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
17天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
34 2
|
17天前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
18 1
|
23天前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
14 1
|
26天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
28天前
|
存储 NoSQL MongoDB
mongodb的数据库表怎么创建
在此过程中,理解并掌握这些基本操作,是深入探索MongoDB魅力,乃至构建高效数据解决方案的关键所在。通过实践,您将更加深刻地体会到这种随需应变的数据管理模式带来的便利与效率提升。
24 0