设为首页 收藏本站
查看: 1000|回复: 0

[经验分享] Linux下Mongodb的主从配置

[复制链接]

尚未签到

发表于 2018-10-27 13:29:03 | 显示全部楼层 |阅读模式
一  Master和Slave的配置方法  1. 主机器(master)
  master: 172.16.101.251
  mongodb home:  /usr/local/mongodb/
  data file:  /usr/local/mongodb/data/
  log  file:  /usr/local/mongodb/logs
  2.  从机器(slave)
  master: 172.16.101.244
  mongodb home:  /usr/local/mongodb/
  data file:  /usr/local/mongodb/data/
  log  file:  /usr/local/mongodb/logs
  注意:这里,最好是用scp命令把主机器的mongodb的所有目录和文件远程拷贝
  到从机器上去,  之前不要去启动,主机器,否则启动从的时候会报错(在
  日志文件中可以看到错误:mongodb  ERROR: Client::~Client _context should be null but is not; client:replslave)
  这样的话,  只需要把数据文件data目录下的所有文件删除,重新启动即可
  3.  启动master
  cd  /usr/local/mongodb/
  ./bin/mongod  --dbpath=/usr/local/mongodb/data  --logpath=/usr/local/mongodb/logs
  --master  --oplogSize 64 --logappend  --port=27017 --fork
  4.  启动slave
  cd  /usr/local/mongodb/
  ./bin/mongod  --dbpath=/usr/local/mongodb/data  --logpath=/usr/local/mongodb/logs
  --slave  --source 172.16.101.251 --only test --slavedelay 10
  --logappend  --port=27017 --fork
  5.  如果需要互为主从的话可以用如下命令(这个我已经测试成功了,并且在主和从都能插入,无论在哪边
  插入, 在另外一边都能查看到新的记录)
  5.1. 启动master
  cd  /usr/local/mongodb/
  ./bin/mongod  --dbpath=/usr/local/mongodb/data  --logpath=/usr/local/mongodb/logs
  --master  --slave --source  172.16.101.244
  --logappend   --port=27017 --fork
  5.2.  启动slave
  cd  /usr/local/server/mongodb/
  ./bin/mongod  --dbpath=/usr/local/mongodb/data  --logpath=/usr/local/mongodb/logs
  --master  --slave --source 172.16.101.251 --only test --slavedelay 10
  --logappend  --port=27017 --fork
  6.  测试
  在主机器上添加数据
  cd  /usr/local/mongodb/
  ./bin/mongo
  db.foo.save({"id":123456,"name":'liuyuanshijie'});
  成功的话可以在从服务器看到数据:
  cd  /usr/local/mongodb/
  ./bin/mongo
  db.foo.find({"id":123})
  二  Replica Pairs的配置方法
  1. 主机器(master)
  master: 172.16.101.251
  mongodb home:  /usr/local/mongodb/
  data file:  /usr/local/mongodb/data/
  log  file:  /usr/local/mongodb/logs
  2.  从机器(slave)
  master: 172.16.101.244
  mongodb home:  /usr/local/mongodb/
  data file:  /usr/local/mongodb/data/
  log  file:  /usr/local/mongodb/logs
  注意:这里,最好是用scp命令把主机器的mongodb的所有目录和文件远程拷贝
  到从机器上去,  之前不要去启动,主机器,否则启动从的时候会报错(在
  日志文件中可以看到错误:mongodb  ERROR: Client::~Client _context should be null but is not; client:replslave)
  这样的话,  只需要把数据文件data目录下的所有文件删除,重新启动即可
  3.  启动master
  cd  /usr/local/mongodb/
  ./bin/mongod  --dbpath=/usr/local/mongodb/data  --logpath=/usr/local/mongodb/logs\
  --pairwith  172.16.101.244 --arbiter  --logappend  --port=27017  --fork
  4.  启动slave
  cd  /usr/local/mongodb/
  ./bin/mongod  --dbpath=/usr/local/mongodb/data  --logpath=/usr/local/mongodb/logs\
  --pairwith  172.16.101.251 --arbiter  --logappend  --port=27017  --fork
  注意:--arbiter  这个参数如果是在同一个路由器下或者同一个主机下的虚拟主机可以不要
  5.  查看状态, 在251上
  $ ./mongo
  >  db.$cmd.findOne({ismaster:1});
  {  "ismaster" : 0.0 , "remote" : "192.168.58.1:30001" , "ok" : 1.0  }
  6.  设置权限 在251上
  $ ./mongo  172.101.251/admin
  > use local
  > db.addUser('repl',  );
  按ctrl+c退出,然后登陆从服务器
  $  ./mongo 172.101.244/admin
  > use  local
  > db.addUser('repl',  );
  两次的账户和密码必需一致
  7.  查看状态 在251上
  >  db.$cmd.findOne({replacepeer:1});
  {
  "info" : "adjust local.sources hostname; db restart now required" ,
  "ok" : 1.0
  }
  8.  重启mongodb
  db.shutdownServer();
  9.  设置从,可以在两个分别都设置,但最好在从上
  db.getMongo().setSlaveOk()
  10.  测试, 在主上插入数据,然后可以在从上用db.find()查看结果
  注意:  这种方式的配置,为互为主从, mongodb自己判断谁是主,谁是从,而且我测试的时候
  只能在主一端插入和修改文档,在从一端的话,报错no master
  这个问题还有待研究, 知道答案的童鞋可以告诉我们啊,谢谢!
  三  参数解释
  参数解释: --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>
  --nssize arg (=16)         .ns file>  --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
  Replication  options:
  --master              master  mode 主复制模式
  --slave               slave  mode 从复制模式
  --source arg          when  slave: specify master as  当为从时,指定主的地址和端口
  --only arg             when slave: specify a single database to replicate 当为从时,指定需要从主复制的单一库
  --pairwith arg         address of server to pair  with
  --arbiter arg         address of  arbiter server  仲裁服务器,在主主中和pair中用到
  --autoresync           automatically resync if slave data is stale 自动同步从的数据

  --oplogSize arg      >
  --opIdMem arg        >  Sharding  options:
  --configsvr           declare  this is a config db of a cluster 指定shard中的配置服务器
  --shardsvr             declare this is a shard db of a cluster 指定shard服务器


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627149-1-1.html 上篇帖子: 解决:mongodb的rs.add()报错can't use localhost in repl set member names 下篇帖子: MongoDB及主从配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表