在Linux上高效部署MongoDB涉及多个步骤,包括安装、配置、优化以及高可用性设置。以下是一个详细的指南:
配置MongoDB源:
cd /etc/yum.repos.d
sudo vim mongodb-org-4.4.repo
在文件中添加以下内容:
[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
安装MongoDB:
sudo yum install -y mongodb-org
启动MongoDB服务:
sudo systemctl start mongod
设置MongoDB开机自启:
sudo systemctl enable mongod
添加MongoDB的APT仓库:
sudo apt-get update
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
安装MongoDB包:
sudo apt-get install -y mongodb-org
启动MongoDB服务:
sudo systemctl start mongod
设置MongoDB开机自启:
sudo systemctl enable mongod
编辑 /etc/mongod.conf
文件,确保以下配置项正确设置:
storage.dbPath
: 数据库存储路径,例如 /var/lib/mongodb
。systemLog.destination
: 日志文件路径,例如 /var/log/mongodb/mongod.log
。net.port
: MongoDB端口,默认27017。net.bindIp
: 允许连接的IP地址,通常设置为 0.0.0.0
以允许所有IP连接。replication.replSetName
: 副本集名称,例如 rs0
。初始化副本集:
连接到任意一个MongoDB实例并初始化副本集:
mongo --host localhost --port 27017
在mongo shell中执行:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "node1:27017" },
{ _id: 1, host: "node2:27017" },
{ _id: 2, host: "node3:27017" }
]
})
添加更多节点:
在每个节点上执行以下命令添加其他节点到副本集:
mongo --host node2 --port 27017
rs.add(node3:27017)
配置优先级和投票权:
为了确保主节点的稳定性,可以配置节点的优先级和投票权:
cfg = rs.conf()
cfg.members[0].priority = 2
cfg.members[1].priority = 1
cfg.members[2].priority = 1
rs.reconfig(cfg)
配置仲裁节点(可选):
如果只有两个数据节点,可以添加一个仲裁节点:
mongo --host node4 --port 27017
rs.addArb(arbiter_host:27017)
为经常用于查询的字段创建索引:
db.collection.createIndex({ field: 1 })
优化查询语句,减少不必要的数据处理:
db.collection.find({ field: 1 }).limit(10)
调整MongoDB配置文件,如 storage.wiredTiger.engineConfig.cacheSizeGB
、net.maxIncomingConnections
等。
使用MongoDB提供的工具如 mongostat
和 mongotop
监控数据库性能。配置日志记录,以便及时发现和解决问题。
定期备份数据,并测试恢复过程,以确保在发生灾难时能够快速恢复。
通过以上步骤,你可以在Linux上高效部署MongoDB,并确保其高性能和高可用性。