- 系统:阿里云 Ubuntu20.04.1 LTS
- 软件:MongoDB Community 4.4
安装 MongoDB
apt 安装的数据库还是 v3,无法支持副本集,副本集最低也需要 v4。很多商用数据库的也是 v4,为了后续直接部署在生产环境,请选择和生产环境一样的配置。
根据官方文档安装 MongoDB Community,确认安装好后,记得关闭 MongoDB 服务,进行副本集配置。
创建存储目录
创建 keyFile 文件,用于副本集的身份验证
1
| sudo openssl rand -base64 756 > access
|
创建第一个节点
1
| mkdir -p /data/db1/db /data/db1/logs
|
1
| sudo vim /data/db1/mongod.conf
|
配置内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| systemLog: destination: file path: /data/db1/logs/mongod.log # 日志文件路径 logAppend: true storage: dbPath: /data/db1/db # 数据目录 net: bindIp: 0.0.0.0 # 绑定所有 IP,否则只能本机访问 port: 37017 # 端口 replication: replSetName: rs0 # 副本集名称 processManagement: fork: true # 后台运行 security: authorization: enabled # 开启权限验证 clusterAuthMode: keyFile # 集群身份验证模式 keyFile: /data/access # keyFile 文件路径
|
创建第二个节点
只需要修改每个节点的端口和数据目录即可,往后的操作都是一样的。
1
| mkdir -p /data/db2/db /data/db2/logs
|
1
| sudo vim /data/db2/mongod.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| systemLog: destination: file path: /data/db2/logs/mongod.log # 修改目录 logAppend: true storage: dbPath: /data/db2/db # 修改目录 net: bindIp: 0.0.0.0 port: 37018 # 修改端口 replication: replSetName: rs0 processManagement: fork: true security: authorization: enabled clusterAuthMode: keyFile keyFile: /data/access
|
创建第三个节点
1
| mkdir -p /data/db3/db /data/db3/logs
|
1
| sudo vim /data/db3/mongod.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| systemLog: destination: file path: /data/db3/logs/mongod.log logAppend: true storage: dbPath: /data/db3/db net: bindIp: 0.0.0.0 port: 37019 replication: replSetName: rs0 processManagement: fork: true security: authorization: enabled clusterAuthMode: keyFile keyFile: /data/access
|
依次启动每个节点
1 2 3
| mongod -f /data/db1/mongod.conf mongod -f /data/db2/mongod.conf mongod -f /data/db3/mongod.conf
|
进入主节点 创建副本集
三个端口都可以进,进那个都行,我这里进 37017 端口。
输入以下命令,创建副本集,记得把 ip 换成你的服务器 ip,并打开防火期的 37017、37018、37019 端口。
1 2 3 4 5 6 7 8 9 10 11 12 13
| rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "ip:37017" },{ _id: 1, host: "ip:37018" },{ _id: 2, host: "ip:37019" }] })
|
回车后返回 { "ok" : 1 },表示副本集创建成功。
创建用户
1
| db.createUser({user:"admin",pwd:"你的密码",roles:["root"]})
|