CentOS 7.9 MongoDB 安装和使用
CentOS 7.9 MongoDB 安装和使用文章目录CentOS 7.9 MongoDB 安装和使用一、软件下载及安装MongoDB Community Edition Packages二、系统配置1.limits设置2.防火墙设置3.关闭SeLinux4.禁用transparent_hugepage三、软件配置1.数据目录2.开放访问IP四、启动和关闭服务1.启动2.状态3.关闭4.开机启动
CentOS 7.9 MongoDB 安装和使用
文章目录
一、软件下载及安装
说明:CentOS 版本有
RedHat / CentOS 7.0
和RedHat / CentOS 7.2 s390x
,建议下载与操作系统CPU架构一致的软件安装包,以保证兼容性和高性能。输入arch
可查看操作系统CPU架构。注意:CentOS 7.9 与 mongodb 5.0.x不兼容,请安装mongodb 4.4.x
s390x架构: s390x 是 IBM System z 系列 (zSeries)大型机 (mainframe) 硬件平台,是银行或者大型企业或者科研单位用的,大部分用户接触不到。
cat > /etc/yum.repos.d/mongodb-org-4.4.repo <<\EOF
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
sudo yum install -y mongodb-org
若要安装指定版本,需使用以下命令
sudo yum install -y mongodb-org-4.4.8 mongodb-org-server-4.4.8 mongodb-org-shell-4.4.8 mongodb-org-mongos-4.4.8 mongodb-org-tools-4.4.8
依赖关系解决
===========================================================================================================================================================
Package 架构 版本 源 大小
===========================================================================================================================================================
正在安装:
mongodb-org x86_64 4.4.10-1.el7 mongodb-org-4.4 6.2 k
为依赖而安装:
mongodb-org-database-tools-extra x86_64 4.4.10-1.el7 mongodb-org-4.4 19 k
mongodb-org-mongos x86_64 4.4.10-1.el7 mongodb-org-4.4 17 M
mongodb-org-server x86_64 4.4.10-1.el7 mongodb-org-4.4 22 M
mongodb-org-shell x86_64 4.4.10-1.el7 mongodb-org-4.4 14 M
mongodb-org-tools x86_64 4.4.10-1.el7 mongodb-org-4.4 6.1 k
事务概要
===========================================================================================================================================================
安装 1 软件包 (+5 依赖软件包)
总下载量:52 M
安装大小:192 M
MongoDB Community Edition Packages
MongoDB Community Edition is available from its own dedicated repository, and contains the following officially-supported packages:
Package Name | Description |
---|---|
mongodb-org | A metapackage that automatically installs the component packages listed below. |
mongodb-org-database | A metapackage that automatically installs the component packages listed below.Package NameDescriptionmongodb-org-server Contains the mongod daemon, associated init script, and a configuration file (/etc/mongod.conf ). You can use the initialization script to start mongod with the configuration file. For details, see the “Run MongoDB Community Edition” section, above.mongodb-org-mongos Contains the mongos daemon.mongodb-org-shell Contains the legacy mongo shell. |
mongodb-mongosh | Contains the MongoDB Shell (mongosh ). |
mongodb-org-tools | A metapackage that automatically installs the component packages listed below:Package NameDescriptionmongodb-database-tools Contains the following MongoDB database tools:mongodump mongorestore bsondump mongoimport mongoexport mongostat mongotop mongofiles mongodb-org-database-tools-extra Contains the install_compass script |
二、系统配置
Starting in MongoDB 4.4, a startup error is generated if the
ulimit
value for number of open files is under64000
.
1.limits设置
cat > /etc/security/limits.d/mongod.conf <<\EOF
mongod soft nproc 2047
mongod hard nproc 16384
mongod soft nofile 10240
mongod hard nofile 65535
EOF
2.防火墙设置
firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --reload
3.关闭SeLinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
getenforce
4.禁用transparent_hugepage
自CentOS6版本开始引入了Transparent Huge Pages(THP),从CentOS7版本开始,该特性默认就会启用。尽管THP的本意是为提升内存的性能,不过某些数据库厂商还是建议直接关闭THP(比如说ORACLE、MariaDB、MongoDB等),否则可能会导致性能出现下降。
cat >> /etc/rc.d/rc.local <<\EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
source /etc/rc.d/rc.local
三、软件配置
1.数据目录
/var/lib/mongo
(the data directory)/var/log/mongodb
(the log directory)
mkdir -p /home/data/mongodb/log
mkdir -p /home/data/mongodb/data
sudo chown -R mongod:mongod /home/data/mongodb
将
/etc/mongod.conf
中的storage.dbPath
和systemLog.path
分别改为上面的路径。
2.开放访问IP
将
/etc/mongod.conf
中bindIp由127.0.0.1
改为0.0.0.0
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
四、启动和关闭服务
1.启动
sudo systemctl start mongod
2.状态
sudo systemctl status mongod
3.关闭
sudo systemctl stop mongod
4.开机启动
sudo systemctl enable mongod
五、卸载
sudo yum erase $(rpm -qa | grep mongodb-org)
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongo
六、使用
1.免费云监控
打开云监控
db.enableFreeMonitoring()
,注意与监控页面在mongodb官网,因此需要服务器连接外网。
mongo
> db.enableFreeMonitoring()
{
"state" : "enabled",
"message" : "To see your monitoring data, navigate to the unique URL below. Anyone you share the URL with will also be able to view this page. You can disable monitoring at any time by running db.disableFreeMonitoring().",
"url" : "https://cloud.mongodb.com/freemonitoring/cluster/随机ID",
"userReminder" : "",
"ok" : 1
}
db.disableFreeMonitoring()
2.添加用户、安全认证
mongo
> db
test
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> use admin
switched to db admin
> db
admin
> db.createUser(
{
user: "root",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
> use test
> db.createUser(
{
user: "test",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
}
)
> db.shutdownServer()
server should be down...
>
- 启用认证
vim /etc/mongod.conf
追加以下内容
security:
authorization: enabled
- client认证
mongo -umyUserAdmin -p
mongo --port 27017 -u "test" --authenticationDatabase "test" -p
注意:先切换到对应的数据库(例如
use admin
),再执行db.auth()
认证(查询、删除等操作也是如此)。
mongo
> db.auth('test')
- 查询用户
mongo -uroot -p
> use admin
switched to db admin
> db.getUsers()
- 删除用户
> db.dropUser('test')
- 修改密码
db.updateUser('test',{pwd: passwordPrompt()})
- 超级管理员
db.createUser(
{
user: "superuser",
pwd: "123456",
roles: [{"role":"root","db":"admin"}],
/* All built-in Roles
Database User Roles: read|readWrite
Database Admin Roles: dbAdmin|dbOwner|userAdmin
Cluster Admin Roles: clusterAdmin|clusterManager|clusterMonitor|hostManager
Backup and Restoration Roles: backup|restore
All-Database Roles: readAnyDatabase|readWriteAnyDatabase|userAdminAnyDatabase|dbAdminAnyDatabase
Superuser Roles: root
*/
// authenticationRestrictions: [ {
// clientSource: ["192.0.2.0"],
// serverAddress: ["198.51.100.0"]
// } ],
//mechanisms: [ "SCRAM-SHA-1","SCRAM-SHA-256"],
//passwordDigestor: "server|client",
}
)
3.database-tools
命令 | 说明 |
---|---|
Binary Import / Export | |
mongodump | Creates a binary export of the contents of a mongod database. |
mongorestore | Restores data from a mongodump database dump into a mongod or mongos |
bsondump | Converts BSON dump files into JSON. |
Data Import / Export | |
mongoimport | Imports content from an Extended JSON, CSV, or TSV export file. |
mongoexport | Produces a JSON or CSV export of data stored in a mongod instance. |
Diagnostic Tools | |
mongostat | Provides a quick overview of the status of a currently running mongod or mongos instance. |
mongotop | Provides an overview of the time a mongod instance spends reading and writing data. |
GridFS Tools | |
mongofiles | Supports manipulating files stored in your MongoDB instance in GridFS objects. |
- mongotop
cat > /etc/mongod.yaml <<\EOF
password: 123456
uri: mongodb://superuser@localhost:27017/?authSource=admin
sslPEMKeyPassword: 123456
EOF
mongotop --config=/etc/mongod.yaml
- mongodump (备份)
mongodump --config=/etc/mongod.yaml --archive=mongodump-test-db.archive --db=test
启用压缩
mongodump --config=/etc/mongod.yaml --archive=mongodump-test-db.gz --gzip --db=test
- mongorestore (恢复)
mongorestore --config=/etc/mongod.yaml --archive=mongodump-test-db.archive --nsFrom='test.*' --nsTo='example.*'
- mongodump (bson=>json)
mongodump --config=/etc/mongod.yaml --db=test -o dump
cd ./dump/
bsondump --pretty --outFile=testCollection.json testCollection.bson
七、客户端连接工具
nosqlbooster 针对MongoDB的最智能的IDE工具, 30天免费使用期限,到期自动转免费版(功能限制)。
九、遇到问题
- CentOS 7.9安装mongodb 5.0.x后无法启动,报如下错误:
Nov 11 12:14:02 node-1 systemd: Starting MongoDB Database Server...
Nov 11 12:14:02 node-1 kernel: traps: mongod[83285] trap invalid opcode ip:5568d174ddfa sp:7ffebad6dfc0 error:0 in mongod[5568cd810000+5055000]
Nov 11 12:14:02 node-1 abrt-hook-ccpp: Process 83285 (mongod) of user 991 killed by SIGILL - dumping core
Nov 11 12:14:02 node-1 systemd: mongod.service: control process exited, code=dumped status=4
Nov 11 12:14:02 node-1 systemd: Failed to start MongoDB Database Server.
Nov 11 12:14:02 node-1 systemd: Unit mongod.service entered failed state.
Nov 11 12:14:02 node-1 systemd: mongod.service failed.
Nov 11 12:14:02 node-1 abrt-server: Package 'mongodb-org-server' isn't signed with proper key
Nov 11 12:14:02 node-1 abrt-server: 'post-create' on '/var/spool/abrt/ccpp-2021-11-11-12:14:02-83285' exited with 1
Nov 11 12:14:02 node-1 abrt-server: Deleting problem directory '/var/spool/abrt/ccpp-2021-11-11-12:14:02-83285'
- 解决办法
降低mongodb版本号,改用mongodb 4.4.x(或者使用tar.gz包方式安装)。
参考:
i386 、x86_64 、ppc是指CPU的架构](https://www.cnblogs.com/wangwangever/articles/7649603.html)
更多推荐
所有评论(0)