ホームページ データベース mysql チュートリアル Mongodb高可用架构—Replica Set 集群实战

Mongodb高可用架构—Replica Set 集群实战

Jun 07, 2016 pm 05:40 PM
mongodb sharding 断片化

ReplicaSet使用的是n个mongod节点,构建具备自动的容错功能(auto-failover),自动恢复的(auto-recovery)的高可用方案。使用ReplicaSet来实现读写分离。通过在连接

 

Replica Set使用的是n个mongod节点,构建具备自动的容错功能(auto-failover),自动恢复的(auto-recovery)的高可用方案。

使用Replica Set来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。

对于Replica Set中的secondary 节点默认是不可读的。 

 

 

架构图:

 

分别在各服务器上运行两个mongod实例: 

shard11 + shard12 + shard13 ----> 组成一个replica set --|

  |-----> sharding_cluster

shard21 + shard22 + shard23 ----> 组成一个replica set --|

 

Shard Server: 用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障!

Config Server: 存储了整个 Cluster Metadata,其中包括 chunk 信息!

Route Server: 前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

 

一、安装配置mongodb环境

1.安装

2.建立用户和组

  • 3.创建数据目录

    在各服务器上建立如下目录:

    4.设置各节点服务器hosts解析

     

     

    5.同步时钟

    ntpdate ntp.api.bz

    写到crontab任务计划中!

    这里务必要同步时钟,不然shrad不能同步!

     

    以上配置各节点都进行操作!!

     

    二、配置relica sets

    1.配置两个shard

     

    可以对应的把上面的命令放在一个脚本内,方便启动!

    也可以写到配置文件中,香港空间,通过-f参数来启动!

    改成配置文件方式:

    这样可以通过 mognod -f mongodb.conf来启动了!

     

    我这里把这些命令都放入脚本中:

    启动脚本(这里只启动mongod,后面有专门启动config和mongos脚本):

     


     

    PS:要是想开启一个HTTP协议的端口提供rest服务,可以在mongod启动参数中加上 --rest 选项!

    这样我们可以通过 :28021/_replSet 查看状态!

     

    生产环境推荐用配置文件和脚本文件方式启动。

     

    三、初始化replica set

     

    1.配置shard1用到的replica sets

     

    出现如下信息表示成功: 

    可以看马上变成 PRIMARY 即主节点!

    再到其它节点看下: 

    在所有节点上可以查看Replica Sets 的配置信息: 

    2.配置shard2用到的replica sets

     

    验证节点:

     

    到此就配置好了二个replica sets!

    PS: 初始化时,不指定priority默认id 0 为primary

     

    状态中关键数据位:

    在用 rs.status()查看replica sets状态时,

    state:1表示该host是当前可以进行读写,2:不能读写

    health:1表示该host目前是正常的,0:异常

     

    注意:初使化replica sets时也可以用这种方法:

    db.runCommand({"replSetInitiate":{"_id":"shard1","members":[{"_id":0,"host":"192.168.8.30:27021"},{"_id":1,"host":"192.168.8.31:27021"},{"_id":2,"host":"192.168.8.32:27021","shardOnly":true}]}})

    可以省略用rs.initiate(config)。

     

    四、配置三台config server

     

    分别在各服务器上运行(启动都一样):

    /opt/mongodb/bin/mongod --configsvr --dbpath /data0/mongodb/db/config --port 20000 --logpath /data0/mongodb/logs/config.log --logappend --fork --directoryperdb

     

    用脚本形式:

     

    然后在各节点查看有没有启动起来:

      

    五、配置mongs(启动路由)

     

    分别在206、207服务器上运行(也可以在所有节点上启动):

    /opt/mongodb/bin/mongos -configdb 192.168.8.30:20000,192.168.8.31:20000,192.168.8.32:20000 -port 30000 -chunkSize 50 -logpath /data0/mongodb/logs/mongos.log -logappend -fork

     

    用脚本形式: 

     

    注意:

    1). mongos里面的ip和端口是config服务的ip和端口:192.168.8.30:20000,192.168.8.31:20000,192.168.8.32:20000

    2). 必须先启动config后(并且config启动正常后,有config的进程存在)再启动mongos

     

    六、配置shard集群 

    1.连接一台路由 

    2.加入shards 

    PS:

    分片操作必须在 admin 库下操作

    如果只启动206和207服务器的路由!因此可不用把208服务器加进来!

    可选参数说明:

    Name:用于指定每个shard的名字,不指定的话系统将自动分配

    maxSize:指定各个shard可使用的最大磁盘空间,单位MegaBytes

     

    3.列出加入的shards 


    PS: 列出了以上二个我加的shards(shard1和shard2),表示shards已经配置成功!!

    如果206那台机器挂了,其它两个节点中某个会成为主节点,mongos会自动连接到主节点!

     

    七.添加分片

     

    1.激活数据库分片

    db.runCommand( { enablesharding : "" } );

    如:db.runCommand( { enablesharding : "" } );

     

    插入测试数据:

    激活数据库:


    通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard,一旦激活数据库分片,数据库中不同的collection 将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对 collection作些操作!

     

    2.添加索引

    必须加索引,不然不能对collections分片!

    3.Collecton分片

    要使单个collection也分片存储,需要给collection指定一个分片key,通过以下命令操作:

    db.runCommand( { shardcollection : "",key : }); 

     

    PS: 

    1). 操作必须切换到admin数据库下

    2). 分片的collection系统要创建好索引

    3). 分片的collection只能有一个在分片key上的唯一索引,其它唯一索引不被允许

     

    4.查看分片状态

     

     些时分片没有发生变化!

    再插入比较多的数据:

     

    当再次插入大量数据时。。自动分片处理了!!所以OK!!!

     

    八.停止所有服务脚本

    九.分片管理

    1.listshards:列出所有的Shard 

  • >use admin 
  • >db.runCommand({listshards:1}) 
  • 2.移除shard 

    对于移除的分片后,我们再加入相同分片时,美国服务器,会加不进去,可以按如下方法进行: 

     要做的就是删除shards表中的信息,把移除的shard键值删除掉!再重新加入shard

    如:db.shards.remove({"_id":"shard2"})

     

    3.查看Sharding信息

    > printShardingStatus()

     

    PRIMARY> db.system.replset.find()

    PRIMARY> rs.isMaster()

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    关于mongos接入高可用的介绍请看下回分解!!!!

    本文出自 “->” 博客,转载请与作者联系!

    ,虚拟主机
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    作曲家を使用して、推奨システムのジレンマを解決する:Andres-Montanez/推奨 作曲家を使用して、推奨システムのジレンマを解決する:Andres-Montanez/推奨 Apr 18, 2025 am 11:48 AM

    eコマースのWebサイトを開発するとき、私は困難な問題に遭遇しました。ユーザーにパーソナライズされた製品の推奨事項を提供する方法です。当初、私はいくつかの簡単な推奨アルゴリズムを試しましたが、結果は理想的ではなく、ユーザーの満足度も影響を受けました。推奨システムの精度と効率を改善するために、より専門的なソリューションを採用することにしました。最後に、Andres-Montanez/Adcumentations Bundleを介してAndres-Montanez/Bundleをインストールしました。これは、問題を解決しただけでなく、推奨システムのパフォーマンスを大幅に改善しました。次の住所から作曲家を学ぶことができます。

    DebianでMongoDB自動拡張を構成する方法 DebianでMongoDB自動拡張を構成する方法 Apr 02, 2025 am 07:36 AM

    この記事では、自動拡張を実現するためにDebianシステムでMongodbを構成する方法を紹介します。主な手順には、Mongodbレプリカセットとディスクスペース監視のセットアップが含まれます。 1。MongoDBのインストール最初に、MongoDBがDebianシステムにインストールされていることを確認してください。次のコマンドを使用してインストールします。sudoaptupdatesudoaptinstinstall-yymongodb-org2。mongodbレプリカセットMongodbレプリカセットの構成により、自動容量拡張を達成するための基礎となる高可用性とデータ冗長性が保証されます。 Mongodbサービスを開始:Sudosystemctlstartmongodsudosys

    DebianでMongodbの高可用性を確保する方法 DebianでMongodbの高可用性を確保する方法 Apr 02, 2025 am 07:21 AM

    この記事では、Debianシステムで非常に利用可能なMongoDBデータベースを構築する方法について説明します。データのセキュリティとサービスが引き続き動作し続けるようにするための複数の方法を探ります。キー戦略:レプリカセット:レプリカセット:レプリカセットを使用して、データの冗長性と自動フェールオーバーを実現します。マスターノードが失敗すると、レプリカセットが自動的に新しいマスターノードを選択して、サービスの継続的な可用性を確保します。データのバックアップと回復:MongoDumpコマンドを定期的に使用してデータベースをバックアップし、データ損失のリスクに対処するために効果的な回復戦略を策定します。監視とアラーム:監視ツール(プロメテウス、グラファナなど)を展開して、MongoDBの実行ステータスをリアルタイムで監視し、

    MongoDBデータベースパスワードを表示するNAVICATの方法 MongoDBデータベースパスワードを表示するNAVICATの方法 Apr 08, 2025 pm 09:39 PM

    Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

    Centos Mongodbバックアップ戦略とは何ですか? Centos Mongodbバックアップ戦略とは何ですか? Apr 14, 2025 pm 04:51 PM

    MongoDB効率的なバックアップ戦略の詳細な説明CENTOSシステムでは、この記事では、データセキュリティとビジネスの継続性を確保するために、CENTOSシステムにMongoDBバックアップを実装するためのさまざまな戦略を詳細に紹介します。 Dockerコンテナ環境でのマニュアルバックアップ、タイミング付きバックアップ、自動スクリプトバックアップ、バックアップメソッドをカバーし、バックアップファイル管理のベストプラクティスを提供します。マニュアルバックアップ:MongoDumpコマンドを使用して、マニュアルフルバックアップを実行します。たとえば、Mongodump-Hlocalhost:27017-U Username-P Password-Dデータベース名-O/バックアップディレクトリこのコマンドは、指定されたデータベースのデータとメタデータを指定されたバックアップディレクトリにエクスポートします。

    Debian Mongodbでデータを暗号化する方法 Debian Mongodbでデータを暗号化する方法 Apr 12, 2025 pm 08:03 PM

    DebianシステムでMongoDBデータベースを暗号化するには、次の手順に従う必要があります。ステップ1:MongoDBのインストール最初に、DebianシステムがMongoDBをインストールしていることを確認してください。そうでない場合は、インストールについては公式のMongoDBドキュメントを参照してください:https://docs.mongodb.com/manual/tutorial/install-mongodb-onedbian/-step 2:暗号化キーファイルを作成し、暗号化キーを含むファイルを作成し、正しい許可を設定します。

    CentosでGitLabのデータベースを選択する方法 CentosでGitLabのデータベースを選択する方法 Apr 14, 2025 pm 04:48 PM

    gitlabデータベース展開ガイドcentosシステム適切なデータベースの選択は、gitlabを正常に展開するための重要なステップです。 GitLabは、MySQL、PostgreSQL、MongoDBなど、さまざまなデータベースと互換性があります。この記事では、これらのデータベースを選択して構成する方法を詳細に説明します。データベース選択の推奨MYSQL:広く使用されているリレーショナルデータベース管理システム(RDBMS)。安定したパフォーマンスを備えており、ほとんどのGitLab展開シナリオに適しています。 POSTGRESQL:強力なオープンソースRDBMSは、大規模なデータセットの処理に適した複雑なクエリと高度な機能をサポートしています。 Mongodb:人気のNoSQLデータベース、海の扱いが上手です

    Mongodbでユーザーをセットアップする方法 Mongodbでユーザーをセットアップする方法 Apr 12, 2025 am 08:51 AM

    MongoDBユーザーを設定するには、次の手順に従ってください。1。サーバーに接続し、管理者ユーザーを作成します。 2。ユーザーアクセスを許可するデータベースを作成します。 3. CreateUserコマンドを使用してユーザーを作成し、その役割とデータベースアクセス権を指定します。 4. Getusersコマンドを使用して、作成されたユーザーを確認します。 5.オプションで、特定のコレクションに他のアクセス許可または付与ユーザーの権限を設定します。

    See all articles