上線的系統,數據存儲是重要部位,若一個公司的數據庫部署還是待用單點部署,那若是宕機或是機器被損壞則是多糟糕的事情呀。
主從複製的部署方式爲下圖
主從複製是一個簡單的數據庫同步備份集羣技術。這種方式簡單靈活,可用於備份、故障恢復,讀擴展。爲了平衡負載,一般通過讀寫分離模式,即主庫寫、從庫讀。
要明確
在數據庫集羣中要明確知道誰是主服務器,主服務器只有一臺
從服務器要知道自己的數據源也就是對於的主服務器是誰
這裏我們用兩臺數據庫進行模擬,一個主master,一個從數據庫。Master用來確定主服務器,slave用來控制增服務器
master配置
配置主服務器數據庫信息
Master.conf
dbpath=J:\java\mongoSlave\master\database #主服務器地址
port =8888 #主數據庫端口號
bind_ip= 127.0.0.1 #主數據庫所在服務器
master=true#確定爲從服務器
啓動配置文件
mast.bat
mongod --configmast.conf
連接數據庫文件mongConn.bat
mongo 127.0.0.1:8888
依次啓動mast.bat ,mongConn.bat連接數據庫
顯示登錄成功信息
slave配置
從服務器的配置信息
dbpath=J:\java\mongoSlave\salve1\database #從服務器地址
port =7778 #從數據庫端口號
bind_ip= 127.0.0.1 #從數據庫所在服務器
source= 127.0.0.1:8888 #確定主的數據庫端口號
slave=true#確定爲從服務器
啓動數據配置
mongod --configslave.conf
連接數據庫配置
mongo 127.0.0.1:7778
再次啓動從服務器
啓動成功後如下圖
從服務器啓動
測試添加數據
在master主數據庫創建foobar數據庫,添加集合,並集合中有一條數據。
查看從數據庫,則有主數據庫添加的數據
動態擴充從數據庫
使用shell腳本
這個時候我們的添加新數據的配置就稍微有所不同了
dbpath=J:\java\mongoSlave\savle2\database #從服務器地址
port =7779 #從數據庫端口
bind_ip= 127.0.0.1 #從數據庫所在服務器
#source = 127.0.0.1:8888 #確定我的數據庫端口號 刪除了主服務器的地址
slave=true#確定爲從服務器
我們通過shell命令進行配置,打開從服務器數據庫命令窗口
Use local
Db.sources.find()
Db.sources.insert({"host":"127.0.0.1:8888"}})
就連接上主服務器,並複製數據庫了
小結:
主從數據庫複製,添加數據只能在主數據庫,而從數據庫只可以進行數據的查找。對於大數據量這種情況有些不適應,這時候我們就需要另外一種形式,分片技術,下篇介紹副本集