资讯专栏INFORMATION COLUMN

MongoDB数据库软件下载、主机环境配置及复制集群搭建

IT那活儿 / 2010人阅读
MongoDB数据库软件下载、主机环境配置及复制集群搭建
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

MongoDB软件下载

1.1 MongoDB到官方网站下载
https://www.mongodb.com/try/download/community
服务器版本:CentOS Linux release 7.9.2009 (Core)
本次下载的是MongoDB 4.4.18社区版:
1.2 MongoDB 工具下载
其中包含mongodump、mongorestore、mongostat、mongotop等。
以上就是MongoDB软件和命令行工具的下载过程:


主机环境配置

2.1 创建mongo主机用户
useradd mongo
echo "password"|passwd mongo --stdin 1>/dev/null;
2.2 解压安装包并重命名
在/opt目录下新建mongodb目录并修改权限:
mkdir -p /opt/mongodb
cd /opt/
chown mongo:mongo mongodb
将MongoDB软件和工具解压到/opt/mongodb目录:
su - mongo
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.18.tgz -C /opt/mongodb
tar -zxvf mongodb-database-tools-rhel70-x86_64-100.6.1.tgz -C /opt/mongodb
修改目录名字为mongodb_4.4.18,方便后期升级维护:
cd /opt/mongodb
mv mongodb-linux-x86_64-rhel70-4.4.18 mongodb_4.4.18
将工具复制到mongodb_4.4.18目录后删除原目录:
cd mongodb-database-tools-rhel70-x86_64-100.6.1
scp -r * /opt/mongodb/mongodb_4.4.18/
cd /opt/mongodb/
rm -rf mongodb-database-tools-rhel70-x86_64-100.6.1

