1. 什么是 MongoDB
MongoDB 是一个高性能、高可用性、面向文档类型的 NoSQL 数据库管理系统。与传统的关系型数据库不同的是,MongoDB 存储的是 JSON 格式的“文档”,而不是表格。由于文档结构的灵活性和可扩展性,MongoDB 在大数据领域及 Web 应用领域被广泛使用。
2. MongoDB 的自动启动
MongoDB 的自动启动是指在系统启动时,自动启动 MongoDB 服务。这样可以避免手动进入命令行或启动器执行命令启动 MongoDB 服务的步骤。
2.1 Ubuntu 系统上的自动启动
在 Ubuntu 系统上,可以使用 systemd(systemd is a system and service manager)来配置 MongoDB 的自动启动。
首先,创建一个名为 mongodb.service 的服务文件,使用 root 用户或 sudo 权限执行以下命令:
sudo nano /etc/systemd/system/mongodb.service
在服务文件中输入以下内容:
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
保存并退出编辑器。
其中,mongodb.service 是服务的名称,Description 是服务的描述。最后一行 [Install] 中的 WantedBy=multi-user.target 表示服务将在多用户模式下自动启动。
执行以下命令将服务添加到 systemctl:
sudo systemctl enable mongodb.service
这将使 MongoDB 服务在系统启动时自动启动。执行以下命令来启动服务:
sudo systemctl start mongodb.service
现在,MongoDB 服务应该已经在后台运行了。
2.2 CentOS/RHEL 系统上的自动启动
在 CentOS/RHEL 系统上,可以使用 System V(SysV)init 脚本来配置 MongoDB 的自动启动。
首先,创建一个名为 mongodb 的 SysV 脚本,使用 root 用户或 sudo 权限执行以下命令:
sudo nano /etc/init.d/mongodb
在脚本中输入以下内容:
#!/bin/sh
#
# chkconfig: - 85 15
# description: MongoDB init script
#
# processname: mongodb
# config: /etc/mongod.conf
# pidfile: /var/run/mongodb/mongod.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
MONGOD="/usr/bin/mongod"
CONF="/etc/mongod.conf"
PIDFILE="/var/run/mongodb/mongod.pid"
OPTIONS=""
# Handle service actions.
case "$1" in
start)
echo -n "Starting mongod: "
[ -f $PIDFILE ] && echo_failure && echo "mongod already running." && exit 1
daemon --user mongod $MONGOD --quiet --config $CONF $OPTIONS > /dev/null
RETVAL="$?"
echo $RETVAL
[ "$RETVAL" = 0 ] && touch /var/lock/subsys/mongod
;;
stop)
echo -n "Stopping mongod: "
[ ! -f $PIDFILE ] && echo_failure && echo "mongod not running." && exit 1
killproc -p $PIDFILE $MONGOD
RETVAL="$?"
echo $RETVAL
[ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/mongod && rm -f $PIDFILE
;;
restart)
$0 stop
sleep 1
$0 start
;;
status)
status $MONGOD
RETVAL="$?"
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit $RETVAL
保存并退出编辑器。添加可执行权限:
sudo chmod +x /etc/init.d/mongodb
服务文件中的 chkconfig 告诉系统在运行级别 3 和 5 下启动或关闭服务。如果系统在运行时已启动,则会自动启动 MongoDB 服务。
执行以下命令将服务添加到启动列表:
sudo chkconfig --add mongodb
sudo chkconfig --level 35 mongodb on
这将在运行级别 3 和 5 下启用 MongoDB 服务。
执行以下命令启动服务:
sudo service mongodb start
现在,MongoDB 服务应该已经在后台运行了。
3. 总结
使用 systemd 或 SysV 脚本可以很容易地配置 MongoDB 的自动启动,这将使 MongoDB 服务在系统启动时自动启动,并且减少手动启动的步骤。