ubuntu20.05 armv8a,
1、下载tgz包,好处是自定义安装
wget https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2204-7.0.28.tgz
2、解压和改名
tar -xzf mongo*
mv mong* mongo
3、移动到/usr/local下
mv mongo /usr/local
4、在 root 文件夹下创建 KeyFile 用于多节点认证
openssl rand -base64 745 > /root/KeyFile
5、调整认证文件为只读
chmod 600 /root/KeyFile
6、 创建 Mongodb 运行配置文件
touch /root/node1/mdb.config
touch /root/node2/mdb.config
# 创建pid文件
mkdir -p /var/run/mongodb
7、创建 Mongodb 数据文件夹
mkdir mkdir /root/node1/data
mkdir mkdir /root/node2/data
8、在第6步创建的配置文件中写入下面内容
bash
systemLog:
destination: file
path: "/root/node2/mongod.log"
logAppend: true
logRotate: 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: true
pidFilePath: "/var/run/mongodb/mongod.pid" # 建议添加PID文件
net:
bindIp: 127.0.0.1,192.168.5.1
port: 27017
maxIncomingConnections: 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测试脚本
python
from pymongo import MongoClient
import sys
def quick_test():
"""快速连接测试"""
host = "192.168.5.138"
port = 27017
try:
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()
return True
except Exception as e:
print(f"❌ 连接失败: {e}")
return False
if __name__ == "__main__":
success = quick_test()
sys.exit(0 if success else 1)