CentOS7二进制安装和YUM安装mongodb,服务器无法安装5.0以上的 mongodb 数据库报错 Illegal instruction

文章目录

MongoDB 安装

二进制安装

sh 复制代码
[root@mysql5-7 mongodb-6.0.4]# cat start.sh 

#!/bin/bash

cd /opt/mongodb-6.0.4
mongod --dbpath /data/mongodb --logpath ./mongod.log --bind_ip=0.0.0.0  --fork
sh 复制代码
[root@mysql5-7 mongodb-6.0.4]# cat stop.sh 
#!/bin/bash

cd /opt/mongodb-6.0.4
mongod --dbpath /data/mongodb --logpath ./mongod.log --shutdown

YUM 安装

sh 复制代码
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/7/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-4.4.asc
EOF
sh 复制代码
yum install -y mongodb-org
sh 复制代码
systemctl start mongod

Tips:

1、MongoDB安装问题

故障分析 | MongoDB 5.0 报错 Illegal instruction 解决

仔细查找官方文档,可以看到安装MongoDB 5.0 版本确实需要依赖支持 AVX 指令集的 CPU

检查下我自己服务器的 CPU , 确实不支持 AVX (注意:若支持AVX指令集,flags字段会有打印 'avx' 字符串):

结论

若需要安装或升级到 MongoDB 5.0 新版本,一定要提前确保自己的服务器 CPU 能否支持 AVX 指令集 架构,检查命令如下:

sh 复制代码
cat /proc/cpuinfo |grep avx

一般家用服务器和新出的服务器都支持 avx 指令集,但是老版本的和一些服务器的 cpu 不支持该指令集,建议使用4.4版本的mongoDB

2、MongoDB登录

sql 复制代码
mongo -u root -p 1233

show dbs

3、MongoDB排序时内存大小限制和创建索引

sql 复制代码
[Error] Executor error during find command :: caused by :: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit.

32MB这个限制是在参数internalQueryExecMaxBlockingSortBytes中控制。你可以在MongoDB的客户端上直接查看这个参数的值,执行以下语句:

sh 复制代码
db.runCommand({
   getParameter: 1,
   "internalQueryExecMaxBlockingSortBytes": 1
})

所以在4.3以上的版本,执行以下命令:

sh 复制代码
db.runCommand({
   getParameter: 1,
   "internalQueryMaxBlockingSortMemoryUsageBytes": 1
})

扩大排序内存的限制,例如扩大10倍至320M

sql 复制代码
db.adminCommand({setParameter:1, internalQueryExecMaxBlockingSortBytes:335544320})

4、创建用户

超级管理员

sh 复制代码
# 进入 mongo
mongo

# 切换为 admin 用户
use admin

添加超级管理员账号

yaml 复制代码
db.createUser(
    {
        user:"rootadmin",
        pwd:"123456",
        roles:["root"]
    }
)

设置完成,可以通过指令 show users 查看是否设置成功。

开启验证权限

找到MongoDB安装目录下的bin目录中的mongod.cfg文件,开启权限验证功能:

yaml 复制代码
security:
  authorization: enabled

创建pro用户,并授予pro用户check_prosample_pro2个库的管理权限和读写权限

yaml 复制代码
db.createUser({user:"pro",pwd:"123456",roles:[{role:"dbAdmin", db:"sample_pro"},{role:"readWrite",db:"sample_pro"},{role:"dbAdmin", db:"check_pro"},{role:"readWrite",db:"check_pro"}]})

找到MongoDB安装目录下的bin目录中的mongod.cfg文件,开启权限验证功能:

yaml 复制代码
security:
  authorization: enabled

5、Java yaml使用密码连接mongodb

yaml 复制代码
  data:
    mongodb:
      host: 127.0.0.1
      username: 账号
      password: 密码
      port: 27017
      uri: mongodb://账号:密码@127.0.0.1:27017/check_pro?authSource=admin

uri: mongodb://账号:密码@127.0.0.1:27017/check_pro?authSource=admin

6、MongoDB增删改查

查询所有

javascript 复制代码
    db.collectionName.find({});

查询+格式化显示

javascript 复制代码
    db.collectionName.find({}).pretty();

查询排序

java 复制代码
    db.collectionName.find({"userId":100012}).sort({"updateTime":-1});

更新符合条件的所有数据(注:使用前,先find执行,以确定更新的范围符合要求)

java 复制代码
    db.collectionName.update({"userId":233290,"shortName":"LCC"},{$set:{"money":"2000","freezeMoney":"0"}},{multi:true});

删除符合条件的所有数据记录(注:使用前,先find执行,以确定删除的范围符合要求)

java 复制代码
    db.collectionName.remove({"userId":100012});

删除所有数据但保留集合

java 复制代码
    db.collectionName.remove({});

删除数据及集合本身(慎用)

java 复制代码
    db.collectionName.drop();

新增集合及插入数据(没有集合=创建集合+插入新记录,有集合=插入新记录)

java 复制代码
    db.collectionName.save({"usid":123});

    或

    db.collectionName.insert({"uu":123});
相关推荐
平生不喜凡桃李29 分钟前
浅谈 Linux 中 namespace 相关系统调用
java·linux·服务器
2401_873544921 小时前
使用Python进行PDF文件的处理与操作
jvm·数据库·python
虾..2 小时前
多路复用 --- select系统调用
服务器·数据库·sql
杨云龙UP2 小时前
mysqldump逻辑备份文件恢复总结:全库恢复、单库恢复,一篇讲明白
linux·运维·服务器·数据库·mysql·adb
舰长1152 小时前
linux系统服务器加固1、中风险 未设置登录失败处理功能和登录连接超时处理功能。2、中风险 未限制默认账户的访问权限。3、中风险 未实现管理用户的权限分离。
linux·运维·服务器
ybwycx2 小时前
mysql重置root密码(适用于5.7和8.0)
数据库·mysql·adb
mounter6253 小时前
Linux 7.0 重磅更新:详解 nullfs 如何重塑根文件系统挂载与内核线程隔离
linux·运维·服务器·kernel
色空大师3 小时前
【网站搭建实操(一)环境部署】
java·linux·数据库·mysql·网站搭建
亚历克斯神3 小时前
Flutter for OpenHarmony: Flutter 三方库 mutex 为鸿蒙异步任务提供可靠的临界资源互斥锁(并发安全基石)
android·数据库·安全·flutter·华为·harmonyos
-Da-3 小时前
Unix哲学:一切皆文件与网络通信的统一抽象
服务器·unix