mongodb3.4.4レプリカセットのインストール、スライス、およびいくつかの問題(一)


余計なことは言わない
3台の機械.
host1,host2,host3
公式インストールドキュメントの表示https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
ソースファイルの編集
vim/etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB 
Repositorybaseurl=gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

インストール
yum install -y mongodb-org

私は3台の仮想マシンでやったので、ホストは実は1つなので、3つのポートを配置しました.
注意:mongodのプロファイルはyamlファイルフォーマットに従います!
[root@vultr ~]# cat /etc/mongod.conf 
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.


#security:
#keyFile = /opt/key/autokey
#operationProfiling:

#replication:
replication:
   oplogSizeMB: 1000
   replSetName: rstest
#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

基本的にはデフォルト構成で、dbdataの位置とlogディレクトリは具体的な状況を見て、適宜修正して、bindipのデフォルトは開いて、ログアウトして、さもなくばmongoはローカルアクセスしかできません
開始
mongod -f/etc/mongod.conf
このとき任意に1台のmongodに入ってコピーセットの初期化を行うことができます
mongoアクセス、デフォルトは27017ポートですが、ポートを変更するとmongo ip:port方式になります
まず構成をロード
config={_id:"rstest",members:[{_id:0,host:"host1:port"},{_id:1,host:"host2:port"},{_id:2,host:"host3:port"}]}
##_id               

レプリカセットの初期化
rs.initiate(config)

ここで注意すべき点は、各mongodbの間の連通性を保証し、各mongoと空のデータであることである.そうしないと、レプリカセットを作成する際にエラーが発生し、データベースが空でない場合は、まずレプリカセットを削除し、dbを削除しなければならない.dropDatabase()
最終構成の有効化
rs.reconfig(config)

日常的な横方向の拡張と伸縮、およびプライマリノードの手動構成
PRIMARY> rs.add("127.0.0.1:27018");   //    
PRIMARY> rs.remove("127.0.0.1:27018"); //   
          rs.reconfig(config)     
rs.conf()//     
config=rs.conf() //    
config.members[1].priority = N // N = 1 100          
rs.reconfig(config) //     ,   host2        

選挙のアルゴリズム:
mongodbクラスタの選択局アルゴリズムは実はzookeeperとあまり差がなく、違いはbullyアルゴリズムを使用していることであり、mongodはまず誰が最後にデータ操作を行ったのかを比較し、つまり、誰のデータが最新で、データが同じであれば、誰が最も短い時間で主ノードになることができるのかを比較し、選挙過程はzookeeperと同じで、k-vとは異なるだけである.
また,クラスタの選挙過程において,あるスレーブノードをマスターノードにしたくない場合には,
rs.freeze(120) //            ,     120             ,