热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux系统下MongoDB数据库的主从配置方法

一Master和Slave的配置方法1.主机器(master)master:172.16.101.251mongodbhome:/usr/local/mongodb/datafile:/usr/local/mongodb/data/logfile:/usr/local/mongodb/logs2.从机器(slave)m
一 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 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
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 size limit (in MB) for op log 指定操作日志的大小
--opIdMem arg size limit (in bytes) for in memory storage of op ids指定存储操作日志的内存大小
Sharding options:
--configsvr declare this is a config db of a cluster 指定shard中的配置服务器
--shardsvr declare this is a shard db of a cluster 指定shard服务器

推荐阅读
  • Abp+MongoDb改造默认的审计日志存储位置
    一、背景在实际项目的开发当中,使用AbpZero自带的审计日志功能写入效率比较低。其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起。所以我们可以重新实现A ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
  • step1.为mongodb添加admin管理员root@12.154.29.163:~#mongoMongoDBshellversionv3.4.2connectingto:mo ... [详细]
  • 一、前言在数据库中,慢查询日志通常是用来进行优化数据库,MySQL中存在慢查询,Mongodb中也是如此。在Mongo中的慢查询属于Mon ... [详细]
  • 今天我们学习,数据库mongodb的使用,最下面有mongodb的下载链接。pipinstallpymongo首先安装pymongo,然后在需要用到的地方importpymongo ... [详细]
  • MongoDB学习:(二)MongoDB简单使用
    MongoDB学习:(二)MongoDB简单使用MongoDB使用:执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面>mongo提示 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
author-avatar
手机用户2702938842_284
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有