## 什么是复制
* 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性
* 复制还允许从硬件故障和服务中断中恢复数据
## 为什么要复制
* 数据备份
* 数据灾难恢复
* 读写分离
* 高(24* 7)数据可用性
* 无宕机维护
* 副本集对应用程序是透明
* 复制的工作原理
* 复制至少需要两个节点A、B...
* A是主节点,负责处理客户端请求
* 其余的都是从节点,负责复制主节点上的数据
* 节点常见的搭配方式为:一主一从、一主多从
* 主节点记录在其上的所有操作,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致
* 主节点与从节点进行数据交互保障数据的一致性
## 复制的特点
* N 个节点的集群
* 任何节点可作为主节点
* 所有写入操作都在主节点上
* 自动故障转移
* 自动恢复
## 设置复制节点
* 接下来的操作需要打开多个终端窗口,而且可能会连接多台ubuntu主机,会显得有些乱,建议在xshell中实现
* step1:创建数据库目录t1、t2
* 在Desktop目录下演示,其它目录也可以,注意权限即可
~~~
mkdir t1
mkdir t2
~~~
* step2:使用如下格式启动mongod,注意replSet的名称是一致的
~~~
mongod --bind_ip 192.168.196.128 --port 27017 --dbpath ~/Desktop/t1 --replSet rs0
mongod --bind_ip 192.168.196.128 --port 27018 --dbpath ~/Desktop/t2 --replSet rs0
~~~
* step3:连接主服务器,此处设置192.168.196.128:27017为主服务器
~~~
mongo --host 192.168.196.128 --port 27017
~~~
* step4:初始化
~~~
rs.initiate()
~~~
* 初始化完成后,提示符如下图:
![](https://box.kancloud.cn/f3b05479034cb76e652e7add6624f974_159x23.png)
* step5:查看当前状态
~~~
rs.status()
~~~
* 当前状态如下图:
![](https://box.kancloud.cn/2714b98b9f8cb466b60005619d81f6ea_532x420.png)
* step6:添加复本集
~~~
rs.add('192.168.196.128:27018')
~~~
* step7:复本集添加成功后,当前状态如下图:
![](https://box.kancloud.cn/70b4960ea3129290764ec564e77d8d18_592x687.png)
* step8:连接第二个mongo服务
~~~
mongo --host 192.168.196.128 --port 27018
~~~
* step9:连接成功后,向主服务器中插入数据
~~~
use test1
for(i=0;i<10;i++){db.t1.insert({_id:i})}
db.t1.find()
~~~
* step10:在从服务器中插查询
* 说明:如果在从服务器上进行读操作,需要设置rs.slaveOk()
~~~
rs.slaveOk()
db.t1.find()
~~~
## 其它说明
* 删除从节点
~~~
rs.remove('192.168.196.128:27018')
~~~
* 关闭主服务器后,再重新启动,会发现原来的从服务器变为了从服务器,新启动的服务器(原来的从服务器)变为了从服务器
- mysql
- 1.创建库和表
- 1.1.数据库简介
- 1.2.安装管理
- 1.3.数据完整性
- 1.4.命令脚本操作
- 2.查询
- 2.1.条件
- 2.2.聚合
- 2.3.分组
- 2.4.排序
- 2.5.分页
- 3.高级
- 3.1.关系
- 3.2.连接
- 3.3.自关联
- 3.4.子查询
- 3.5.内置函数
- 3.6.视图
- 3.7.事务
- 4.与python交互
- 4.1.交互类型
- 4.2.增改删
- 4.3.查询
- 4.4.封装
- 4.5.用户登录
- Nosql简介
- mongodb
- 1.基本操作
- 1.1.环境安装
- 1.2.数据库操作
- 1.3.集合操作
- 1.4.数据类型
- 1.5.数据操作
- 1.6.数据查询
- 1.6.1.Limit与Skip
- 1.6.2.投影
- 1.6.3.排序
- 1.6.4.统计个数
- 1.6.5.消除重复
- 2.高级操作
- 2.1.聚合aggregate
- 2.1.1.$group
- 2.1.2.$match
- 2.1.3.$project
- 2.1.4.$sort
- 2.1.5.$limit,$skip
- 2.1.6.$unwind
- 2.2.安全
- 2.3.复制(副本集)
- 2.4.备份和恢复
- 2.5.与python交互
- redis
- 1.基本配置
- 2.数据操作
- 2.1.string
- 2.2.键命令
- 2.3.hash
- 2.4.list
- 2.5.set
- 2.6.zset
- 4.高级
- 4.1.发布订阅
- 4.2.主从配置
- 5.与python交互
- 6.login登陆完善