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

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 本节书摘来自华章社区《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
相关文章
|
16天前
|
存储 SQL 监控
Visual Basic与数据库交互:实现数据访问和管理
【4月更文挑战第27天】本文探讨了使用Visual Basic进行数据库编程的基础,包括数据库基础、连接、数据访问技术如ADO.NET,数据绑定,事务处理,存储过程与视图。还强调了性能优化、安全性、测试与调试,以及持续维护的重要性。通过掌握这些概念和技巧,开发者能构建高效、可靠的数据驱动应用。
|
13天前
|
监控 关系型数据库 MySQL
初体验:数据库监控、管理和可观测性工具(PMM)
Percona Monitoring and Management (PMM) 是一个开源工具,用于监控MySQL、PostgreSQL和MongoDB的性能。它提供实时监控、数据可视化、故障排除和管理功能,支持本地和云端数据库。要安装PMM,首先需安装Docker,然后通过提供的脚本部署PMM服务器和客户端。在MySQL服务器上创建PMM用户后,使用`pmm-admin`命令添加数据库。访问PMM的HTTPS网址(默认用户名和密码为admin)进行配置。本文还包含了安装Docker和PMM的命令行步骤。
初体验:数据库监控、管理和可观测性工具(PMM)
|
3天前
|
数据库
基于Jeecgboot前后端分离的ERP系统开发数据库设计(二)
基于Jeecgboot前后端分离的ERP系统开发数据库设计(二)
|
3天前
|
数据库
基于Jeecgboot前后端分离的ERP系统开发数据库设计(一)
基于Jeecgboot前后端分离的ERP系统开发数据库设计(一)
|
3天前
|
存储 NoSQL 关系型数据库
【MongoDB 专栏】MongoDB 与传统关系型数据库的比较
【5月更文挑战第10天】本文对比了MongoDB与传统关系型数据库在数据模型、存储结构、扩展性、性能、事务支持、数据一致性和适用场景等方面的差异。MongoDB以其灵活的文档模型、优秀的扩展性和高性能在处理非结构化数据和高并发场景中脱颖而出,而关系型数据库则在事务处理和强一致性上更具优势。两者各有适用场景,选择应根据实际需求来定。随着技术发展,两者正相互融合,共同构建更丰富的数据库生态。
【MongoDB 专栏】MongoDB 与传统关系型数据库的比较
|
7天前
|
存储 NoSQL 关系型数据库
MongoDB非关系型数据库实战
【5月更文挑战第6天】MongoDB,流行的NoSQL数据库,以其灵活的数据模型和高性能备受青睐。本文介绍了MongoDB的基础,包括文档型数据库特性、安装配置、数据操作。通过电商订单管理的实战案例,展示了MongoDB在处理复杂数据结构和大规模数据时的优势,适用于电商、游戏、视频直播等场景。MongoDB的索引、全文搜索和地理空间功能进一步增强了其实用性。注意性能优化和扩展性以确保系统稳定性和可靠性。
|
12天前
|
Java 关系型数据库 MySQL
springboot业务开发--springboot一键生成数据库文档
Screw是一个数据库文档生成工具,能自动化根据数据库表结构生成文档,减轻开发人员工作负担,支持MySQL、MariaDB、TiDB等多种数据库和HTML、Word、Markdown等格式。它依赖HikariCP数据库连接池和Freemarker模板引擎。通过在Spring Boot项目中添加相关依赖并配置,可以用代码或Maven插件方式生成文档。示例代码展示了如何在JUnit测试中使用Screw生成HTML文档。
|
13天前
|
安全 关系型数据库 MySQL
【PHP开发专栏】PHP PDO与MySQLi操作数据库
【4月更文挑战第30天】PHP数据库交互的核心是PDO和MySQLi。PDO提供数据访问抽象层,支持多种数据库,强调安全和灵活性;MySQLi则专为MySQL设计,有面向对象和过程化接口。两者都支持预处理语句,防止SQL注入。选择取决于项目需求,如可移植性、特定功能和API偏好。了解其使用有助于编写安全高效的代码。
|
13天前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。
|
14天前
|
SQL 关系型数据库 MySQL
【PHP开发专栏】PHP与数据库交互入门
【4月更文挑战第29天】本文介绍了PHP与数据库交互的基础,包括选择MySQL或PostgreSQL等关系型数据库,使用MySQLi或PDO扩展进行连接。示例展示了如何使用PHP连接数据库,如MySQLi的面向对象连接方式和PDO的多数据库支持。此外,还讲解了执行SQL查询(如SELECT、INSERT、UPDATE、DELETE)的操作,并强调了安全性与错误处理,如使用预处理语句防止SQL注入。通过学习,读者可掌握PHP操作数据库的基本技能。