`mongodb简介`
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
`主从复制原理`
主节点会记录写有关的操作,读操作不记录。这些操作记录在local数据库中的oplog.$admin这个集合,这个是一个固定大小的集合,可以修改oplogSize大小,单位MB,一般为磁盘剩余空间的5%。当这个集合空间占满之后,新进来的日志会覆盖最旧的日志。这个值的设定必须注意,否则会出现主从未同步日志就已经被覆盖的风险,导致主从数据不一致。local数据库会有oplog.$admin和slave两个集合。slave记录从节点信息。
从节点会定时去连接主节点,获取主节点的操作日志从而执行主节点一样的操作,从而达到数据同步。从节点的local数据库会有source、me两个集合。source记录主节点信息,me记录从节点标识。
1、准备镜像,启动主从容器
2、进入容器
docker exec -it mongodb_master_1 bash
docker exec -it mongodb_slave_1 bash
3、在主从容器中安装mongodb
apt update
apt upgrade
apt install mongodb -y
4、修改配置文件
11 bind_ip = 0.0.0.0
12 port = 27017
说明:主从配置一样即可
5、配置主从
#master配置文件修改
vim /etc/mongodb.conf
81 master = true
#slave配置文件修改
vim /etc/mongodb.conf
76 slave = true
77 source = 172.18.62.23:27017
6、启动服务
/etc/init.d/mongodb start
7、主从验证
#登录数据库
mongo
主从数据验证
说明:从以上可以看到,主库的数据同步到从库,而从库没有写的权限。