MongoDB集群安装
1、解压MongoDB安装文件
tar xf mongodb-linux-x86_64-3.4.10.tar.gz
2、启动实例并创建账号
cd mongodb-linux-x86_64-3.4.10/bin
./mongodb-start.sh
./mongo 127.0.0.1:27318
3、创建admin库的验证管理用户
use admin
db.createUser({ user: 'idsmanager', pwd: 'IDsManager', roles: [{ role: 'root', db: 'admin' }] });
验证登录测试
db.auth("idsmanager","IDsManager")
退出并关闭服务
exit
./mongodb-stop.sh
(停止数据库,编写集群需要的配置文件)
4.编辑mongodb.conf文件(每台数据库配置文件都需要修改)
vi ../mongodb.conf
新增 replSet=rs0
修改 bind_ip=[内网IP]
mongodb.conf修改后的内容:
dbpath=../data
logpath=../logs/mongodb.log
logappend=true
port=27318
bind_ip=192.168.2.123,127.0.0.1
fork=true
auth=true
replSet=rs0 #每台都需要配置
keyFile=/root/mongodb-linux-x86_64-3.4.10/key/autoke #复制集群环境认证的key每台都需要配置
syncdelay=0 #此设置控制之间的最大秒数刷新待写入到磁盘中。而mongod总是将数据写入磁盘,该设置控制了最大的保证一个成功的写操作和下一次之间的间隔数据库刷新数据到磁盘上。
在许多情况下,实际的时间间隔之间的写操作和磁盘刷新比的值是更短的
如果设置为0,mongod刷新到磁盘上的所有操作立即,可以具有显着的性能的影响。IF日记是真实的,所有的写操作将是持久的
5、创建mongodb集群所需要的key认证文件
cd /root/mongodb-linux-x86_64-3.4.10
mkdir key
vim key/autoke
autoke文件内容如下:
d+OCvbVow2sSwWz4zR/yDMg+CQsE/q+UBJj/UCzn06MOvahfOjS+0Ix7ZzhNOlpu
ge3/3CVIc5uASnZnjbzI8cJatrU+ggd5+VAkSVsjnTT216+TwT07rDxJ9sjVJElh
TiO6QWpc5K38bNTv+iif8Lg3sUCjY9LBTQqJXvbukNLfByF9HUaUXQTMPYircdY2
Y8gIBuuK0zctrsJJc6TEpkkj8iSesuedIWJ05/goqvjwtYQ1jRZGqSLELlN6SZ1O
GdgUSU9hnjmGjLmP4+P4tdtctOX2FNjsdIcV+M3/tbKa0vli0Gdp8MLXXic5xTzS
30gyMseWBzo1GV8dp4nTmpg+Z8oLfceZLRQELgRojUcqMJEDj+DQ+cIgI+kkUXAn
BlJsD24r0GfH6kvrNO6JKloerCfU4oSfy8lijY0OOR+0ghIFGHYxzz8Pw9uhMauW
swLPOhoO6gJKxZjh8dL/8bUtoEGf6F4LVHAiTvpE9Bfgm3Mk4PenT7oviRtBnzMD
p1rg+aDQzziNRvHP+4KA0iyv+JBomtqcJ2ThgSGdFhPlnq5YCe+XTAGvYhd7qp4d
2qBWuuxVMv8larlT5hfWUJEo3xzK5yKwl5A/JmIVh7mRDScFFe63yBkioqOkQs8+
6XI2YntVFN7THqGma2aRJqG7ji6kchg4zU/MLabnKGFuKBRuhOTWp4gztwP3HefY
u6jOvQdYtAi46aHBms3/G2yGREwaANLqVIKCb/3s2zUmsetZs+oqHiDkE/+CgPDN
czCZcnPV61sJXN/5MDNg39ms3SpAKpceyE/v7nWjSzGGaJh00Tv7gjOSeSUyRT0A
gxhSoOra3CBgWxetlj6jFFyDE1k73GOPpEXTux/EFqYrRUcqXm8F+p2U4BN4gc+L
bEfFKNx/mR2PGaOd+xgLYHnPCQO2LpbAZSSkWD7rOcw37CQWbEqeYmOD8wfmhIPx
65s6Kgm9NcqkZW2BU7m0hV3WwG15qjJEQY11rRlzsC1Rnj0e
授权autokey文件
[root@sf160186 mongodb-linux-x86_64-3.4.10]# chmod 400 key/autoke
6、确保集群服务器相互之间27318端口通信正常
在集群的各台服务器之间相互使用telnet命令测试:
telnet [IP] 27318
如果端口不通,可检查防火墙等策略
7、启动MongoDB
./mongodb-start.sh(每台数据库都启动起来)
如启动有报错查看日志,看配置文件路径是否有问题,或秘钥文件权限是否错误。
MongoDB复制集群配置
1.登录MongoDB(主库)
./mongo 192.168.2.123:27318 (192.168.2.123 是数据库IP)
use admin
db.auth("idsmanager","IDsManager")验证一下密码
2.在mongo控制台配置集群
config={_id:"rs0",members:[ {_id:0,host:'192.168.2.123:27318',priority:100},{_id:1,host:'192.168.2.124:27318',priority:50},{_id:2,host:'192.168.2.125:27318',priority:10}]}
rs.initiate(config)
出现rs0:PRIMARY>则说明集群配置成功。(稍微等一会会变成下图所示)
创建IDP数据库
创建数据库
use IDP2
添加IDP2数据库用户 注:用户名和密码可以根据用户要求更改!
db.createUser({ user: 'idsmanager', pwd: 'IDsManager', roles: [{ role: 'dbOwner', db: 'IDP2' }] });
db.auth("idsmanager","IDsManager")验证一下密码
退出
exit
rs.slaveOk()#复制集默认从库不允许读写,这个命令是从库可以读写
可以在从库执行这个命令看创建的用户是否同步到从库里面了
3.复制集常用命令
##查看副本集配置
rs.conf()
##查看副本集状态
rs.status()
##查看是否为主
db.isMaster()
##添加仲裁节点
rs.addArb("172.31.9.77:27318")
##删除节点
rs.remove("172.31.9.77:27318")
mongodb恢复备份数据
mongorestore -h 127.0.0.1:27318 -uidsmanager -pIDsManager --authenticationDatabase admin -d IDP2 --drop /data/IDP/mongodb-linux-x86_64-3.4.10/bin/backup/