暗黑模式
安装和部署MongoDB(Ubuntu)
路线数据库MongoDB
安装
参考官方文档
部署单节点复制集
bash
cd myWorkDir # 假设把数据库文件存放在 myWorkDir 里
mkdir -p mongodb/rs0-0 # 创建用于存放 mongodb 数据的目录,所有的数据库文件都会存放在在这里
openssl rand -base64 756 > ./mongodb/mongodb-keyfile-rs0.key # 创建 keyfile
chmod 400 ./mongodb/mongodb-keyfile-rs0.key # 设置合适的文件权限
mongod --port 27017 --bind_ip_all --dbpath ./mongodb/rs0-0 --replSet rs0 --keyFile ./mongodb/mongodb-keyfile-rs0.key --oplogSize 128 --fork --logpath ./mongodb/rs0-0.log # 启动 mongodb 服务
mongosh --port 27017 # 进入 mongdob 服务中配置复制集
test> const rsconf = {_id:"rs0",members:[{_id: 0, host: "192.168.1.100:27017"}}
test> rs.initiate(rsconf)
rs0 [direct: primary] test> use admin
rs0 [direct: primary] admin> db.createUser({user: "admin", pwd:"MONGODB_ADMIN_PASSWORD", roles:[{role: "root",db:"admin"}]})
rs0 [direct: primary] admin> exit
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
WARNING
- 若要在其他机器上访问节点,那么
host
不能是 127.0.0.1 和 localhost- 你可以使用本地IP如
192.168.1.100
或公网IP - 或者使用主机名,如公网网址
https://xx.yy.com
,或本机 hosts文件 中设置的主机名:192.168.1.100 myhost
- 你可以使用本地IP如
MONGODB_ADMIN_PASSWORD
记得保存你所设置的密码
部署多节点复制集
bash
cd myWorkDir # 假设把数据库文件存放在 myWorkDir 里
mkdir -p mongodb/rs0-{0..2}
openssl rand -base64 756 > ./mongodb/mongodb-keyfile-rs0.key
chmod 400 ./mongodb/mongodb-keyfile-rs0.key
mongod --port 27017 --bind_ip_all --dbpath ./mongodb/rs0-0 --replSet rs0 --keyFile ./mongodb/mongodb-keyfile-rs0.key --oplogSize 128 --fork --logpath ./mongodb/rs0-0.log
mongod --port 27018 --bind_ip_all --dbpath ./mongodb/rs0-1 --replSet rs0 --keyFile ./mongodb/mongodb-keyfile-rs0.key --oplogSize 128 --fork --logpath ./mongodb/rs0-1.log
mongod --port 27019 --bind_ip_all --dbpath ./mongodb/rs0-2 --replSet rs0 --keyFile ./mongodb/mongodb-keyfile-rs0.key --oplogSize 128 --fork --logpath ./mongodb/rs0-2.log
mongosh --port 27017
test> const rsconf = {_id:"rs0",members:[{_id: 0, host: "192.168.1.100:27017"}, {_id: 1, host: "192.168.1.101:27018"},{_id: 2, host: "192.168.1.102:27019"}]}
test> rs.initiate(rsconf)
rs0 [direct: primary] test> use admin
rs0 [direct: primary] admin> db.createUser({user: "admin", pwd:"kve123456", roles:[{role: "root",db:"admin"}]})
rs0 [direct: primary] admin> exit
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
单/多节点转换
bash
rs0 [direct: primary] admin> rs.add(...)
rs0 [direct: primary] admin> rs.remove(...)
1
2
2