CentOS7.4ビルドmongodb4.2.8レプリカセット

レプリカセットノードの概要

1)データノード-------マスターノード

     マスターノードは、データの読み取りおよび書き込み操作を担当し、書き込み操作をOpLog(mongo非表示ライブラリローカルのoplogコレクション)に記録します。

2)データノード-スレーブノード

     災害復旧のためにマスターノードのデータをコピーします。マスターノードがダウンしている場合、新しいマスターノードが再選出されます。スレーブノードは、ルート権限を持っていても書き込み操作を実行できません(MySQLとは異なります)。

3)投票ノード

            データの保存とコピーについては責任を負わず、投票についてのみ責任を負います。(注:理論的には、mongoレプリケーションセットには、1つのマスターノード、複数のスレーブノード、および複数の投票ノードを含めることができます)

作業の方法

1)クライアントドライバーがmongoデータベースをポイントします。書き込み時には、マスターノードでのみ実行されます。書き込まれた情報はoplogに記録されます。スレーブノードは、oplogに従って書き込み操作をスレーブノードにコピーします。 。

2)レプリケーションセットの非同期操作では、フラッシュディスクの効率やネットワークの問題の影響でスレーブノードに一定の遅延が発生するため、読み取り操作もデフォルトでマスターノードに送信されます。時間要件は高くありません。読み取り/書き込み分離を実現するためにスレーブノードを指すように構成できます。

環境の設定

1.インストールパッケージをダウンロードします。

cd /usr/local

mkdir mongos

cd mongos

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.8.tgz

2.インストールパッケージを解凍します

tar -zxvf  mongodb-linux-x86_64-rhel70-4.2.8.tgz
 
#修改文件解压后的文件名称
mv mongodb-linux-x86_64-rhel70-4.2.8 mongodb4.2.8

3.ディレクトリを作成します

cd mongodb4.2.8/
 
#在解压后的mongodb目录新建 data  log  config目录
mkdir data|mkdir log|mkdir config
 
#在data和config目录分别创建rs1  rs2 rs3目录
cd data && mkdir rs1|mkdir rs2|mkdir rs3
cd config && mkdir rs1|mkdir rs2|mkdir rs3

4.インスタンス起動構成を作成します

#由于开启认证所以要创建一个keyfile,并且拷贝到其他从节点
cd /usr/local/mongos/mongodb4.2.8/
openssl rand -base64 756 > config/autokey
chmod 400  config/autokey

cd config
cp autokey rs1
cp autokey rs2
cp autokey rs3
#分别在/usr/local/mongos/mongodb4.2.8/config/   rs1、rs2、rs3下创建配置文件 
touch mongod.cfg
 
#rs1配置mongod.cfg
dbpath=/usr/local/mongos/mongodb4.2.8/data/rs1        			 #mongo数据安装目录
logpath=/usr/local/mongos/mongodb4.2.8/log/rs1.log    			 #日志打印的目录
journal=true                                             #数据是否故障恢复
port=27017                                               #端口
replSet=rs                                               #复制集名称
logappend=true                                           #复制集日志是以追加的方式进行
fork = true                                              #是否后台启动
bind_ip=0.0.0.0                                          #绑定主机


#是否认证
auth = true
#存储引擎,有mmapv1、wiretiger、mongorocks
storageEngine=wiredTiger
keyFile=/usr/local/mongos/mongodb4.2.8/config/rs1/autokey


 
 
#rs2配置mongod.cfg
dbpath=/usr/local/mongos/mongodb4.2.8/data/rs2        			 #mongo数据安装目录
logpath=/usr/local/mongos/mongodb4.2.8/log/rs2.log    			 #日志打印的目录
journal=true                                             #数据是否故障恢复
port=27017                                               #端口
replSet=rs                                               #复制集名称
logappend=true                                           #复制集日志是以追加的方式进行
fork = true                                              #是否后台启动
bind_ip=0.0.0.0                                          #绑定主机


#是否认证
auth = true
#存储引擎,有mmapv1、wiretiger、mongorocks
storageEngine=wiredTiger
keyFile=/usr/local/mongos/mongodb4.2.8/config/rs2/autokey


 
 
#rs3配置mongod.cfg
dbpath=/usr/local/mongos/mongodb4.2.8/data/rs3        			 #mongo数据安装目录
logpath=/usr/local/mongos/mongodb4.2.8/log/rs3.log    			 #日志打印的目录
journal=true                                             #数据是否故障恢复
port=27017                                               #端口
replSet=rs                                               #复制集名称
logappend=true                                           #复制集日志是以追加的方式进行
fork = true                                              #是否后台启动
bind_ip=0.0.0.0                                          #绑定主机


#是否认证
auth = true
#存储引擎,有mmapv1、wiretiger、mongorocks
storageEngine=wiredTiger
keyFile=/usr/local/mongos/mongodb4.2.8/config/rs3/autokey

5.インスタンスを起動します

cd /usr/local/mongos/mongodb4.2.8

bin/mongod --config /usr/local/mongos/mongodb4.2.8/config/rs1/mongod.cfg 
bin/mongod --config /usr/local/mongos/mongodb4.2.8/config/rs2/mongod.cfg 
bin/mongod --config /usr/local/mongos/mongodb4.2.8/config/rs3/mongod.cfg 

#检查实例启动情况
ps -ef|grep mongo

6.レプリカセットクラスターに参加します

#使用命令行,进入到27017实例
bin/mongo -port 27017
 
#进入admin
use admin

#初始化一个副本集
rs.initiate()

#创建用户
db.createUser({ user: 'root', pwd: 'Aa123456..', roles: [{ role: "root", db: "admin" }]});

#登录
db.auth("root","Aa123456..") 
 
#查看副本集状态命令
rs.conf()
 
#加入secondary节点
rs.add("localhost:27001")
#期间可能会报错 Either all host names in a replica set configuration must be localhost references, or none must be; found 1 out of 2" 节点的host的限制导致的修改为localhost

conf=rs.conf()
conf.members[0].host='localhost:27017'
rs.reconfig(conf)
 
#加入投票节点
rs.addArb("localhost:27002")
 
#查看副本集状态
rs.status()

#没有问题后退出
 
#重要且必须, secondary节点允许读取操作在当前节点进行,否则从节点无法复制主节点的数据
#进入secondary实例
bin/mongo -port 27001
rs.slaveOk()

7.検証

#主节点
use test
db.createCollection('user')
db.user.insert({'name':'james'})
     
#从节点
use test
show collections
db.user.find()

 

おすすめ

転載: blog.csdn.net/qq_42407917/article/details/111595677