mongodb分片集群原理

MongoDB分片集群原理是将数据分布在多个服务器上,通过哈希函数将数据分配到不同的分片中,实现水平扩展和负载均衡。

在本文中,我们将详细介绍如何在CentOS 8上搭建MongoDB 4.4分片集群,MongoDB是一种非常流行的NoSQL数据库,它具有高性能、高可用性和易扩展性等特点,分片是MongoDB的一种数据分布策略,它将数据分布在多个服务器上,以提高查询性能和存储容量。

环境准备

1、系统环境:CentOS 8

mongodb分片集群原理

2、MongoDB版本:4.4

3、MongoDB分片集群节点数量:3个

安装MongoDB

1、更新系统软件包:

sudo yum update y

2、添加MongoDB官方仓库:

sudo yum install y mongodborg

3、启动MongoDB服务:

mongodb分片集群原理

sudo systemctl start mongod

4、设置MongoDB开机自启:

sudo systemctl enable mongod

配置MongoDB副本集

1、创建一个用于存放配置文件的目录:

sudo mkdir p /etc/mongodb

2、复制一份默认的配置文件模板:

sudo cp /usr/share/mongodborg/mongodborg4.4/bin/templates/mongod.conf /etc/mongodb/mongod.conf

3、修改配置文件,设置副本集参数:

开启副本集模式
replication: true
副本集名称
replSetName: "rs0"
数据存储目录
dbPath: "/var/lib/mongodb"
日志文件路径
logpath: "/var/log/mongodb/mongod.log"
端口号,默认为27017
port: 27017

4、创建三个数据目录:

mongodb分片集群原理

sudo mkdir p /var/lib/mongodb/{1,2,3}

5、分别启动三个MongoDB实例:

sudo mongod config /etc/mongodb/mongod.conf fork port 27017 dbpath /var/lib/mongodb/1 logpath /var/log/mongodb/mongod1.log &
sudo mongod config /etc/mongodb/mongod.conf fork port 27018 dbpath /var/lib/mongodb/2 logpath /var/log/mongodb/mongod2.log &
sudo mongod config /etc/mongodb/mongod.conf fork port 27019 dbpath /var/lib/mongodb/3 logpath /var/log/mongodb/mongod3.log &

初始化副本集并添加节点

1、使用mongo命令连接到任意一个MongoDB实例:

mongo host <hostname> port 27017 u <username> p <password> authenticationDatabase admin sslMode requireSSL tlsCAFile /etc/ssl/certs/cabundle.crt tlsAllowInvalidHostnames tlsCertificateKeyFile /etc/ssl/private/<hostname>.key tlsCertificateKeyFilePassword <password> tlsCertificateFile /etc/ssl/certs/<hostname>.crt authenticationMechanism MONGODBX509 pemKeyFile /etc/ssl/private/<hostname>.pem pemKeyPassword <password> setParameter failIndexKeyTooLong=false eval "rs.initiate()" authenticationDatabase admin u <username> p <password> <database> <collection> <json_object> { "_id": "rs0", "members": [ { "_id": 0, "host": "<hostname1>:27017", "arbiterOnly": false }, { "_id": 1, "host": "<hostname2>:27018", "arbiterOnly": false }, { "_id": 2, "host": "<hostname3>:27019", "arbiterOnly": false } ] }" #替换为实际的主机名、用户名、密码等信息,以及要操作的数据库和集合名。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/510500.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年5月23日 06:48
下一篇 2024年5月23日 06:50

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入