Centos7 搭建MongoDB4.0复制集教程(最新、完整、超详细)

文章目录

  • 架构
  • 搭建环境
  • 下载安装
    • 1. 下载rpm包
    • 2. 安装
    • 3. 检查安装成功
  • 单机授权
    • 1. 启动三台单机节点
    • 2. 主节点单机授权用户
  • 集群部署
    • 1. 配置密钥文件
    • 2. 修改配置文件
    • 3. 重启服务
    • 4. 主节点配置集群
  • 集群测试
  • Mongo常用命令CHEETSHEET

架构

搭建环境

mongodb版本:4.0.6
华为云服务器Centos7.5

ip 角色
192.168.1.13
192.168.1.109
192.168.1.159 监听者

下载安装

1. 下载rpm包

官网下载地址

  • 服务端mongod:mongodb-org-server
  • 客户端mongo:mongodb-org-shell
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-server-4.0.6-1.el7.x86_64.rpm
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-shell-4.0.6-1.el7.x86_64.rpm

2. 安装

rpm -ivh mongodb-org-server-4.0.6-1.el7.x86_64.rpm
rpm -ivh mongodb-org-shell-4.0.6-1.el7.x86_64.rpm

3. 检查安装成功

mongod -version
mongo -version

单机授权

1. 启动三台单机节点

修改配置,启动三台机器mongod服务端

#修改dbpath到指定目录 
#修改bindid为0.0.0.0
vim /etc/mongod.conf
#启动mongod
mongod  -f /etc/mongod.conf

修改后的配置文件

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

# Where and how to store data.
# 数据目录 分配给一个大磁盘 默认为/data/db
storage:
  dbPath: /data/mongodb
  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
  timeZoneInfo: /usr/share/zoneinfo

# network interfaces
# 此处bindIp修改为0.0.0.0,否则无法通信
net:
  port: 27017
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
  
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:

bindIp修改为0.0.0.0,否则无法通信!

2. 主节点单机授权用户

登录主节点(13)

#进入mongo命令行
mongo
#shell内输入
use admin;
db.createUser({user:"admin",pwd:"adminpassword",roles:[{role:"root",db:"admin"},{role:"userAdminAnyDatabase",db:"admin"}]});

admin用户必须单机节点插入!用于之后创建集群时的授权
因为配置集群时需要授权,但那时无法创建admin用户

集群部署

1. 配置密钥文件

主节点生成秘钥文件mongoKeyFile

#进入dbpath目录
cd /data/mongodb
openssl rand -base64 753 > mongoKeyFile
chmod 600 yourKeyFile

将该文件拷贝到其他两台服务器对应位置,实现文件授权

2. 修改配置文件

修改3个节点的配置文件为集群配置vim /etc/mongod.conf

security:
  authorization: enabled
  #指向秘钥文件
  keyFile: /data/mongodb/mongoKeyFile
replication:
  #oplogSize的大小,单位为M,建议空闲磁盘的5%
  oplogSizeMB: 10240
  #复制集的名称,需要记住
  replSetName: myReplSet

3. 重启服务

重启

#关闭
mongod --shutdown -f /etc/mongod.conf
#启动
mongod  -f /etc/mongod.conf

4. 主节点配置集群

主节点(13)登录mongo
mongo

# 使用admin
use admin;
# 鉴权
db.auth('admin','adminpassword');
# 配置集群的主从节点,_id为之前配置的复制集名
var cfg={_id:'myReplSet',members:[{_id:0,host:'192.168.1.13:27017'},{_id:1,host:'192.168.1.109:27017'}]}
# 初始化,成功返回1
rs.initiate(myReplSet);
# 添加arbiter节点
rs.addArb("192.168.1.159:27017");
# 查看集群状态,应该有3个节点
rs.status()

集群测试

主节点(13)登录mongo
此时mongo shell 显示为myReplSet:PRIMARY>

# 使用admin
use admin;
# 鉴权
db.auth('admin','adminpassword');
# 创建数据库
use test;
# 创建用户
db.createUser({user:"testadmin",pwd:"testpassword",roles:[{role:"dbOwner",db:"test"}]});
# 插入数据
db.testCol.insert({id:1,name:'monkey'});

登录从节点,查询是否有主库插入的数据
此时mongo shell 显示为myReplSet:SECONDARY>

# 使用test
use test;
# 鉴权
db.auth('testdba','testpassword');
# 允许读
rs.slaveOk();
# 查询
db.testCol.find();

如果数据同步到了从节点,则复制集搭建成功

Mongo常用命令CHEETSHEET

# mongod
mongod -version
mongod --shutdown -f /etc/mongod.conf
mongod  -f /etc/mongod.conf
# mongo
mongo -version
mongo x.x.x.x:27017/admin -uadmin

# mongo shell
show dbs;
use test;
db.createUser({user:"testadmin",pwd:"testpassword",roles:[{role:"dbOwner",db:"test"}]});
db.auth('testadmin','testpassword');
db.testCol.insert({id:1,name:'monkey'});
db.testCol.find();

你可能感兴趣的:(数据库)