1、下载压缩包,解压到自定义目录
https://www.mongodb.com/try/download/enterprise
2、修改ulimit参数
vim /etc/security/limits.conf
添加
* soft nofile 204800
* hard nofile 204800
* soft nproc 204800
* hard nproc 204800
reboot重启系统
3、新建目录
sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
用户赋权(root用户可省略)
sudo chown -R mongod:mongod <directory>
4、创建keyfile文件
openssl rand -base64 756 > <path-to-keyfile>
chmod 400 <path-to-keyfile>
注意文件的权限不要设置过大
5、创建配置文件(绑定ip设置为0.0.0.0允许外网访问,这里可以根据实际网络安全进行配置)
vim /etc/mongod.conf
processManagement:
fork: true
net:
bindIp: 0.0.0.0
port: 27017
storage:
dbPath: /var/lib/mongo
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
journal:
enabled: true
security:
keyFile: <path-to-keyfile>
authorization: enabled
replication:
replSetName: "rs0"
6、安装依赖
sudo yum install net-snmp
sudo yum install libcurl openssl xz-libs
如果报missing requires of libmysqlclient.so.18(libmysqlclient_18)
下载安装缺少依赖
wget http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster/5.5.37-25.10/RPM/rhel6/x86_64/Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
rpm -ivh Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
(这里没有配置selinux,如有需要请参考https://www.mongodb.com/docs/v4.4/tutorial/install-mongodb-on-red-hat-tarball/)
7、mongodb的bin目录添加到PATH中
sudo ln -s mongodb目录/bin/* /usr/local/bin/
(也可以直接copy文件:sudo cp mongodb目录/bin/* /usr/local/bin/)
8、编写启动、停止脚本
vim startup.sh
mongod -f /etc/mongod.conf
vim stop.sh
mongod --port=27017 --dbpath=/var/lib/mongo --shutdown
9、启动
sh startup.sh
10、进入数据库
mongo
11、再重复创建两个mongodb组成三节点集群,主机别名vm1、vm2、vm3
mongodb可以搭建复制集集群和切片集群
mongodb推荐使用复制集集群,服务器推荐奇数个防止选举主节点时出现平局,推荐使用多数据中心的分布式部署防止出现如断电、断网等故障,三个中心五个节点(2)、(2)、(1)这种集群可以很好避免此类问题:
三台服务器可以搭建1主2从和1主1从1选举人两种模式,选举人不保存数据,集群中有选举权的节点不超过7个。
1主1从1选举人模式,进入mongodb执行
cfg={ _id:"rs0",members:[{_id:0,host:'vm3:27017',priority:1},{_id:1,host:'vm2:27017',priority:1},{_id:2,host:'vm1:27017',arbiterOnly:true}] };
rs.initiate(cfg);
mongo命令登录不同节点,可以看见不同的节点角色
12、新建root用户
db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
}
);
用root用户登录
db.auth('root','123456')