ubuntu20.05 armv8a,
1、下载tgz包,好处是自定义安装
wget https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2204-7.0.28.tgz2、解压和改名
tar -xzf mongo* mv mong* mongo3、移动到/usr/local下
mv mongo /usr/local4、在 root 文件夹下创建 KeyFile 用于多节点认证
openssl rand -base64 745 > /root/KeyFile5、调整认证文件为只读
chmod 600 /root/KeyFile6、 创建 Mongodb 运行配置文件
touch /root/node1/mdb.config touch /root/node2/mdb.config # 创建pid文件 mkdir -p /var/run/mongodb7、创建 Mongodb 数据文件夹
mkdir mkdir /root/node1/data mkdir mkdir /root/node2/data8、在第6步创建的配置文件中写入下面内容
systemLog: destination:filepath:"/root/node2/mongod.log"logAppend:truelogRotate: reopen# 可选:日志轮转storage: dbPath:"/root/node2/data"engine:"wiredTiger"# MongoDB 7 默认,但明确指定更好wiredTiger: engineConfig: cacheSizeGB:1# 根据你的内存调整,建议为系统内存的50%-70%journalCompressor:"snappy"# 日志压缩算法collectionConfig: blockCompressor:"snappy"# 集合数据压缩indexConfig: prefixCompression:true# 索引前缀压缩processManagement: fork:truepidFilePath:"/var/run/mongodb/mongod.pid"# 建议添加PID文件net: bindIp:127.0.0.1,192.168.5.1 port:27017maxIncomingConnections:10# 最大连接数security: keyFile:"/root/KeyFile"# 可选:启用认证# authorization: enabled# replication:# replSetName: "rs0"# 可选:操作分析operationProfiling: mode:"slowOp"slowOpThresholdMs:100# slowOpSampleRate: 0.5 # 慢操作采样率# 可选:分片配置(如果你在使用分片)# sharding:# clusterRole: "shardsvr" # 或 "configsvr"path 的值根据不同节点的路径调整,dbPath 的值和 KeyFile 的值均是如此.
其中 bindIp 的值填入 127.0.0.1 和当前服务器的 IP 地址.
port 值在 node1 中填入 27017,node2 中填入 27018
9、配置数据库
启动数据库
mongod -f /root/node1/mdb.config & mongod -f /root/node2/mdb.config可以登录测试了,tar.gz不自带客户端,可以使用python测试,或者其他工具测试,这里是一个python测试脚本
frompymongoimportMongoClientimportsysdefquick_test():"""快速连接测试"""host="192.168.5.138"port=27017try:client=MongoClient(host,port,serverSelectionTimeoutMS=3000)client.admin.command('ping')print(f"✅ 连接成功:{host}:{port}")print(f"MongoDB 版本:{client.server_info()['version']}")# 查看数据库dbs=client.list_database_names()print(f"数据库数量:{len(dbs)}")print("前5个数据库:",dbs[:5])client.close()returnTrueexceptExceptionase:print(f"❌ 连接失败:{e}")returnFalseif__name__=="__main__":success=quick_test()sys.exit(0ifsuccesselse1)