MongoDB集群升级扩容操作

本文详细描述了一个MongoDB集群从3.0到4.2.1的升级过程,包括备份配置文件、停止服务、检查磁盘空间、系统配置优化、安装新版本MongoDB、还原配置、启动服务等步骤。同时,文章提到了硬件升级为RAID10以提升读写性能,并涉及系统参数调整如关闭THP和优化文件系统设置以提高性能。

目录

本文重点描述:

1.当前MongoDB集群备份conf文件:

2.停止MongoDB3主机服务:

3.查看当前数据文件大小:

4.安装系统与原系统一致:

5.优化调整系统配置:

修改系统文件局兵书和最大用户进程数限制

关闭磁盘文件的atime,禁止系统对文件的访问时间更新会有效提高文件读取性能

关闭THP(注意重新会失效)

6.MongoDB3主机上安装MongoDB-4.2.1版本:

7.还原备份conf文件:

8.使用numactl命令启动MongoDB实例(禁用NUMA):

本文重点描述:

        MongoDB集群模式采用3台物理服务器,硬件配置:256G内存,3*3TSSD RAID5;现有磁盘空间使用量75%已经达到空间阈值;需要升级磁盘空间以及更换raid10(这里官方推荐读写性能更高),硬件磁盘升级为:6*3TSSD RAID10。

        MongoDB集群模式{主备仲裁}说明:

MongoDB主机1MongoDB主机2MongoDB主机3
shard1-Primaryshard1-Secondaryshard1-arbiter
shard2-arbitershard2-Primaryshard2-Secondary
shard3-Secondaryshard3-arbitershard3-Primary
configconfigconfig
mongosmongosmongos

Replica Set :

主服务器(Primary) 包含了所有的改变操作(写)的日志。

副本服务器(Secondary)集群包含有所有的主服务器数据,因此当主服务器挂掉了,就会在副本服务器上重新选取一个成为主服务器。

仲裁者(arbiter),仲裁者不存储数据,只是负责通过心跳包来确认集群中集合的数量,并在主服务器选举的时候作为仲裁决定结果。

可以设priority,priority越高优先级越高

建议centos6.9以上系统安装!

建议Linux内核版本2.6.36以上版本,内核较低版本需要自行编译内核

1.当前MongoDB集群备份conf文件:

开始执行升级操作

[root@mongo3 data]# ll /data/mongodb/conf/

total 20

-rw-r--r--. 1 root root  986 Nov 16  2019 config.conf

-rw-r--r--. 1 root root 1040 Nov 16  2019 mongos.conf

-rw-r--r--. 1 root root 1074 Nov 17  2019 shard1.conf

-rw-r--r--. 1 root root 1018 Nov 17  2019 shard2.conf

-rw-r--r--. 1 root root 1074 Nov 17  2019 shard3.conf

查看分片信息

shard1配置信息

Shard2配置信息

Shard3配置信息

shard1:PRIMARY> rs.conf()

{

         "_id" : "shard1",

         "version" : 1,

内容忽略.........

}

shard2:PRIMARY> rs.conf()

{

         "_id" : "shard2",

         "version" : 1,

内容忽略.........

}

shard3:PRIMARY>  rs.conf()

{

         "_id" : "shard3",

         "version" : 366375,

内容忽略.........

}

2.停止MongoDB3主机服务:

检查业务访问状况是否有异常!!!

[root@mongo3 data]# mongod -f /data/mongodb/conf/config.conf -shutdown

killing process with pid: 29096

[root@mongo3 data]# mongod -f /data/mongodb/conf/shard1.conf -shutdown

killing process with pid: 29608

[root@mongo3 data]# mongod -f /data/mongodb/conf/shard2.conf -shutdown

killing process with pid: 29661

[root@mongo3 data]# mongod -f /data/mongodb/conf/shard3.conf -shutdown

killing process with pid: 29762

mongod -f /data/mongodb/conf/config.conf -shutdown

mongod -f /data/mongodb/conf/shard1.conf -shutdown

mongod -f /data/mongodb/conf/shard2.conf -shutdown

mongod -f /data/mongodb/conf/shard3.conf -shutdown

mongos需要手动kill

3.查看当前数据文件大小:

[root@mongo3 ~]# du -sh /data/mongodb/data/*

820M        /data/mongodb/data/config

