一、 主从部署模型图
二、 主数据的好处
- 数据备份 只能从master节点复制内容不能从slave节点复制因为slave节点不保存oplog操作日记
- 数据恢复
- 读写分离
三、 介绍
MongoDB的master-salva复制其实很简单
在运行主master的服务器上开启mongod进程时,加入参数--master即可。
cd mongodb/bin/
mongod -dbpath ~/dbs/master -port 27037 -master
在运行从slave的服务器上开启mongod进程时,加入参数--slave 和 --source 指定主即可。
cd mongodb/bin/
mongod -dbpath ~/dbs/slave -port 27037 -slave -source 192.168.0.188:27037
这样,在master数据库更新时,数据被复制到slave数据库中。
一、 构建方法介绍
构建方法有两种:
一是:分别在两台机子上声明master-slave从身份;
二是:先声明slave服务器,后期再添加master服务器
二、 方法一
-
构造一个master和一个slave
x1 192.168.0.188 master x2 192.168.0.189 slave
-
创建存放数据文件
x1 上运行 mkdir -p ~/dbs/master
x2 上运行 mkdir -p ~/dbs/slave
-
部署
-
部署master
cd mongodb/bin/ mongod -dbpath ~/dbs/master -port 27037 -master
-
部署slave
cd mongodb/bin/ mongod -dbpath ~/dbs/slave -port 27037 -slave -source 192.168.0.188:27037
-
-
验证
-
master服务器里插入数据
-
进入js编辑环境进行数据插入:
cd mongod/bin/ ./mongod db.a.save({line:"hello word"})
-
-
slave服务器是否能同步
-
进入js编辑环境进行数据查询:
cd mongod/bin/ ./mongod db.a.find({})
-
-
-
成功结束
三、 方法二
-
构造一个master和一个slave
x1 192.168.0.188 master x3 192.168.0.190 slave
-
创建存放数据文件
x1 上运行 mkdir /dbs/master
x3 上运行 mkdir /dbs/slave
-
部署
-
部署master
cd mongodb/bin/ ./mongod --master --dbpath /data/master --port 27017
-
部署slave
cd mongodb/bin/ ./mongod --slave --dbpath /data/slave --port 27017
-
-
slave插入数据源
cd mongod/bin/ ./mongod use local db.sources.insert({“host”:"192.168.0.188:27017"}) #PS:移除数据源 db.sources.remove({“host”:"192.168.0.188:27017"})
-
验证
-
master服务器里插入数据
-
进入js编辑环境进行数据插入:
cd mongod/bin/ ./mongod db.a.save({line:"happy new year"})
-
-
slave服务器是否能同步
-
进入js编辑环境进行数据查询:
cd mongod/bin/ ./mongod db.a.find({})
-
-
-
成功结束
四、 方法三(配置文件):
-
构造一个master和一个slave
x1 192.168.0.188 master x2 192.168.0.189 slave
-
创建存放数据文件
x1 上运行 mkdir /mongodb/data/db/master mkdir /mongodb/log
x2 上运行 mkdir /mongodb/data/db/slave mkdir /mongodb/log
-
创建编辑配置文件
#主配置/mongodb/conf/master.conf port = 27017 dbpath = /mongodb/data/db/master logpath = /mongodb/log/master.log logappend = true journal = true fork = true master = true rest=true nohttpinterface=false #从配置#/mongodb/conf/slave.conf port = 27017 dbpath = /mongodb/data/db/slave logpath = /mongodb/log/slave.log logappend = true journal = true fork = true slave = true # 指定该mongodb为slave模式 source = 192.168.0.188:27017 # 指定master服务器 rest=true nohttpinterface=false slavedelay=10 #延迟复制,单位为秒 autoresync=true #当发现从服务器的数据不是最新时,向主服务器请求同步数据
-
启动主从
#先启动主 cd mongodb/bin/ mongod -f /mongodb/conf/master.conf #启动从 cd mongodb/bin/ mongod -f /mongodb/conf/slave.conf
-
验证同上
四、 启动服务器的参数说明:
--dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 命令行参数(与--master一同使用)配置用于存储给从节点可用的更新信息占用的磁盘空间(M为单位),如果不指定这个参数,默认大小为当前可用磁盘空间的5%(64位机器最小值为1G,32位机器为50M)。
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)
-h [ --help ] show this usage information
--version show version information
-f [ --config ] arg configuration file specifying additional options
--port arg specify port number
--bind_ip arg local ip address to bind listener - all local ips
bound by default
-v [ --verbose ] be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
--dbpath arg (=/data/db/) directory for datafiles 指定数据存放目录
--quiet quieter output 静默模式
--logpath arg file to send all output to instead of stdout 指定日志存放目录
--logappend appnd to logpath instead of over-writing 指定日志是以追加还是以覆盖的方式写入日志文件
--fork fork server process 以创建子进程的方式运行
--cpu periodically show cpu and iowait utilization 周期性的显示cpu和io的使用情况
--noauth run without security 无认证模式运行
--auth run with security 认证模式运行
--objcheck inspect client data for validity on receipt 检查客户端输入数据的有效性检查
--quota enable db quota management 开始数据库配额的管理
--quotaFiles arg number of files allower per db, requires --quota 规定每个数据库允许的文件数
--appsrvpath arg root directory for the babble app server
--nocursors diagnostic/debugging option 调试诊断选项
--nohints ignore query hints 忽略查询命中率
--nohttpinterface disable http interface 关闭http接口,默认是28017
--noscripting disable scripting engine 关闭脚本引擎
--noprealloc disable data file preallocation 关闭数据库文件大小预分配
--smallfiles use a smaller default file size 使用较小的默认文件大小
--nssize arg (=16) .ns file size (in MB) for new databases 新数据库ns文件的默认大小
--diaglog arg 0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是只读,只写,还是读写都行,还是主要写+部分的读模式
--sysinfo print some diagnostic system information 打印系统诊断信息
--upgrade upgrade db if needed 如果需要就更新数据库
--repair run repair on all dbs 修复所有的数据库
--notablescan do not allow table scans 不运行表扫描
--syncdelay arg (=60) seconds between disk syncs (0 for never) 系统同步刷新磁盘的时间,默认是60s