1 主从复制是一个简单的数据库同步备份的集群技术,有以下几点
1.1在数据库集群中要明确知道谁是主服务器,主服务器只有一台
1.2从服务器要知道自己的数据源也就是对于自己的主服务器是谁
1.3--master用来确定主服务器,--salve和--source来控制从服务器
2主从服务器的配置
主服务器的9999.conf的配置:
dbpath=D:\MongoDBDATA\09\9999 #主数据库地址
port=9999 #主数据库端口号
bind_ip=127.0.0.1 #主数据库所在服务器
master=true #确定我是主服务器
从服务器的7777.conf的配置:
dbpath=D:\MongoDBDATA\07\7777 #主数据库地址
port=7777 #主数据库端口号
bind_ip=127.0.0.1 #从数据库所在服务器
source=127.0.0.1:9999 #确定主服务器地址
slave=true #确定我是从服务器
3 启动主从服务器
启动主服务器(9999mongodb.bat):mongod --config 9999.conf
启动从服务器(7777mongodb.bat):mongod --config 7777.conf
4 启动主从服务器shell客户端(9999shell.bat):mongo 127.0.0.1:9999/test
启动从服务器shell客户端(7777shell.bat):mongo 127.0.0.1:7777/test
5 往主服务器数据库插入一条数据,可以在从服务器数据库里面找到
主服务器数据插入一条数据,再查找
可以从从服务器数据库里面查找出主服务器插入的数据
动态添加或者删除从节点
主节点端口9999,从节点端口7777
1 查看从节点的sources集合中的值,sources集合在local数据库中,注意启动从节点的时候不要定义主节点的地址。
2 向从节点的source集合插入host字段数据
db.sources.insert({"host":"127.0.0.1:9999"})
3 主节点新增数据,会在从节点中查到
主节点新增数据:
从节点可以查询到:
动态删除源:
db.sources.remove({"host":"127.0.0.1:9999"});
副本集:
自动故障恢复功能的主从集群,主从集群和副本集最大区别就是副本集没有固定的主节点,且主从复制中的从节点是可以查询等操作,副本集的从节点不是可以的,以下是副本集工作的图解
初始化副本集
设置副本集配置:
A.conf
dbpath=D:\MongoDBDATA\07\3333 #主数据库地址
port=3333 #主数据库端口号
bind_ip=127.0.0.1 #主数据库所在服务器
replSet=child/127.0.0.1:1111 #设定同伴
启动A(Amongodb.bat)
mongod --config A.conf
启动shll客户端Ashell.bat
mongo 127.0.0.1:3333
在shell客户端初始化副本集
use admin
db.runCommand(
{"replSetInitiate":{
"_id":"child",
"members":[
{
"_id":1,
"host":"127.0.0.1:1111",
"priority":1
},
{
"_id":2,
"host":"127.0.0.1:2222",
"priority":1
},
{
"_id":3,
"host":"127.0.0.1:3333",
"priority":1
}]}}
)
初始化以后,再打开几个shell客户端,如下图,会有standard,passive,arbiter,primary这几种。primary代表活跃节点,只能在活跃节点上面做查询操作
查询副本集状态
rs.status()
如果关闭一个活跃节点,会推选其他备份节点为活跃节点,我们先关闭1111的端口的节点。
再次打开shell,会发现2222为活跃节点。
新的活跃节点将是优先级最高的节点,优先级相同则数据较新的节点获胜。