返回顶部
首页 > 资讯 > 数据库 >mongodb主从复制安装文档
  • 812
分享到

mongodb主从复制安装文档

2024-04-02 19:04:59 812人浏览 泡泡鱼
摘要

环境说明IPRole10.240.216.151master10.240.216.152slave(standby master)10.240.216.153slavemongoDB下载与安装在10.240

  • 环境说明

IPRole
10.240.216.151master
10.240.216.152slave(standby master)
10.240.216.153slave


  • mongoDB下载与安装

  • 在10.240.216.151(主库)上

# wget Http://downloads.monGodb.org/linux/mongodb-linux-x86_64-2.0.4.tgz

(如果不能正常下载,可以直接从浏览器下载下来,然后传到服务器上)

# tar -zxf mongodb-linux-x86_64-2.0.4.tgz-C /usr/local/

# mkdir -p /data/{db/geomaster/,log}

# touch /data/log/geomaster.log

# cd /usr/local/

# mv mongodb-linux-x86_64-2.0.4 mongodb

# /usr/local/mongodb/bin/mongod --fork--port 4000 --master --dbpath /data/db/geomaster/ --logpath /data/log/geomaster.log--logappend   启动数据库

# kill -2 `ps -ef |grep mongod |grep -vgrep |awk '{print $2}'`    关闭数据库

  • 在10.240.216.152 和 10.240.216.153(备库)上

# wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-2.0.4.tgz

(如果不能正常下载,可以直接从浏览器下载下来,然后传到服务器上)

# tar -zxf mongodb-linux-x86_64-2.0.4.tgz-C /usr/local/

# mkdir -p /data/{db/geoslave/,log}

# touch /data/log/geosalve.log

# cd /usr/local/

# mv mongodb-linux-x86_64-2.0.4 mongodb

# /usr/local/mongodb/bin/mongod --fork--port 4000 --slave --source 10.240.216.151:4000 --dbpath /data/db/geoslave/--logpath /data/log/geosalve.log --logappend --nojournal      启动数据库

# kill -2 `ps -ef |grep mongod |grep -vgrep |awk '{print $2}'`    关闭数据库

 

  • 验证

  • 在主库上

# /usr/local/mongodb/bin/mongo127.0.0.1:4000

> db.runCommand ( {"isMaster": 1 } )

{ "ismaster" : true,"maxBsonObjectSize" : 16777216, "ok" : 1 }

  • 在备库上

# /usr/local/mongodb/bin/mongo127.0.0.1:4000

> db.runCommand ( {"isMaster": 1 } )

{

        "ismaster" : 0,

        "info" : "dead: data toostale halted replication",

        "maxBsonObjectSize" :16777216,

        "ok" : 1

}

> use local

switched to db local

> db.sources.find()

{ "_id" :ObjectId("55ebfa53ecf735439d6bafeb"), "host" :"10.240.216.151:4000", "source" : "main","syncedTo" : { "t" : 1441528400000, "i" : 1 } }

 

  • 在主库上创建库和表以及添加一条数据

> use mydb

switched to db mydb

> db

mydb

>db.mydb.user.insert({"username":"zdh"});

> db.mydb.user.find();

{ "_id" :ObjectId("55ebfc2d92e237c3cb30ef9a"), "username" :"zdh" }

> show dbs;

local   6.2001953125GB

mydb    0.203125GB

  • 在从库上检查数据同步情况

> show dbs;

local   0.203125GB

mydb    0.203125GB

> use mydb

switched to db mydb

> db.mydb.user.find()

{"_id" : ObjectId("55ebfc2d92e237c3cb30ef9a"),"username" : "zdh" }


以上输出结果表示OK

 

对于上面这种master-slave结构有一个很重要的缺陷就是当主库挂掉后,从库要晋升为主库时,需要手动做大量的工作才行,具体步骤有:

1. 停掉其中一台slave,然后重新以master的身份启动(晋升10.240.216.152为主库)

# kill -2 `ps -ef |grep mongod |grep -vgrep |awk '{print $2}'`

# /usr/local/mongodb/bin/mongod --fork--port 4000 --master --dbpath /data/db/geoslave/ --logpath/data/log/geosalve.log –logappend

2. 如果不能找到研发修改代码指向新的主库IP,那么可以将原主库关机并将其的IP切到新主库服务器上(切IP场景,这种情况下slave端不需要重启mongodb进程,此时原主库将不能启动,这是一个问题)

# ifconfig bond0:1 10.240.216.151 netmask255.255.255.0 up

# arping -I bond0 -c 3 -s 10.240.216.15110.240.216.254

3. 将从库10.240.216.153指向新的主库,需要先停掉mongodb,然后source指向新主库启动(在不切IP的情况下操作)

# kill -2 `ps -ef |grep mongod |grep -vgrep |awk '{print $2}'`

# rm -f /data/db/geoslave/mongod.lock /data/db/geoslave/local.*

