博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongodb复制集搭建
阅读量:2434 次
发布时间:2019-05-10

本文共 4350 字,大约阅读时间需要 14 分钟。

环境
主机 端口4444
[root@db11 mongo]# hostname
db11
[root@db11 mongo]# pwd
/opt/mongo
[root@db11 mongo]# ls -l
total 124
drwxr-xr-x. 2 root root  4096 Mar 10 19:37 bin
drwxr-xr-x. 3 root root  4096 Mar 12 16:27 data
-rw-r--r--. 1 root root 34520 Feb 28 01:43 GNU-AGPL-3.0
-rw-r--r--. 1 root root   104 Mar 11 09:52 mongo.conf
-rw-r--r--. 1 root root 37896 Mar 16 14:52 mongo.log
-rw-------. 1 root root  1602 Mar 16 14:51 nohup.out
-rw-r--r--. 1 root root  1359 Feb 28 01:43 README
-rw-r--r--. 1 root root 22660 Feb 28 01:43 THIRD-PARTY-NOTICES
备机 端口从4000开始
两个复制节点,一个arbiter
[root@db10 mongo]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:C2:46:86 
          inet addr:1.1.1.10  Bcast:1.1.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fec2:4686/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:117884 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50708 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:162996837 (155.4 MiB)  TX bytes:3730840 (3.5 MiB)
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:C2:46:86 
          inet addr:1.1.1.100  Bcast:1.1.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth0:2    Link encap:Ethernet  HWaddr 08:00:27:C2:46:86 
          inet addr:1.1.1.101  Bcast:1.1.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth0:3    Link encap:Ethernet  HWaddr 08:00:27:C2:46:86 
          inet addr:1.1.1.102  Bcast:1.1.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
[root@db10 mongo]# hostname
db10
[root@db10 mongo]# ls -l
total 28
drwxr-xr-x. 2 root root 4096 Mar 16 13:50 bin
drwxr-xr-x. 2 root root 4096 Mar 16 14:07 data1
drwxr-xr-x. 2 root root 4096 Mar 16 14:07 data2
drwxr-xr-x. 2 root root 4096 Mar 16 13:50 dir
-rw-r--r--. 1 root root  104 Mar 16 13:50 mongo1.conf
-rw-r--r--. 1 root root  104 Mar 16 14:13 mongo2.conf
-rw-r--r--. 1 root root  104 Mar 16 14:14 mongo_arbiter.conf
步骤
1 在每个
成员的
配置文件里添加replica set name,并且启动所有成员。
replSet = rs0
arbiter成员设置
replSet = rs0
journal = false
2 连接主库,初始化复制集。
> rs.initiate()
{
        "info2" : "no configuration explicitly specified -- making one",
        "me" : "db11:4444",
        "ok" : 1
}
rs0:OTHER>
3 查看当前replica配置。
执行后,提示符编程“rs0:PRIMARY>”
rs0:OTHER> rs.conf()
{
        "_id" : "rs0",
        "version" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "db11:4444",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
                        },
                        "slaveDelay" : 0,
                        "votes" : 1
                }
        ],
        "settings" : {
                "chainingAllowed" : true,
                "heartbeatTimeoutSecs" : 10,
                "getLastErrorModes" : {
                },
                "getLastErrorDefaults" : {
                        "w" : 1,
                        "wtimeout" : 0
                }
        }
}
rs0:PRIMARY>
4 添加两个备机和一个arbiter
rs0:PRIMARY> rs.add('1.1.1.101:4001');
{ "ok" : 1 }
rs0:PRIMARY> rs.add('1.1.1.102:4002');
{ "ok" : 1 }
rs0:PRIMARY> rs.addArb('1.1.1.100:4000')
{ "ok" : 1 }
5 让备库就绪
(以后每次启动备库都需要执行)
rs0:SECONDARY> rs.slaveOk()
6 查看配置结果
rs0:PRIMARY> rs.conf()
{
        "_id" : "rs0",
        "version" : 5,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "db11:4444",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
                        },
                        "slaveDelay" : 0,
                        "votes" : 1
                },
                {
                        "_id" : 1,
                        "host" : "1.1.1.101:4001",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
                        },
                        "slaveDelay" : 0,
                        "votes" : 1
                },
                {
                        "_id" : 2,
                        "host" : "1.1.1.102:4002",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
                        },
                        "slaveDelay" : 0,
                        "votes" : 1
                },
                {
                        "_id" : 3,
                        "host" : "1.1.1.100:4000",
                        "arbiterOnly" : true,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {
                        },
                        "slaveDelay" : 0,
                        "votes" : 1
                }
        ],
        "settings" : {
                "chainingAllowed" : true,
                "heartbeatTimeoutSecs" : 10,
                "getLastErrorModes" : {
                },
                "getLastErrorDefaults" : {
                        "w" : 1,
                        "wtimeout" : 0
                }
        }
}
7 验证
主库
rs0:PRIMARY> use test
switched to db test
rs0:PRIMARY> db.createCollection('obj');
{ "ok" : 1 }
rs0:PRIMARY> db.obj.insert({name: "a", value: 100});
WriteResult({ "nInserted" : 1 })
备库
rs0:SECONDARY> use test
switched to db test
rs0:SECONDARY> db.obj.findOne();
{
        "_id" : ObjectId("55068b6b391bb83a8c51b140"),
        "name" : "a",
        "value" : 100
}
备库整体是只读的,建其它数据库也不行
rs0:SECONDARY> use ls
switched to db ls
rs0:SECONDARY> db.createCollection('xx')
{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26239116/viewspace-1485427/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26239116/viewspace-1485427/

你可能感兴趣的文章
Git的多人协作和分支处理测试
查看>>
mysql索引回表
查看>>
iterm2 保存阿里云登陆并防止断开连接
查看>>
brew安装
查看>>
mysql5.7初始密码查看及密码重置
查看>>
go语言实现2048小游戏(完整代码)
查看>>
动态二维码免费制作
查看>>
C语言贪吃蛇
查看>>
Python练手项目
查看>>
知网毕业论文爬取
查看>>
Django无法显示图片
查看>>
AOP技术基础
查看>>
聊聊Spring中的数据绑定 --- DataBinder本尊(源码分析)
查看>>
Spring MVC 框架的请求处理流程及体系结构
查看>>
mybatis-generator-gui界面工具生成实体
查看>>
Github访问速度很慢的原因,以及解决方法
查看>>
数据库分区、分表、分库、分片
查看>>
数据库垂直拆分 水平拆分
查看>>
关系型数据库设计:三大范式的通俗理解
查看>>
Hibernate常见面试题
查看>>