• mongodb 主从复制


    1.主从复制

       主从复制是MongoDB最常用的复制方式。可用于备份、故障恢复、读扩展等。

       最基本的设置方式就是建立一个主节点和一个或者多个从节点,每个从节点要知道主节点的地址 。

    2.选项

       --only:在从节点上指定只复制特定某个数据库(默认复制所有数据库)。

       --slavedelay:用在从节点,当应用主节点的操作时增加延时(单位为秒)。

       --fastsync:以从节点的数据快照为基础启动从节点。(简单来说以前是主节点的备份,现在从新启动,就会在原来数据的基础上启动,不会重新同步一次主节点的所有数据)。

       --autoresync:如果从节点与主节点不同步了,则自动重新同步。

       --oplogSize:主节点oplog的大小(单位是MB)。

          注:主节点的操作记录称为oplog。oplog存储在一个特殊的数据库中,叫做local。oplog只记录改变数据库状态的操作,如查询操作就不会存储。

    3.命令

      1.设置主节点(ip:10.0.0.1)

    Sql代码  收藏代码
    1. hww@ubuntu:~$ mkdir -p ~/dbs/master  
    2. hww@ubuntu:~$ mongod -dbpath ~/dbs/master -prot 27037 -master  

     

      2.设置从节点(ip:10.0.0.2)

    Java代码  收藏代码
    1. hww@ubuntu:~$ mkdir -p ~/dbs/slave  
    2. hww@ubuntu:~$ mongod -dbpath ~/dbs/slave -port 27037 -slave -source 10.0.0.1:27037  

     

      3.通过向sources集合添加主节点信息(ip:10.0.0.3)

    Java代码  收藏代码
    1. hww@ubuntu:~$ mkdir -p ~/dbs/slave  
    2. hww@ubuntu:~$ mongod -dbpath ~/dbs/slave -port 27037 -slave   

        向sources集合添加主节点信息:

    Java代码  收藏代码
    1. > use local  
    2. switched to db local  
    3. > db.sources.insert({"host":"10.0.0.1:27037"})  

        查询文档是否插入成功:

    Java代码  收藏代码
    1. > db.sources.find()  
    2. {    
    3.         "_id" : ObjectId("4edd829376484aaedee08dae"),   
    4.         "host" : "10.0.0.1:27037""source" : "main"   
    5. }  

     

      4.修改从节点的配置,改为10.0.0.4:27037为源,则可以用insert和remove来完成

    Java代码  收藏代码
    1. > db.sources.insert({"host":"10.0.0.4:27037"})  
    2. > db.sources.remove({"host":"10.0.0.1:27037"})   
    mongodb文档数据库提供了主从复制模式,其实mongodb的主从复制配置很简单,就是启动mongod服务进程的时候 分别指定 --master ,--slave,一个是以主模式启动,另一个属于从模式启动,当主库更新时,数据就会被被复制到从数据库中。
    此次测试仅在单台服务器上开启2deamon来模拟2台服务器进行主从复制:
    主库:./mongod --master --dbpath=/opt/monogdata/data --port=60000
    从库:./mongod --slave --dbpath=/opt/monogdata/slavedata/ --port=60010 --source=127.0.0.1:60000
     
    --主库:
    [monogdb@yangDB bin]$ ./mongo --port 60000
    MongoDB shell version: 1.8.3-rc0
    connecting to: 127.0.0.1:60000/test
    > show dbs
    admin   (empty)
    local   1.203125GB
    test    0.203125GB
    > use test
    switched to db test
    > show collections --查看主库中的对象
    system.indexes  --system.indexes用来存放索引的表
    test--一个测试表
    --查看test表中的内容
    >db.test.find(); --此操作=select * from test;
    { "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
    --向test表中插入数据
    > db.test.insert({id:2,val:"yangql is learing monogdb master slave!"});
    > db.test.find();                                                      
    { "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
    { "_id" : ObjectId("4e45291c018d1a0d765a9788"), "id" : 2, "val" : "yangql is learing monogdb master slave!" }
                      
    --备库
    [monogdb@yangDB bin]$ ./mongo --port=60010
    MongoDB shell version: 1.8.3-rc0
    connecting to: 127.0.0.1:60010/test
    > db
    test
    > db.printSlaveReplicationInfo(); ---显示主库的信息。
    source:   127.0.0.1:60000
             syncedTo: Fri Aug 12 2011 21:19:42 GMT+0800 (CST)
                     = 7secs ago (0hrs)
    > show collections
    system.indexes
    test  --主库的数据已经被复制到从库了
    > db.test.find();
    { "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
    --主库更新数据后查看从库。
    > db.test.find();
    { "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
    { "_id" : ObjectId("4e45291c018d1a0d765a9788"), "id" : 2, "val" : "yangql is learing monogdb master slave!" }
    --测试在从库更新数据,但是不成功!
    > db.test.insert({id:2,val:"yangql is writing things to  slave,but it can`t do this!"});                                    
    not master
    > db.test.find();  
    { "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }
    { "_id" : ObjectId("4e45291c018d1a0d765a9788"), "id" : 2, "val" : "yangql is learing monogdb master slave!" }
    monogdb的主从复制是不能达到主库当机以后,从库自动升级到主库的,而Replica Pairs借用arbiter可以完成主从故障迁移 。
  • 相关阅读:
    《我与我的父辈》影评
    如何进行时间规划?
    内向者相关
    修己 0815
    loj 3102
    StringSequences
    解方程
    problem B
    uoj424 count
    fft相关的复习
  • 原文地址:https://www.cnblogs.com/ylqmf/p/2584070.html
Copyright © 2020-2023  润新知