# /usr/local/mongodb/bin/mongod --fork--port 4000 --slave --source 10.240.216.152:4000 --dbpath /data/db/geoslave/--logpath /data/log/geosalve.log --logappend –nojournal

# /usr/local/mongodb/bin/mongo127.0.0.1:4000

> use local

switched to db local

> db.sources.find()

{ "_id" :ObjectId("55ec04dadfd5d65f2f7fe404"), "host" :"10.240.216.152:4000", "source" : "main","syncedTo" : { "t" : 1441531234000, "i" : 1 } }

 

  • 针对以上操作复杂的过程,我们作如下优化

  • 在主库10.240.216.151上执行

# /usr/local/mongodb/bin/mongod--fork --port 4000 --dbpath /data/db/geomaster/ --logpath/data/log/geomaster.log --logappend --master

  • 在从库(备主)10.240.216.152上执行

# /usr/local/mongodb/bin/mongod--fork --port 4000 --master --slave --dbpath /data/db/geoslave/ --logpath/data/log/geosalve.log –logappend

# /usr/local/mongodb/bin/mongo127.0.0.1:4000

> use local

switched to db local

> db.sources.find()

>db.sources.insert({"host":"10.240.216.151:4000"});

> db.sources.find()

{ "_id" :ObjectId("55ec120751fd14c6b2f23a18"), "host" :"10.240.216.151:4000" }

> db.sources.find()       隔30秒左右

{ "_id" :ObjectId("55ec120751fd14c6b2f23a18"), "host" :"10.240.216.151:4000", "source" : "main", "syncedTo": { "t" : 1441534596000, "i" : 1 } }

  • 在从库10.240.216.153上执行

#/usr/local/mongodb/bin/mongod --fork --port 4000 --slave  --dbpath /data/db/geomaster/ --logpath/data/log/geosalve.log --logappend –nojournal

# /usr/local/mongodb/bin/mongo127.0.0.1:4000

> use local

switched to db local

> db.sources.find()

>db.sources.insert({"host":"10.240.216.151:4000"})

>db.sources.insert({"host":"10.240.216.152:4000"})

> db.sources.find()

{ "_id" :ObjectId("55ec127a1924006f4e8b2e97"), "host" : "10.240.216.151:4000","source" : "main", "syncedTo" : { "t" :1441534586000, "i" : 1 } }

{ "_id" :ObjectId("55ec127e1924006f4e8b2e98"), "host" :"10.240.216.152:4000", "source" : "main","syncedTo" : { "t" : 1441534593000, "i" : 1 } }

 

以上配置完成。就实现了当主库10.240.216.151挂掉后,备用主库10.240.216.152可以直接提供对外的服务,无需重启mongodb进程,并且从库无需作任何更改。

 

  • 验证

  • 在主库10.240.216.151上

> show dbs

local   6.2001953125GB

mydb    0.203125GB

> use mydb

switched to db mydb

>db.mydb.user.insert({"username":"zhongguo","age":"26"})

> db.mydb.user.find()

{ "_id" :ObjectId("55ec12e4bab480b5485dd72e"), "username" :"zhongguo", "age" : "26" }

>db.mydb.user.insert({"username":"zhongguo2","age":"30"})

 

  • 在从库(备主)10.240.216.152上

> use mydb

switched to db mydb

> db.mydb.user.find()

{ "_id" :ObjectId("55ec12e4bab480b5485dd72e"), "username" :"zhongguo", "age" : "26" }

> db.mydb.user.insert({"username":"finished","time":"2015-09-06"})

> db.mydb.user.find()

{ "_id" : ObjectId("55ec12e4bab480b5485dd72e"),"username" : "zhongguo", "age" : "26" }

{ "_id" : ObjectId("55ec133e51fd14c6b2f23a19"),"username" : "finished", "time" :"2015-09-06" }

> db.mydb.user.find()

{ "_id" :ObjectId("55ec12e4bab480b5485dd72e"), "username" :"zhongguo", "age" : "26" }

{ "_id" :ObjectId("55ec133e51fd14c6b2f23a19"), "username" :"finished", "time" : "2015-09-06" }

{ "_id" :ObjectId("55ec136abab480b5485dd72f"), "username" :"zhongguo2", "age" : "30" }

 

  • 在从库10.240.216.153上

> use mydb

switched to db mydb

> db.mydb.user.find()

{ "_id" :ObjectId("55ec12e4bab480b5485dd72e"), "username" :"zhongguo", "age" : "26" }

> db.mydb.user.find()

{ "_id" : ObjectId("55ec12e4bab480b5485dd72e"),"username" : "zhongguo", "age" : "26" }

{ "_id" : ObjectId("55ec133e51fd14c6b2f23a19"),"username" : "finished", "time" :"2015-09-06" }

> db.mydb.user.find()

{ "_id" : ObjectId("55ec12e4bab480b5485dd72e"),"username" : "zhongguo", "age" : "26" }

