【MongoDB】四、MongoDB副本集的部署
- 实验目的
- 实验内容
- 实验步骤
- 实验小结
实验目的
能够通过部署副本集理解副本集机制,从而解决大数据项目中数据丢失的问题
实验内容
环境准备:根据表中的信息完成3台MongoDB服务器的部署(XXX是姓名拼音首字母)。
(环境准备在专栏下单独一篇文章中)
(1)分别在三台服务器XXX01、XXX02和XXX03上以副本集模式启动MongoDB服务。
(2)在服务器XXX01的MongoDB客户端中执行副本集初始化操作。
(3)查看副本集成员状态。
(4)验证副本节点是否成功同步主节点写入的文档内容。
(5)验证副本集是否会实现自动故障转移。
实验步骤
(1)分别在三台服务器zrz01、zrz02和zrz03上以副本集模式启动MongoDB服务。
命令1:
mongod --replSet itcast --dbpath=/opt/servers/mongodb-demo/mongodb/data/db/ --logpath=/opt/servers/mongodb-demo/mongodb/data/log/mongologs.log --port 27017 --bind_ip zrz01 --logappend --fork
命令2:
mongod --replSet itcast --dbpath=/opt/servers/mongodb-demo/mongodb/data/db/ --logpath=/opt/servers/mongodb-demo/mongodb/data/log/mongologs.log --port 27017 --bind_ip zrz02 --logappend --fork
mongo --host zrz02 --port 27017
命令3:
mongod --replSet itcast --dbpath=/opt/servers/mongodb-demo/mongodb/data/db/ --logpath=/opt/servers/mongodb-demo/mongodb/data/log/mongologs.log --port 27017 --bind_ip zrz03 --logappend --fork
mongo --host zrz03 --port 27017
(2)在服务器zrz01的MongoDB客户端中执行副本集初始化操作。
命令:
rs.initiate()
rs.add(“zrz02:27017”)
rs.add(“zrz03:27017”)
(3)查看副本集成员状态。
命令:
rs.status()
(4)验证副本节点是否成功同步主节点写入的文档内容。
命令:
//在服务器zrz01(副本集主节点)
use test
db.user.insert({“name”:”zhangsan”})
db.user.find()
//在服务器zrz02和服务器zrz03(副本集副本节点)
use test
//由于副本节点默认没有读取副本集内容权限,所以要先开启读取权限再执行查看文档命令
rs.slaveOk()
db.user.find()
(5)验证副本集是否会实现自动故障转移。
命令:
ps -ef | grep mongodb
实验小结
通过本次实验,我理解了布置副本集的原因。在实验过程中遇到了很多硬件或者是软件上的问题,请教老师,询问同学,上网查资料,都是解决这些问题的途径。最终将遇到的问题一一解决最终完成实验。
注意事项:
1、有疑问前,知识学习前,先用搜索。
2、熟读写基础知识,学得会不如学得牢。
3、选择交流平台,如QQ群,网站论坛等。
4、尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
我将本次实验的一些注意事项总结如下:
1、关于主机名和IP地址的映射问题解决方案:
vi /etc/hosts 将三台虚拟机的映射全部设置。
2、防火墙问题
关闭防火墙两个操作,关闭firewalld 和 selinux
systemctl disable firewalld -- 永久关闭防火墙
vi /etc/sysconfig/selinux
SELINUX=disabled
设置保存后重启虚拟机即可关闭防火墙。
3、关于部署副本时 Connect refused问题解决方案:
进入mongodb安装目录的bin目录,新增mongodb.conf文件,输入:
bind_ip=0.0.0.0
保存退出。
ps:bind_ip标识允许连接的客户端IP地址,此处设为0.0.0.0,表示允许所有机器连接。也可设置特定机器的IP。