zl程序教程

您现在的位置是:首页 >  其他

当前栏目

05.mongodb的大坑

2023-04-18 16:47:02 时间

1.linux安装yum缺少包

wget https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm
rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm
  #查看进程
 pgrep mongo
  kill -2 xxxid

2.springboot测试时 Test需要import org.junit.Test; 而不是丘比特的

3.在yml配置文件有选择数据库的,如果选择错会findAll()方法只会返回空集合

4.!!!大坑 mongodb的默认数据库是test数据库,但是语法上打db
db.comment.find(); //会查询 spring data会查询 空集合,切换数据库即可查出
//如果不存在这个字段,就返回null
//如果不写这个字段,就没有这个数据
//如果 @Field不写 也可以查到, field是属于指定字段名的

5.已经开启了一个mongodb服务会报

  [root@compute db]#  /usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf
   about to fork child process, waiting until server is ready for connections.
   forked process: 14331
   ERROR: child process failed, exited with error number 48
  #必须进入mongodb命令行才能关闭,kill不行
   mongo
   use admin
   db.shutdownServer()
   exit 
  1. kill -9会导致文件损坏导致更大的问题

7.需要重启节点 才可以解除连接不上主节点

8.需要添加一台 集群机器就检查一次,不然不知道是主节点出问题 还是 其他出问题

9.必须使用公网ip启动,不然多个端口被不知道怎么样被占用

  mongos> sh.addShard("myshardrs01/127.0.0.1:27218,127.0.0.1:27118,127.0.0.1:27018")
{
	"ok" : 0,
	"errmsg" : "in seed list myshardrs01/127.0.0.1:27218,127.0.0.1:27118,127.0.0.1:27018, host 127.0.0.1:27018 does not belong to replica set myshardrs01; found { hosts: [ "localhost:27018", "127.0.0.1:27118" ], arbiters: [ "127.0.0.1:27218" ], setName: "myshardrs01", setVersion: 3, ismaster: true, secondary: false, primary: "localhost:27018", me: "localhost:27018", electionId: ObjectId('7fffffff0000000000000001'), lastWrite: { opTime: { ts: Timestamp(1671538829, 1), t: 1 }, lastWriteDate: new Date(1671538829000), majorityOpTime: { ts: Timestamp(1671538829, 1), t: 1 }, majorityWriteDate: new Date(1671538829000) }, maxBsonObjectSize: 16777216, maxMessageSizeBytes: 48000000, maxWriteBatchSize: 100000, localTime: new Date(1671538832656), logicalSessionTimeoutMinutes: 30, minWireVersion: 0, maxWireVersion: 7, readOnly: false, compression: [ "snappy" ], ok: 1.0, operationTime: Timestamp(1671538829, 1), $clusterTime: { clusterTime: Timestamp(1671538832, 1), signature: { hash: BinData(0, 0000000000000000000000000000000000000000), keyId: 0 } } }",
	"code" : 96,
	"codeName" : "OperationFailed",
	"operationTime" : Timestamp(1671538832, 1),
	"$clusterTime" : {
		"clusterTime" : Timestamp(1671538832, 1),
		"signature" : {
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	}
}

// !!!localhost替代公网ip,报错需要按照提示的顺序写

mongos> sh.addShard("myshardrs01/localhost:27018,127.0.0.1:27118,127.0.0.1:27218")

10.设计不合理 启动路径要加引号

   .mongod  "D:Program FilesMongoDBServer4.0datadb"

11.巨坑 坑了我一个月
//27017不知道是端口太长了,外网访问不了,需要做端口 本机端口转发到本地的端口

   sysctl -p
   iptables -t nat -A PREROUTING -p tcp --dport 80  -j REDIRECT --to-port 27017

12.坑 集群权限 keyFile文件必须在特定范围内,写7不行?
chmod 600 ./mongo.keyfile