{ "_id" :ObjectId("55ec133e51fd14c6b2f23a19"), "username" :"finished", "time" : "2015-09-06" }

{ "_id" :ObjectId("55ec136abab480b5485dd72f"), "username" :"zhongguo2", "age" : "30" }

上面的结果说明,备用从库是即可生效的,需要保证的是我们的写是确保从主库上写入的。


您可能感兴趣的文档:

--结束END--

本文标题: mongodb主从复制安装文档

本文链接: https://lsjlt.com/news/42425.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mongodb主从复制安装文档
    环境说明IPRole10.240.216.151master10.240.216.152slave(standby master)10.240.216.153slavemongodb下载与安装在10.240...
    99+
    2024-04-02
  • mongodb主从复制
    服务器架构: 角色 ip地址 端口 主服务器 192.168.8.81 27017 从服务器 192.1...
    99+
    2024-04-02
  • Mysql主从复制之安装
    此次搭的环境是Redhat7+Mysql8.0(搭建单机步骤翻前面的博文) 主从配置的简要步骤 Master 上的配置 安装数据库; 修改数据库配置文件, 指明 server_id, 开启二进制日志(log-bin); 启动数据库, 查...
    99+
    2016-11-15
    Mysql主从复制之安装
  • Mysql5.7主从复制如何配置文档
    下面一起来了解下Mysql5.7主从复制如何配置文档,相信大家看完肯定会受益匪浅,文字在精不在多,希望Mysql5.7主从复制如何配置文档这篇短内容是你想要的。安装的数据是mysql5.7社区版本yum安装...
    99+
    2024-04-02
  • mongodb主从复制配置
    主从复制是mongodb最常用的复制方式,这种方式很灵活.可用于备份,故障恢复,读扩展等.最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址. 我们用两种方式来实现主从.这里...
    99+
    2024-04-02
  • MongoDB 主从复制集搭建
    一、Mongodb复制集简介什么是复制集?复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复。...
    99+
    2024-04-02
  • Linux二进制包安装Mysql8主从复制
    1、下载安装包wget  https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.18-el7-x86_64.tar.gz2、删除系统自带rpm -qa |...
    99+
    2024-04-02
  • mongoDB中如何搭建主从复制
    mongoDB中如何搭建主从复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。详解mongoDB主从复制搭建详细过程主 192.16...
    99+
    2024-04-02
  • MongoDB中怎么搭建主从复制
    MongoDB中怎么搭建主从复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。mongodb的集群搭建方式主要有三种,主从模式,副本集模式,s...
    99+
    2024-04-02
  • mongodb中怎么配置主从复制
    本篇文章为大家展示了mongodb中怎么配置主从复制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。mongodb配置主从复制比mysql简单多了1、安装,用配置文件...
    99+
    2024-04-02
  • win10上安装mysql8 并配置主从复制
    最近在学习springboot,想整理一篇博客,关于springboot整合mybatis并配置主从数据库的,但是电脑win10系统上并没有配置mysql主从数据库。所以花了几天的时间终于整好了。在这里记录一下。 首先是关于在wi...
    99+
    2017-01-08
    win10上安装mysql8 并配置主从复制
  • mysql主从复制的安装流程操作
    本篇内容主要讲解“mysql主从复制的安装流程操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql主从复制的安装流程操作”吧!Mysql主从复制一、一主...
    99+
    2024-04-02
  • mongodb的安装以及主从同步
    1、检查是否有yum源yum info mongo-10gen 2、添加yum源vi /etc/yum.repos.d/mongodb.repo     输...
    99+
    2024-04-02
  • mongodb主从复制的原理是什么
    MongoDB的主从复制是一种数据复制机制,它允许将数据从一个主节点复制到一个或多个从节点。主从复制的原理如下: 主节点(Prim...
    99+
    2024-04-09
    mongodb
  • MongoDB 安装、主从配置、以及监控
    1、安装#添加安装源[mongodb] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/...
    99+
    2024-04-02
  • mongodb主从复制及副本集的部署
    一.mongodb配置参数介绍:[root@host11 tmp]# cat  /etc/mongod.conf #以守护进程的方式运行fork=true#设置db的路径dbpath=/...
    99+
    2024-04-02
  • mysql主从复制及读写分离(附安装包)
    实验目的:在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般需要通过主从复制(master-slave)的...
    99+
    2024-04-02
  • 全面解读MySQL主从复制,从原理到安装配置
    为什么需要主从复制? 在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从...
    99+
    2022-05-14
    MySQL 主从复制 MySQL 主从复制原理 MySQL 主从复制配置
  • 部署MongoDB复制集(主从复制、读写分离、高可用)
    MongoDB 复制集 复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余备份并提高了数据的可用性,通过复制集可以对硬件故障和中断的服务进行恢复。 Mon...
    99+
    2024-04-02
  • mysql主从复制--一主一从
    1、启动实例3306和33072、检查主库配置[root@client 3306]# egrep  "log-bin|server|sock"  my.cnfsocket &n...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作