exit
创建软连接:
ln -s /opt/mongodb/mongodb_4.4.18 /usr/local/mongodb
设置全局环境变量:
echo "############ for mongo ############">>/etc/profile
echo "if [ $USER = mongo ]; then">>/etc/profile
echo "export PATH=$PATH:/usr/local/mongodb/bin">>/etc/profile
echo "fi">>/etc/profile
source /etc/profile
2.3 配置YUM并安装依赖包
1)服务器挂载镜像
mkdir -p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/* /etc/yum.repos.d/backup
touch /etc/yum.repos.d/CentOS7-source.repo
echo "[CentOS7]">>/etc/yum.repos.d/CentOS7-source.repo
echo "name=local_yum">>/etc/yum.repos.d/CentOS7-source.repo
echo "baseurl=file:///mnt">>/etc/yum.repos.d/CentOS7-source.repo
echo "gpgcheck=0">>/etc/yum.repos.d/CentOS7-source.repo
echo "enabled=1">>/etc/yum.repos.d/CentOS7-source.repo
执行yum repolist结果如下图说明配置成功:
2)安装MongoDB需要的依赖包
yum install -y libcurl xz-libs cyrus-sasl cyrus-sasl-gssapi 
cyrus-sasl-plain krb5-libs libcurl libpcap lm_sensors-libs
net-snmp net-snmp-agent-libs openldap openssl rpm-libs
tcp_wrappers-libs telnet sysstat iotop dstat nmap net-tools
以下截图说明全部已安装:
2.4 服务器环境配置
所有参数配置都需要参考官方文档和服务器自身情况进行合理配置。

1)官方文档连接如下,可选择需要安装的MongoDB版本

https://www.mongodb.com/docs/v4.4/administration/production-checklist-operations/

本次安装环境:

  • 数据库架构: 两副本复制集
  • 数据库版本: MongoDB 4.4.18
  • 服务器: CentOS 7.9
  • 内存: 16 GB
  • 存储: 500 GB
2)配置limits
echo "############ for mongo ############">>/etc/security/limits.conf
echo "mongo soft nofile 64000">>/etc/security/limits.conf
echo "mongo hard nofile 64000">>/etc/security/limits.conf
echo "mongo soft nproc 32000">>/etc/security/limits.conf
echo "mongo hard nproc 32000">>/etc/security/limits.conf
验证参数是否配置成功:
su - mongo
ulimit -f
ulimit -t
ulimit -v
ulimit -l
ulimit -n
ulimit -m
ulimit -u
如下图所示,说明配置成功:
3)内核参数修改
echo "############ for mongo ############">>/etc/sysctl.conf
echo "kernel.shmall = 536870912">>/etc/sysctl.conf
echo "kernel.shmmax = 12884901888">>/etc/sysctl.conf
echo "net.ipv4.conf.all.accept_redirects=0">>/etc/sysctl.conf
echo "vm.swappiness=5">>/etc/sysctl.conf
echo "vm.min_free_kbytes = 512000">>/etc/sysctl.conf
echo "vm.dirty_ratio = 80">>/etc/sysctl.conf
echo "vm.dirty_expire_centisecs = 500">>/etc/sysctl.conf
echo "vm.dirty_writeback_centisecs = 100">>/etc/sysctl.conf
echo "fs.file-max=98000 ">>/etc/sysctl.conf
echo "kernel.pid_max=64000 ">>/etc/sysctl.conf
echo "vm.max_map_count=12800">>/etc/sysctl.conf
echo "kernel.threads-max=64000">>/etc/sysctl.conf
执行sysctl -p /etc/sysctl.conf使配置生效:
4)禁用numa
官网解释如下:
查看配置情况:
dmesg | grep -i numa
如果有多个nodes则需要关闭numa
echo 0 > /proc/sys/vm/zone_reclaim_mode
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

cat /etc/default/grub |grep GRUB_CMDLINE_LINUX|grep ^[^#]
sed -i /GRUB_CMDLINE_LINUX/ s/quiet/quiet numa=off transparent_hugepage=never elevator=noop/ /etc/default/grub
重新生成grub配置文件:
grub2-mkconfig -o /boot/grub2/grub.cfg

参数解释:

  • numa=off  :关闭numa,需要重启主机。
  • transparent_hugepage=never  :关闭透明大页,需要重启主机。
  • elevator=noop  :设置磁盘调度,本服务器为虚拟机,官网建议使用noop模式。
5)磁盘readahead配置并关闭tuned
以下是官网截图,建议将磁盘调度策略修改为8-32之间,本次修改为8;关闭tuned服务。
获取当前配置:
sudo blockdev --report
/dev/sdb为500 GB的数据磁盘,修改预读值
sudo blockdev --setra 8 /dev/sdb
设置开机自动修改预读值:
echo "/sbin/blockdev --setra 8 /dev/sdb">>/etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
cat /etc/rc.d/rc.local|grep ^[^#]
如下图所示,sdb的原有值为8192,修改后为8:
6)磁盘挂载项修改
官方建议使用XFS文件系统,挂载项使用noatime选项:
mount -t xfs -o noatime -o nodiratime /dev/sdb /data
设置开机自动挂载:
echo "/dev/mapper/vgdata-data /data xfs noatime,nodiratime 0 0">>/etc/fstab
关闭tuned服务:
systemctl status tuned.service
systemctl stop tuned.service
systemctl disable tuned.service
设置时间同步:
yum -y install chrony
systemctl enable chronyd
systemctl start chronyd
echo "server 时钟服务器IP iburst">>/etc/chrony.conf
systemctl restart chronyd
systemctl status chronyd
关闭防火墙:
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
sed -i /SELINUX/ s/enforcing/disabled/ /etc/selinux/config

以上为MongoDB主机环境配置过程,配置过程需要根据实际环境进行修改。


MongoDB复制集群搭建

上面介绍了MongoDB软件和工具下载、软件路径和目录规划、主机参数配置等;配置完成后就可以搭建MongoDB 单机、复制集、分片集群,本次介绍MongoDB复制集的搭建:
1)服务器上配置(各节点除ip不一致外,其他都一致)
创建MongoDB的日志、数据、pid存放目录:
su – root
mkdir -p /data/mgmongo/log
mkdir -p /data/mgmongo/pid
mkdir -p /data/mgmongo/mongod_test
chown mongo:mongo -R /data/mgmongo
创建MongoDB配置文件目录和文件:
cd /etc/
mkdir mongodb
chown mongo:mongo mongodb
su - mongo
cd /etc/mongodb
touch mongo_test.conf
修改配置文件:
systemLog:
verbosity: 0
destination: file
path: "/data/mgmongo/log/mongod_test.log"
logAppend: true
logRotate: rename

processManagement:
fork: true
pidFilePath: "/data/mgmongo/pid/mongo_test.pid"
# port端口号,maxIncomingConnections最大连接数据:
net:
port: 27017
bindIpAll: true
maxIncomingConnections: 5000
unixDomainSocket:
enabled: true
pathPrefix: "/tmp"
# 启用登录认证,需要在创建root管理用户后启用:
#security:
#   keyFile: "/etc/mongodb/mongo_keyfile"
#   clusterAuthMode: keyFile
#   authorization: enabled

operationProfiling:
mode: slowOp
slowOpThresholdMs: 200
# dbPath 数据存放路径。
# cacheSizeGB需要根据实际情况修改,不配置默认是50%。
storage:
dbPath: "/data/mgmongo/mongod_test"
journal:
enabled: true
commitIntervalMs: 100
directoryPerDB: true
engine: wiredTiger
engineConfig:
cacheSizeGB: 12
#关闭MongoDB自带的监控工具。
cloud:
monitoring:
free:
state: off
# replSetName复制集名称。
replication:
oplogSizeMB: 2000
replSetName: rs_test
enableMajorityReadConcern: false
三台服务器配置完成后,启动MongoDB:
/usr/local/mongodb/bin/mongod -f /etc/mongodb/mongo_test.conf
/usr/local/mongodb/bin/mongo --host 服务器IP --port 27017
MongoDB复制集配置, _id为复制集名称:
rs.initiate(
  {
    _id : "rs_test",
    members: [
      { _id : 0, host : "服务器IP1:27017",priority:1 },
      { _id : 1, host : "服务器IP2:27017",priority:1 },
      { _id : 2, host : "服务器IP3:27017",priority:1 }
    ]
  }
)
配置显示OK,过几秒后该节点会变成主库,说明配置成功。
2)创建root管理用户
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [{ role: "root", db: "admin" }]
  }
)
3)启用密码验证
创建keyfile:
cd /etc/mongodb
touch mongo_keyfile
生成key:
openssl rand -base64 756 > /etc/mongodb/mongo_keyfile
chmod 400 /etc/mongodb/mongo_keyfile
同步到其余2台服务器。
4)三节点关闭MongoDB数据库
关闭顺序为:先备后主,启用顺序为,先主后备。
/usr/local/mongodb/bin/mongod -f /etc/mongodb/mongo_test.conf –shutdown
修改配置文件,取消启用登录认证相关的注释:
5)启用MongoDB数据库
/usr/local/mongodb/bin/mongod -f /etc/mongodb/mongo_test.conf
以上为MongoDB复制集搭建过程,搭建完成后可以用rs.status()查看数据库状态。


本文作者:张红久(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129127.html

相关文章

  • 使用mlaunch和m快速搭建MongoDB测试集群

    摘要:本文中我们就来聊一聊如何使用和两个工具快速搭建一个测试集群。注意的目的旨在为我们快速搭建测试环境,绝对不应该用于生产环境的使用上。准备工作安装是用于的一系列工具,就是其中用于快速启动的一部分。以下这些参数是我们经常使用的启动一个复制集。 前言 不知道大家在使用MongoDB的时候有没有遇到突然想要一个集群但是手边又没有的时候?特别是我已经升级到4.0了,突然想要一个3.2的集群怎么办?...

    wangzy2019 评论0 收藏0
  • ElasticSearch6.4.0集群搭建

    摘要:虚拟内存区域是一个连续的虚拟地址空间区域。四启动集群首先切换为用户,并启动服务器上的节点注意参数表示以后台进程启动,默认情况下会在控制台输出日志。 最近在学习ES相关内容,为了方便自己使用,在本地虚拟机上搭建了一个3节点的ES集群,在搭建过程中,遇到了许多坑,网上的资料也比较分散,所以详细整理一下搭建过程发出来供参考。搭建过程中,由于是两台虚拟机,所以有一种很快速的办法,搭建一台,然后...

    MrZONT 评论0 收藏0
  • MongoDB 客户端连接选项

    摘要:原文保持更新及修正基于的客户端配置选项,其它驱动大同小异。连接池中连接的最大使用寿命毫秒。设置该选项后,客户端将进行以下行为以副本集模式连接,并根据给定的服务器发现副本集的所有成员。该选项可以和配合使用。编解码器用于对进行编码和解码。 原文保持更新及BUG修正:http://kweny.io/mongodb-clien... 基于 MongoDB Java Driver 3.8.1 ...

    yexiaobai 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<