`

Mongodb笔记,Master/Slaves 主从模式(转)

 
阅读更多

Master/Slaves  主从模式
  -新建master 
    >mongod --dbpath D:\Data\master --port 10000 --master
  -新建slave  
    >mongod --dbpath D:\Data\slave  --port 10001 --slave --source 127.0.0.1:10000
    在程序里面的连接字符串注意改下 在从库后面需要加?slaveOk=true,例如
    string connectionStringMaster = "mongodb://127.0.0.1:10000/mydb";
    string connectionStringSlave3 = "mongodb://127.0.0.1:10003/mydb?slaveOk=true";
    string connectionStringSlave4 = "mongodb://127.0.0.1:10004/mydb?slaveOk=true";

测试过,这么开启后,只有联主库的时候才能将数据写入成功,如果连从库,那么写入不成功,不过可以读,这也是主从的基本要求吧.当我将主库杀掉后,从库依然可以用,不过它也只能读,不能写. 

 

<strong>--Replica Set    副本集模式</strong> 
    还是主从模式,只不过他在主库down掉后会重新启用一个从库作为主库
-新建:
>mongod  --dbpath D:\MongoDB\Data\RsNode1 --port 10001 --replSet blort/Liudapeng-PC:10002,Liudapeng-PC:10003
    >mongod  --dbpath D:\MongoDB\Data\RsNode2 --port 10002 --replSet blort/Liudapeng-PC:10001
    >mongod  --dbpath D:\MongoDB\Data\RsNode3 --port 10003 --replSet blort/Liudapeng-PC:10001(会自动连接其他库)
>mongod       --port 10004  --dbpath data\rsnode4  --replSet blort  --oplogSize 100
  -副本集初始化:  shell中执行 (随便一个副本集都行,admin库,注意不能用localhost系列地址,用机器或外部ip)
    >db.runCommand({"replSetInitiate":{"_id":"blort","members":[{"_id":1,"host":"Liudapeng-PC:10001"},{"_id":2,"host":"Liudapeng-PC:10002"}]}});
        或者
    >config = {_id: 'replidb', members: [
                  {_id: 0, host: '10.69.2.117:1001'},
                  {_id: 1, host: '10.69.3.114:1001'},
                  {_id: 2, host: '10.69.3.138:1001',priority:0,slaveDelay:3600},
                  {_id: 3, host: '10.55.25.28:1001', arbiterOnly: true }]
    };
    >rs.initiate(config);
    >rs.status()能看到具体的信息
       -更多命令查看:
    >rs.help();
 
<strong>--Sharding 分片</strong>
 
 
 
 
 
 
 
 
<strong>--附录</strong>
连接
MongoDB是一个数据库服务器,在等待客户端连接的时候,可以以前台或后台方式运行。当你启动MongoDB后,可以看到如下输出:
~/$ ./mongod
#
# some logging output
#
Tue Mar 9 11:15:43 waiting for connections on port 27017
Tue Mar 9 11:15:43 web admin interface listening on port 28017
输出将停在这里,并等待客户端连接到27017端口。一旦你连接到数据库并开始发送命令,它将继续输出正执行的操作。你可以使用任何一种MongoDB的 驱动 或是 Mongo shell 来连接到数据库。
但你_不能_通过浏览器访问27017端口 http://localhost:27017。数据库不接受HTTP方式访问该端口。
标准连接字符串格式
    以下列出的uri样式并非被所有的数据库驱动所支持,请参考各驱动自己的文档,查看各驱动支持的连接字符串uri形式。如果下面的样式不支持,那么驱动会有自己的指定连接的替代方式。
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
•   mongodb:// 是一个必填的前缀,它标识当前字符串是标准连接格式。
•   {{username:password@}}可选。给出用户名和密码后,驱动将在连接到数据库后尝试登录。
•   host1 uri里唯一的必填项,数据库的连接地址。
•   :portX 可选。默认连接到27017端口。
•   /database 是希望连接到的数据库名,只有在提供 username:password@ 后该值才有效。如果不指定,默认将连接"admin"数据库。
可以任意指定多个数据库和端口,这用于实现连接到replica pairs/sets。
可选项有:
•   connect=direct|replicaset
o   direct: 直接建立一个到服务器的连接。如果指定了多个host,将按先后顺序挨个尝试建立连接,直到连接建立成功为止。如果只指定了一个host,则 direct 为默认值。
o   replicaset: 使用creplica set semantics建立连接(即使只提供了一个host)。指定的host作为种子列表来查找完整的replica set。当指定多个host时 replicaset 为默认值。
•   replicaset=name
o   驱动验证建立连接的replica set的名字。隐含 connect=replicaset。
•   slaveok=true|false
o   true: 对于 connect=direct 模式,驱动对列表中的第一个服务器建立连接,即使它不是主服务器。对 connect=replicaset 模式,驱动将所有写操作发送到主节点,将所有读操作按round robin顺序分发到从节点。
o   false: 对 connect=direct 模式,驱动按顺序尝试所有host直到找到主节点。对 connect=replicaset 模式,驱动将只连接到主节点,并将所有读操作和写操作都发送到主节点。
•   safe=true|false
o   true: 驱动在每次更新操作后都发送 getlasterror 命令以确保更新成功(参考 w 和 wtimeout)。
o   false: 驱动每次更新操作后不发送 getlasterror 命令。
•   w=n
o   驱动给 getlasterror 发送 { w : n } 命令。隐含 safe=true
•   wtimeout=ms
o   驱动给 getlasterror 添加 { wtimeout : ms } 参数。隐含 safe=true
•   fsync=true|false
o   true: 驱动给 getlasterror 添加 { fsync : true } 参数。隐含 safe=true
o   false: 驱动不添加 fsync 参数。
示例
连接到一个运行在本机默认端口(27017)的MongoDB
mongodb://localhost
连接到一个运行在本机默认端口(27017)的MongoDB,并以用户名"fred"和密码"foobar"登录,登录后将默认使用admin数据库
mongodb://fred:foobar@localhost
连接到一个运行在本机默认端口(27017)的MongoDB,并以用户名"fred"和密码"foobar"登录,登录后将使用baz数据库
mongodb://fred:foobar@localhost/baz
连接到一个replica pair,一台服务器在example1.com,另一台在example2.com
mongodb://example1.com:27017,example2.com:27017
连接到本机的一个replica set(端口分别为27017,27018,27019)
mongodb://localhost,localhost:27018,localhost:27019
连接到三台服务器的replica set,将所有写操作发送到主节点,所有读操作分发到从节点
  
mongodb://host1,host2,host3/?slaveok=true
连接到第一台服务器并响应,无论它是replica set的一台,也无论它是主节点还是从节点
  
mongodb://host1,host2,host3/?connect=direct;slaveok=true
注:这种类型的连接字符串可用于在你偏好使用某台服务器但有可供替换的服务器的时候。
使用safe模式连接到本机
  
mongodb://localhost/?safe=true
使用safe模式连接到replica set,等待备份在至少两台机器上完成,timeout时间为2秒
  
mongodb://host1,host2,host3/?safe=true;w=2;wtimeout=2000
连接池
 
每个TCP连接将对应一个数据库线程。因此强烈建议你使用某种形式的连接池技术。幸运的是,大部分官方数据库驱动已经内置实现了这个功能。但如果你使用CGI或是PHP,对应每个新的请求可能启动一个新的应用进程,这种情况下需要特别注意连接的处理。
分享到:
评论

相关推荐

    MongoDB的Master-Slave主从模式配置及主从复制要点解析

    MongoDB的Master-Slave主从模式是一种常见的数据复制策略,用于实现数据的备份和负载均衡。在这种模式中,一个MongoDB实例作为主节点(Master),负责处理所有的写操作,而其他的实例作为从节点(Slave),复制主...

    mongodb linux 搭建mongo 主从配置安装手册

    /usr/local/northeasttycoon/mongodb/bin/mongod --dbpath=/usr/local/northeasttycoon/mongodb/data --logpath=/usr/local/northeasttycoon/mongodb/log/mongo.log –logappend --port=27017 --master & ...

    数据库-Mongodb的master-slave模式与master-master模式实验.rar

    在分布式系统中,为了确保数据的高可用性和容错性,MongoDB提供了两种复制模式:master-slave(主从模式)和master-master(主主模式)。本实验将深入探讨这两种模式的工作原理、设置方法以及它们在实际应用中的优...

    Linux安装mongodb客户端

    sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...

    linux安装mongodb教程

    /usr/local/mongodb/mongodb-linux-2.0.7/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/mongodb-linux-2.0.7/logs/mongodb.log --logappend --port=27017 --fork 知识点 6:配置...

    mongoDB基础查询/更新语句笔记

    实用有效,最基础的查询显示字段、排序、分页、in 、范围查询和更新字段语句

    mongoDB安装与配置主从

    MongoDB 安装与配置主从关系 MongoDB 是一个基于分布式文件存储的开源文档数据库,允许用户灵活地存储、处理和分析数据。以下是 MongoDB 安装与配置主从关系的详细步骤和相关知识点。 安装 MongoDB 在 RedHat:...

    Ubuntu18.04 安装MongoDB 创建用户及远程访问

    Ubuntu 安装MongoDB 1.在终端输入GPK码 2.添加mongoDB源 . echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb...

    单台windows搭建mongoDb主从集群

    在Windows环境中,搭建MongoDB的主从复制集群是一项常见的任务,以实现数据冗余和高可用性。以下是关于"单台windows搭建mongoDb主从集群"的知识点详细说明: 1. **主从复制(Replication)**: MongoDB的主从复制是...

    mongodb主从备份

    /home/jetsen/apps/mongodb/bin/mongod --dbpath=/home/jetsen/apps/mongodb/data/db --logpath=/home/jetsen/apps/mongodb/logs/mongodb.log --fork --port=27017 --master --logappend --directoryperdb --rest ...

    mongodb安装集群

    ./mongodb/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath /data/mongodb/shard2/data --logpath /data/mongodb/shard2/log/shard2.log --fork --nojournal --oplogSize 10 ``` 3. **启动 shard3 ...

    MongoDB 主从复制,副本集分布式存储

    mkdir -p master-slave/master mkdir -p master-slave/slave cd master-slave ``` 2. **启动主从实例**: - 启动主服务器: ``` mongod --dbpath master --port 10000 --master ``` - 启动从服务器,并...

    MongoDB笔记.docx

    ### MongoDB核心知识点详解 #### MongoDB简介 MongoDB是一款开源的NoSQL数据库系统,与传统的关系型数据库不同,它采用了一种灵活的数据模型——文档模型,这使得它在处理半结构化和非结构化的数据时非常高效。...

    MongoDB2.6.7 86/64版本

    MongoDB 2.6.7版本,X86和64bit都可以安装,这个版本使用老的存储引擎,希望可以帮助到需要的同学

    mongodb安装图文讲解.pdf

    bin/mongod --port=27017 --dbpath=/soft/mongodb/mongodb/data --logpath=/soft/mongodb/mongodb/log/mongodb.log --fork 五、关闭 MongoDB 服务 5.1 方法一:在 MongoDB 内关闭服务 使用以下命令可以关闭 ...

    Mongo复制集仲裁主从

    openssl rand -base64 753 &gt; /data/mongodb/db/mongo.key chmod 600 /data/mongodb/db/mongo.key 将秘钥复制到其他节点: scp mongo.key wantlinuxuser@10.0.110.154:/tmp mv /tmp/mongo.key /data/mongodb/db/ ...

Global site tag (gtag.js) - Google Analytics