文档章节

Mongodb 的主从复制

胡子叭槎
 胡子叭槎
发布于 2017/04/17 22:49
字数 1254
阅读 68
收藏 1

zhzhuyi zhu   先把主库和从库都安装好mongodb 并启动一次再关闭。注意:安装好mongodb软件后至少要启动关闭一次,否则里面的local库没有初始化最后是无法建立主从关系的。

  1.     主库指定路径,指定身份启动
    [root@dghost mongodb]# ll /|grep data
    drwxr-xr-x   3 root   root      4096 Apr 17 20:46 data
    
    [root@dghost mongodb]# mongod --dbpath /data/mongodb --master --fork --syslog
    about to fork child process, waiting until server is ready for connections.
    forked process: 2113
    child process started successfully, parent exiting

    --dbpath 指定存放路径,--master 指定主库身份 --fork 指定后台运行 -- syslog 指定日志存放在操作系统日志中

    [root@dghost mongodb]# netstat -anlp|grep mongod
    tcp        0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN      2113/mongod         
    unix  2      [ ACC ]     STREAM     LISTENING     13886  2113/mongod         /tmp/mongodb-27017.sock
    unix  2      [ ]         DGRAM                    13883  2113/mongod 

    上面看到可以通过任何IP的27017的身份进行复制数据

    [root@dghost mongodb]# mongo
    MongoDB shell version: 2.6.4
    connecting to: test
    > rs.isMaster()
    {
    	"ismaster" : true,
    	"maxBsonObjectSize" : 16777216,
    	"maxMessageSizeBytes" : 48000000,
    	"maxWriteBatchSize" : 1000,
    	"localTime" : ISODate("2017-04-17T13:01:40.728Z"),
    	"maxWireVersion" : 2,
    	"minWireVersion" : 0,
    	"ok" : 1
    }
    # 能看出显示ismaster true 是主库
    > rs.printReplicationInfo()
    configured oplog size:   990MB
    log length start to end: 1024secs (0.28hrs)
    oplog first event time:  Mon Apr 17 2017 20:47:36 GMT+0800 (CST)
    oplog last event time:   Mon Apr 17 2017 21:04:40 GMT+0800 (CST)
    now:                     Mon Apr 17 2017 21:04:41 GMT+0800 (CST)
    

     

  2. 备库指定路径,指定身份启动

    [root@dgstandby mongodb]# mongod --dbpath /data/mongodb --slave --source 192.168.0.113:27017 --fork --syslog
    about to fork child process, waiting until server is ready for connections.
    forked process: 2157
    child process started successfully, parent exiting
    > rs.isMaster()
    {
    	"ismaster" : false,
    	"maxBsonObjectSize" : 16777216,
    	"maxMessageSizeBytes" : 48000000,
    	"maxWriteBatchSize" : 1000,
    	"localTime" : ISODate("2017-04-17T13:21:57.420Z"),
    	"maxWireVersion" : 2,
    	"minWireVersion" : 0,
    	"ok" : 1
    }
    
    > rs.printReplicationInfo()
    this is a slave, printing slave replication info.
    source: 192.168.0.113:27017
    	syncedTo: Mon Apr 17 2017 21:01:30 GMT+0800 (CST)
    	1273 secs (0.35 hrs) behind the primary 
    # 可以看到source 链接到192.168.0.113 ,所以它是从库,主库是192.168.0.113
  3. 主从验证

    > use test
    switched to db test
    > db.baidu.com.insert({net:"www.baidu.com"})
    WriteResult({ "nInserted" : 1 })
    # 主库插入记录
    > db.baidu.com.find()
    { "_id" : ObjectId("58f4be1ce0d200494ec33fe1"), "net" : "www.baidu.com" }
    # 从库已经同步过来了。
  4. 安全设置
    由于只要知道IP和端口就可以复制,很不安全。则可以在启动命令中假如keyFile 就可以了,只要keyFile 一致就OK
    主库和备库先停掉,自定一个keyFile 然后在主和从库启动命令中加上keyFile /keyfile_path 就可以了
    注意:自定义的keyFile 权限一定要设置为600
     

    [root@dghost data]# mongod --dbpath /data/mongodb --master --fork --syslog --keyFile /etc/monkey 
    about to fork child process, waiting until server is ready for connections.
    forked process: 2272
    child process started successfully, parent exiting
    
    [root@dgstandby mongodb]# mongod --dbpath /data/mongodb --slave --source 192.168.0.113:27017 --fork --syslog --keyFile /etc/monkey 
    about to fork child process, waiting until server is ready for connections.
    forked process: 2238
    child process started successfully, parent exiting
    

    主库和从库加上同样的keyFile就安全了。

  5. 主从切换
    当前我们建立了,主从从模式。一个主库两个备库。如果主库宕机,可以把一台备库切换为主库,另一台备库修改启动命令中的主库IP就可以了
     

    > db.shutdownServer()
    2017-04-17T22:18:49.941+0800 DBClientCursor::init call() failed
    server should be down...
    2017-04-17T22:18:49.948+0800 trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
    2017-04-17T22:18:49.949+0800 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
    2017-04-17T22:18:49.950+0800 reconnect 127.0.0.1:27017 (127.0.0.1) failed failed couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
    > exit
    bye
    [root@dghost data]# /etc/init.d/mongod status
    mongod is stopped
    #主库关闭
    > use admin
    switched to db admin
    > db.shutdownServer()
    2017-04-17T22:39:09.961+0800 DBClientCursor::init call() failed
    server should be down...
    2017-04-17T22:39:09.971+0800 trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
    2017-04-17T22:39:09.974+0800 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
    2017-04-17T22:39:09.974+0800 reconnect 127.0.0.1:27017 (127.0.0.1) failed failed couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
    > exit
    bye
    [root@dgstandby mongodb]# /etc/init.d/mongod status
    mongod is stopped
    # 备库1 关闭
    [root@other mongodb]# /etc/init.d/mongod status
    mongod is stopped
    # 备库2 关闭
    --------------------------------------------------------------
    [root@dgstandby mongodb]# mongod --dbpath /data/mongodb --master --fork --syslog --keyFile /etc/monkey 
    about to fork child process, waiting until server is ready for connections.
    forked process: 2318
    child process started successfully, parent exiting
    > rs.isMaster()
    {
    	"ismaster" : true,
    	"maxBsonObjectSize" : 16777216,
    	"maxMessageSizeBytes" : 48000000,
    	"maxWriteBatchSize" : 1000,
    	"localTime" : ISODate("2017-04-17T14:42:44.942Z"),
    	"maxWireVersion" : 2,
    	"minWireVersion" : 0,
    	
    # 备库1 启动命令切换成主库成功
    [root@other mongodb]# mongod --dbpath /data/mongodb --slave --source 192.168.0.112:27017 --fork --syslog --keyFile /etc/monkey 
    about to fork child process, waiting until server is ready for connections.
    forked process: 2522
    child process started successfully, parent exiting
    #下面备库2 启动成备库1的从库就好了

    注意注意注意:主从切换的时候,有可能起不起来,因为在上一次启动的时候local中初始化了主机的身份信息,再重新修改身份(主从切换)的时候就启动不起来,查看日志后发现有重要提示:Apr 17 22:43:19 other mongod.27017[2522]: [replslave] repl: --source 192.168.0.112:27017 != 192.168.0.113:27017 from local.sources collection
    如果出现这样的提示说明启动参数中指定的主机和初始化的有差异,无法启动。
    解决办法:在指定的dbpath 中删除local* 重新做主被切换就可以了。

© 著作权归作者所有

胡子叭槎
粉丝 22
博文 140
码字总数 147885
作品 0
成都
数据库管理员
私信 提问
mongodb 主从配置,带auth验证模式

一 简介说明 主从复制是mongodb最常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活.可用于备份,故障恢复,读扩展等. 最基本的设置方式就是建立一个主节点和一个或多个从...

KerryLi
2018/06/04
285
0
mongodb的安装及主从配置

一、mongodb安装 1.下载mongodblinux版本 https://www.mongodb.com/download-center#community 2.解压 tar xvf mongodb-linux-x86_64-2.0.7.tgz mkdir /usr/local/mongodb mv mongodb-linux......

Stereor
2018/06/29
0
0
mongodb的安装及主从复制

mongodb的安装及主从复制 转载http://linuxme.blog.51cto.com/1850814/965184 一、mongodb安装 1.下载mongodblinux版本(注意32位和64位的区别) wget http://downloads.mongodb.org/linux/......

独一无二zz
2018/06/29
0
0
mongodb配置主从(官方已经不建议使用)

官方网站: http://www.mongodb.org/ 关于mongodb的主从,官方已经不建议使用,目前建议使用副本集; 但由于公司现有环境的原因,如果改用副本集,则需要修改数据,受限于现实的种种原因,只...

邱野
2018/06/28
0
0
关于 MongoDB 你需要知道的几件事

Henrique Lobo Weissmann是一位来自于巴西的软件开发者,他是itexto公司的联合创始人,这是一家咨询公司。近日,Henrique在博客上撰文谈到了关于MongoDB的一些内容,其中有些观点值得我们,特...

abing_hu
2013/11/06
8.8K
12

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
40分钟前
51
1
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
9
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部