mongodb主从同步配置实战详细教程(建议收藏)
作者:aa一叶知秋aa
MongoDB主从同步
主从同步是MongoDB最常用的同步方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活,可用于备份,故障恢复,读扩展等。
最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址。采用双机备份后主节点挂掉以后从节点可以接替主机继续服务。所以这种模式比单节点的高可用性要好很多。
主从同步的原理
在主从结构中,主节点的操作记录成为oplog(operation log),oplog存储在一个系统数据库local的集合oplog.$main中,这个集合的每个文档都代表主节点上执行的一个操作。
从服务器会定期从主服务器中获取oplog记录,然后在本机上执行!对于存储oplog的集合,MongoDB采用的是固定集合,也就是说随着操作变化,新的操作会覆盖旧的操作!
主从同步的其他设置项
- --only 从节点指定同步某个数据库,默认是同步全部数据库
- --slavedelay 从节点设置主数据库同步数据的延迟(单位是秒)
- --fastsync 从节点以主数据库的节点快照为节点启动从数据库
- --autoresync 从节点如果不同步则重新同步数据库(即选择当通过热添加了一台从服务器之后,从服务器选择是否更新主服务器之间的数据)
- --oplogSize 主节点设置oplog的大小(主节点操作记录存储到local的oplog中)
配置主从同步的注意点
1 在数据库集群中要明确的知道谁是主服务器,主服务器只有一台
2 从服务器要知道自己的数据源也就是对应的主服务器是谁
3 --master用来确定主服务器,--slave 和 --source 来控制从服务器
环境
系统 IP 配置
CentOS 7.6 192.168.121.164 mongodb主库
CentOS 7.6 192.168.121.133 mongodb从库
主从配置
主库的配置(直接复制执行)
cat > /opt/mongodb_app/mongo_27017/conf/mongodb.conf << EOF systemLog: destination: file logAppend: true path: /opt/mongodb_app/mongo_27017/logs/mongodb.log storage: journal: enabled: true dbPath: /opt/mongodb_app/data/mongo_27017 directoryPerDB: true wiredTiger: engineConfig: cacheSizeGB: 1 directoryForIndexes: true collectionConfig: blockCompressor: zlib indexConfig: prefixCompression: true processManagement: fork: true pidFilePath: /opt/mongodb_app/mongo_27017/pid/mongod.pid net: port: 27017 bindIp: 127.0.0.1,192.168.121.164 EOF
使用--master参数启动主库
/opt/mongodb_app/mongodb/bin/mongod -f /opt/mongodb_app/mongo_27017/conf/mongodb.conf --master
从库的配置(直接复制执行)
cat > /opt/mongodb_app/mongo_27017/conf/mongodb.conf << EOF systemLog: destination: file logAppend: true path: /opt/mongodb_app/mongo_27017/logs/mongodb.log storage: journal: enabled: true dbPath: /opt/mongodb_app/data/mongo_27017 directoryPerDB: true wiredTiger: engineConfig: cacheSizeGB: 1 directoryForIndexes: true collectionConfig: blockCompressor: zlib indexConfig: prefixCompression: true processManagement: fork: true pidFilePath: /opt/mongodb_app/mongo_27017/pid/mongod.pid net: port: 27017 bindIp: 127.0.0.1,192.168.121.133 EOF
使用--slave --source 192.168.121.164:27017参数启动从库
然后进去查看数据情况(那个新建会话是主库)
测试主从情况
db.inventory.insertMany( [ { "item": "journal", "qty": 25, "size": { "h": 14, "w": 21, "uom": "cm" }, "status": "A" }, { "item": "notebook", "qty": 50, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "A" }, { "item": "paper", "qty": 100, "size": { "h": 8.5, "w": 11, "uom": "in" }, "status": "D" }, { "item": "planner", "qty": 75, "size": { "h": 22.85, "w": 30, "uom": "cm" }, "status": "D" }, { "item": "postcard", "qty": 45, "size": { "h": 10, "w": 15.25, "uom": "cm" }, "status": "A" } ]);
两边数据是没有问题的,至此mongodb的主从同步就完成了
我在写这个文章的时候也有参考一些文档,如有侵权请告知
到此这篇关于mongodb主从同步配置的文章就介绍到这了,更多相关mongodb主从同步配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!