問題描述
複製集rs_1上承載了所有的資料庫業務,而加記憶體已經無法滿足應用程式壓力。
解決方案
考慮拆分複製集rs_1的部分資料庫到rs_2,並同時公升級資料庫版本到2.6。
架構圖
準備
評估公升級可能性
1. 連線2.6 mongo shell到2.4 複製集輔助成員,在admin庫執行db.upgradecheckalldbs()。
2. 評估公升級到2.6的應用程式相容性問題,參考:
資料庫劃分
1. 劃分拆分後複製集中資料庫成員。
2. 理清對應的應用,準備好需要更新的鏈結字串。
驅動公升級
1. c#/.net 驅動版本需要提前公升級到1.9以上。
操作步驟
向複製集rs_1中加入乙個2.6版本的secondary成員
1. 在replset 1中加入2.6版本的secondary成員(或將現有2.4版本secondary公升級到2.6版本),具體公升
級方法,請參見《公升級mongodb到2.6》。
2. 根據實際情況,看是否需要加入arbiter,保證replset 1有基數個成員。
rs.addarb("aaaaaa:30000")
將複製集rs_1中的部分資料庫拆分到rs_2
1. 將2.6版本的secondary成員配置新的副本集名稱
修改配置檔案/etc/mongod.conf配置引數replset=rs_2
2. 停止該secondary成員的服務
service mongod stop
3. 刪除掉該secondary成員的oplog
cd /data/var/lib/mongodb/local
rm -rf local.*
4. 啟動服務
service mongod start
5. 初始化新複製集rs_2
rs.initiate()
rs.conf()
rs.status()
6. 公升級授權架構
db.getsiblingdb("admin").runcommand();
7. 移除複製集rs_1中的該成員
rs.conf()
rs.remove('******:27017')
8. 保留複製集rs_2中的資料庫成員,刪除其他庫。
use [資料庫名]
db.dropdatabase();
應用程式修改
1. 修改複製集rs_2中的成員對應的應用程式的鏈結字串。
向複製集rs_2新增兩個2.6版本的成員
1. 停掉rs_1中的兩個secondary成員的mongod服務
service mongod stop
2. 資料庫版本公升級到2.6
3. 刪除資料庫目錄下的資料檔案
4. 修改/etc/mongod.conf配置引數replset=rs_2
5. 啟動mongod服務
service mongod start
6. 連線新複製集rs_2的primary的mongo shell新增兩個新成員
rs.add('yyyyyy:27017')
rs.add('zzzzzz:27017')
7. 移除複製集rs_1的yyyyyy和zzzzzz成員
rs.conf()
rs.remove('yyyyyy:27017')
rs.remove('zzzzzz:27017')
8. 檢查新複製集rs_2的資料同步狀態
rs.status()
9. 為了避免,當資料同步過程中,應用端大量的查詢連線請求,導致同步無法完成,可隱藏該
secondary成員。(可選)
cfg = rs.conf()
cfg.members[1].priority = 0
cfg.members[1].hidden = true
rs.reconfig(cfg)
注意:members陣列索引從0開始。
10.待資料同步完成後,再取消隱藏。(可選)
cfg = rs.conf()
cfg.members[1].hidden = false
cfg.members[1].priority = 1
rs.reconfig(cfg)
11.若rs_2的primary硬體配置更好,可修改primary的優先順序。(可選)
cfg = rs.conf()
cfg.members[0].priority = 23
rs.reconfig(cfg)
12.在忽略9到12步的情況下,若某個secondary成員的硬體配置更好,希望同步資料完成後,自動選舉為
primary,可在同步資料過程中,修改該成員的優先順序。待資料同步完後,會自動切換。(可選)
cfg = rs.conf()
cfg.members[2].priority = 23
rs.reconfig(cfg)
源複製集rs_1公升級到2.6版本
1. 移除選舉成員。
rs.remove('aaaaaa:30000')
2. 刪除源複製集rs_1中的拆分到rs_2的資料庫成員。
3. 公升級複製集rs_1,步驟可參見《公升級mongodb到2.6》和《mongodb公升級使用者授權資料到2.6格式》。
人臉集資料庫
資料集 數量人臉數量 關鍵點數量 主要用途 優點缺點 適用方法 aflw 16k25k 21 點不全 85 點全,但無側臉 人臉檢測 人臉矯正 包含各種自然情況下的人臉 多角度 年齡 性別等 資料集乾淨 關鍵點標註精準。數量少,缺乏亞洲人臉 boost celeba 200k 200k 5人臉檢測 ...
資料庫拆分
一 水平切分是指,以某個欄位為依據 例如id 按照一定規則 例如取模 將乙個庫 表 上的資料拆分到多個庫 表 上,以降低單庫 表 大小,達到提公升效能的目的的方法,水平切分後,各個庫 表 的特點是 1 每個庫 表 的結構都一樣 2 每個庫 表 的資料都不一樣,沒有交集 3 所有庫 表 的並集是全量資...
資料庫拆分
1.第一步 採用分布式快取redis memcached等降低對資料庫的讀寫操作 2.第二步 如果快取使用過後,資料庫訪問量還是非常大,可以考慮資料庫讀寫分離原則。3.第三步 當我們使用讀寫分離 快取後 資料庫的壓力還是很大的時候,這就需要使用資料庫的拆分了。乙個資料庫由很多表構成,每個表對應著不同...