mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 區域

来源:http://www.cnblogs.com/ddbear/archive/2017/11/21/7872383.html
-Advertisement-
Play Games

這個系列大致想跟大家分享以下篇章(我會持續更新的↖(^ω^)↗): 1、mongo 3.4分片集群系列之一:淺談分片集群 2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3、mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全 4、mongo 3.4分片集群系列之 ...


這個系列大致想跟大家分享以下篇章(我會持續更新的↖(^ω^)↗):

1、mongo 3.4分片集群系列之一:淺談分片集群

2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片

3、mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全

4、mongo 3.4分片集群系列之四:搭建分片集群--哈希分片 + 安全 + 區域

5、mongo 3.4分片集群系列之五:詳解平衡器

6、mongo 3.4分片集群系列之六:詳解配置資料庫

7、mongo 3.4分片集群系列之七:配置資料庫管理

8、mongo 3.4分片集群系列之八:分片管理

 

這一篇也是實踐篇。

1、        簡單介紹區域

區域,簡單來說,就是將一個或幾個分片劃分為一組,也就是一個區域,那麼標記為該區域的數據在平衡的集群中,只會存儲在該區域內的分片中。

舉個例子(借用官網的例子說明):

定義區域前的架構

分片集群部署目前由三個分片組成。

   

定義區域後的架構

根據需要,定義兩個區域“recent”和“archive”,區域“recent”由shard1和shard2組成,區域“archive”由shard3組成

   

關於區域和分片鍵的一些說明:

每個區域覆蓋一個或多個分片鍵值範圍。區域覆蓋的每個範圍總是包括其下邊界,而不包括上邊界。

區域不能共用範圍,也不能具有重疊的範圍。

當定義要覆蓋的區域的新範圍時,必須使用分片鍵中包含的欄位。如果使用複合分片鍵,則範圍必須包含分片鍵的首碼。

2、        本篇分片集群的架構

主機

分片

分片名稱

區域

 

192.168.209.155

mongo_shard3

shard0002

notGsxt

mongo_shard1

shard0000

 

isGsxt

mongo_shard2

shard0001

192.168.209.156

mongo_shard4

shard0003

由2個主機構成,其中主機192.168.209.155提供3個分片,分片名稱分別為mongo_shard1,mongo_shard2,mongo_shard3。主機192.168.209.156供1分片,為mongo_shard4。主機192.168.209.155的mongo_shard1,mongo_shard2,和主機192.168.209.156的mongo_shard4構成區域isGsxt,主機192.168.209.155的mongo_shard2構成區域notGsxt。(配置伺服器和路由都在192.168.209.155上)

3、        具體操作步驟

本篇文章是認為已經搭建了哈希分片+安全的,有關如何搭建哈希分片+安全的集群,請參考上一篇文章:mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全

以下步驟,除了第(1)步,其餘的步驟,都在主機192.168.209.155上操作

1)    首先,搭建一個4個哈希分片的集群

  有關如何搭建哈希分片+安全的集群,請參考上一篇文章:mongo 3.4分片集群系列之三:搭建分片集群--哈希分片 + 安全

2)    禁用平衡器

為了降低性能影響,可以禁用集群上的平衡器。

在主機192.168.209.155上,連接到一個mongos實例

# mongo --port 6666 -u bear -p bear --authenticationDatabase admin           

use admin;

sh.stopBalancer();

   

3)    將每個分片添加到適當的區域

查看集群內分片的名稱

sh.status();

   

主機192.168.209.155的mongo_shard1,mongo_shard2,和主機192.168.209.156的mongo_shard4構成區域isGsxt。

sh.addShardTag(shard0000,”isGsxt”);

sh.addShardTag(shard0001,”isGsxt”);

sh.addShardTag(shard0003,”isGsxt”);

主機192.168.209.155的mongo_shard2構成區域notGsxt。

sh.addShardTag(shard0002,”notGsxt”);

4)    定義每個區域的範圍

用集合上的分片鍵定義區域範圍,對於每個集合都要執行此操作,此操作是以集合為單位,而不是整個資料庫。集合必須是已分片的集合。

舉個例子,gsxt資料庫的gansu_test1集合,其中分片鍵為Name欄位。將其定義到isGsxt區域中。

sh.addTagRange(

  “gsxt.gansu_test1”,

{“Name”:MinKey},

{“Name”:MaxKey},

“isGsxt”

)

 

5)    啟用平衡器

sh.startBalancer();

6)    確認更改

sh.status();

     

7)    測試

  可以嘗試往gsxt.gansu_test1集合中插入數據,然後在用sh.status(),查看數據的塊分佈情況。

 

--------------------------------------- over ------------------------------------------------------

以上資料,大部分是參考官網的資料,在此表示感謝。

https://docs.mongodb.com/manual/core/zone-sharding/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、一個文件的基本框架為:文件名、文件地址、文件大小、文件最大的大小、文件的增量(Filegrowth)。 2、文件有mdf、ndf、ldf 三種文件的區別。 3、文件組可以進行文件的管理 FileGroup 預設的文件組是 Primary 日誌文件無文件組的概念,存在Log文件中。 4、 alte ...
  • 1.展示當前資料庫 所有表名(前提必須進入資料庫,進入資料庫語句:【use 資料庫名;】)mysql> show create table 表名; 2.看mysql支持哪些存儲引擎:mysql> show engines; 3.查看mysql當前預設的存儲引擎:mysql> show variabl ...
  • 以下為個人學習Redis的備忘錄--記憶體優化,基於Redis4.0.2 1.隨時查看info memory,瞭解記憶體使用狀況:127.0.0.1:6379> info memory# Memoryused_memory:2314624 //(位元組單位形式)used_memory_human:2.21 ...
  • 2017-11-21 17:51:04 select * from world.city; select countrycode from world.city; /*distinct關鍵字作用於所有列,不僅僅跟著的後面那列*/select distinct countrycode from wor ...
  • 1. 用戶登錄日誌表 xes_user_login_logs 如下: (1) 檢索登錄超過兩次的用戶ID(sql語句) (2) 檢索登錄超過兩次的總數(SQL語句) 2. ...
  • 問題現象: 當建立新表時會出現一個空白的視窗,敲擊鍵盤輸入後就會出現應用出錯,然後退出。 解決方案: 選中某個已經存在的表,再點右鍵,新建表就可以正常操作了。 ...
  • 1、介紹 MySQL資料庫設置讀寫分離,可以使對資料庫的寫操作和讀操作在不同伺服器上執行,提高併發量和響應速度。現在的網站一般大點的,都採用有資料庫主從分離、讀寫分離,既起到備份作用也可以減輕資料庫的讀寫的壓力,一直聽說過這些,但是從來沒有親自動手實踐過,今天有時間實踐一下,記錄下過程。 2、環境準 ...
  • Oracle函數sys_connect_by_path 詳解 語法:Oracle函數:sys_connect_by_path 主要用於樹查詢(層次查詢) 以及 多列轉行。其語法一般為: select ... sys_connect_by_path(column_name,'connect_symbo ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...