1. 官方安装文档推荐
https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat/
2. 使用 .rpm 包安装
(1). 配置存储库
创建一个/etc/yum.repos.d/mongodb-enterprise.repo
文件,以便您可以使用yum
以下命令直接安装MongoDB企业
[mongodb-enterprise]
name=MongoDB Enterprise Repository
baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/4.0/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
(2). 安装MongoDB Enterprise软件包
当前目录下发出命令:
sudo yum install -y mongodb-enterprise
3. 虚拟机配置
(1). 部署三台虚拟机,三个Mongo节点都按照以下方式创建
配置每个虚拟机的IP和端口号 |
10.10.11.41:20001 |
10.10.11.42:20002 |
10.10.11.43:20003 |
(2). 文件存储地址创建
[1]. MongoDB数据存储地址:/data/mongo-conf/data1/data
[2]. MongoDB日志存储地址:/data/mongo-conf/data1/log/mongod.log
[3]. MongoDB启动Config文件: /data/mongo-conf/data1/config.conf
systemLog:
destination: file
path: /data/mongo-conf/data1/log/mongod.log
logAppend: true
storage:
journal:
enabled: true
dbPath: /data/mongo-conf/data1/data
directoryPerDB: true
wiredTiger:
engineConfig:
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: false
pidFilePath: /data/mongo-conf/data1/data/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 20001
bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
replication:
oplogSizeMB: 8224 #oplog集合大小
replSetName: rep1 #集群名称
[4]. MongoDB启动命令:
/usr/bin/mongod -f /data/mongo-conf/data1/config.conf &
[5]. 创建MongoDB启动脚本: /data/mongo-conf/data1/start-mongodb.sh
/usr/bin/mongod -f /data/mongo-conf/data1/config.conf &
[6]. 设置权限:
chmod 777 start-mongodb.sh
[7]. 初始化可复制集命令
//复制集初始化,在主节点上执行,ip禁止使用localhost
rs.initiate({
_id: "configRS",
version: 1,
members: [{ _id: 0, host : "10.10.11.41:20001" }]});
rs.add("10.10.11.42:20002");//有几个节点就执行几次方法
rs.add("10.10.11.43:20003");//有几个节点就执行几次方法
[8]. 测试可复制集
在每个节点运行 rs.status() 或 isMaster()命令查看复制集状态
3. 使用正确的姿势连接复制集
MongoDB复制集里Primary节点是不固定的,不固定的,不固定的! 所以生产环境千万不要直连Primary,千万不要直连Primary,千万不要直连Primary!
重要的事情说3遍!
(1). JAVA原生驱动开发
List<ServerAddress> asList = Arrays.asList(
new ServerAddress("10.10.11.41", 20001),
new ServerAddress("10.10.11.42", 20002),
new ServerAddress("10.10.11.43", 20003));
client = new MongoClient(asList);
(2). Spring配置开发
<mongo:mongo-client
replica-set="10.10.11.41:20001,10.10.11.42:20002,10.10.11.43:20003">
</mongo:mongo-client>
(3). 配置Tips
配置Tips:
关注Write Concern参数的设置,默认值1可以满足大多数场景的需求。W值大于1可以提高数据的可靠持久化,但会降低写性能。
在options里添加readPreference=secondaryPreferred即可实现读写分离,读请求优先到Secondary节点,从而实现读写分离的功能