## 什么是復制
* 復制提供了數據的冗余備份,并在多個服務器上存儲數據副本,提高了數據的可用性,并可以保證數據的安全性
* 復制還允許從硬件故障和服務中斷中恢復數據
## 為什么要復制
* 數據備份
* 數據災難恢復
* 讀寫分離
* 高(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()
~~~
* 初始化完成后,提示符如下圖:

* step5:查看當前狀態
~~~
rs.status()
~~~
* 當前狀態如下圖:

* step6:添加復本集
~~~
rs.add('192.168.196.128:27018')
~~~
* step7:復本集添加成功后,當前狀態如下圖:

* 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登陸完善