508M        /data/mongodb/data/shard1

3.0T /data/mongodb/data/shard2

2.1T /data/mongodb/data/shard3

4.安装系统与原系统一致:

cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

关闭操作系统,扩充SSD硬盘,重新做raid10,最后重做系统7.2

5.优化调整系统配置:

hostname mongo3

cat  /etc/hostname

mongo3

vim  /etc/sysctl.conf

vm.swappiness = 1

#必须关闭,开启会影响网卡启动

systemctl stop NetworkManager

systemctl disable NetworkManager

修改系统文件局兵书和最大用户进程数限制

cat /etc/security/limits.conf

*               soft    nofile            65536

*               hard    nofile            65536

关闭磁盘文件的atime,禁止系统对文件的访问时间更新会有效提高文件读取性能

/etc/fstab文件增加参数:

/dev/mapper/centos-data /data                   xfs     defaults,noatime,nodiratime        0 0

修改完成后重新mount:

mount -o remount /data

关闭THP(注意重新会失效)

echo never > /sys/kernel/mm/transparent_hugepage/enabled

echo never > /sys/kernel/mm/transparent_hugepage/defrag

永久生效:

vim /etc/rc.d/rc.local

if test -f /sys/kernel/mm/transparent_hugepage/enabled;then

         echo never > /sys/kernel/mm/transparent_hugepage/enabled

fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag;then

         echo never > /sys/kernel/mm/transparent_hugepage/defrag

fi

结果显示:

[root@mongo3 mongodb]# cat  /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]

[root@mongo3 mongodb]# cat  /sys/kernel/mm/transparent_hugepage/defrag

always madvise [never]

6.MongoDB3主机上安装MongoDB-4.2.1版本:

关闭系统防火墙,会影响集群服务器之间通讯或者添加对应端口策略

systemctl stop firewalld.service

systemctl status firewalld.service

systemctl disable firewalld.service

创建MongoDB服务用户:

         groupadd mongo

         useradd -g mongo mongo

         echo “dfger435.” | passwd --stdin mongo

cd /usr/local/

tar zxf mongodb-linux-x86_64-rhel70-4.2.1.tgz

mv mongodb-linux-x86_64-rhel70-4.2.1 /usr/local/mongodb

mkdir -p /data/mongodb/conf

mkdir -p /data/mongodb/data/config

mkdir -p /data/mongodb/data/shard1

mkdir -p /data/mongodb/data/shard2

mkdir -p /data/mongodb/data/shard3

mkdir -p /usr/local/mongodb/logs

配置环境变量:

vim /etc/profile

 export PATH=/usr/local/mongodb/bin:$PATH

         source /etc/profile

7.还原备份conf文件:

备份文件 目标文件路径:/data/mongodb/conf

8.使用numactl命令启动MongoDB实例(禁用NUMA):

numactl命令这里不在阐述自行百度功能

配置文件权限:

chown -R mongo:mongo /data/

chown -R mongo:mongo /usr/local/mongodb

mkdir /opt/shell

chown -R mongo:mongo /opt/shell

/opt/shell #目录下是MongoDB监控脚本服务

切换用户启动服务:

su mongo

环境安装:

yum install numactl -y

服务器启动

numactl --interleave=all mongod -f /data/mongodb/conf/config.conf

numactl --interleave=all mongos -f /data/mongodb/conf/mongos.conf

numactl --interleave=all mongod -f /data/mongodb/conf/shard1.conf

numactl --interleave=all mongod -f /data/mongodb/conf/shard2.conf

numactl --interleave=all mongod -f /data/mongodb/conf/shard3.conf

numactl –hardware

numactl --hardware

available: 2 nodes (0-1)

node 0 cpus: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38

node 0 size: 130978 MB

node 0 free: 644 MB

node 1 cpus: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39

node 1 size: 131072 MB

node 1 free: 158 MB

node distances:

node   0   1

  0:  10  21

  1:  21  10

1、至此MongoDB3主机部署成功,服务启动成功,并开始同步数据,同步完成节点自动上线并支持数据查询更新操作。

2、MongoDB3数据同步完成可以通过磁盘空间判断或者表数据量统计排查结果。

3、以上确认没有问题,按照以上操作MongoDB2和MongoDB3完成整个集群磁盘升级。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值