本文共 3100 字,大约阅读时间需要 10 分钟。
在实际应用中,MongoDB副本集和分片集群是确保数据高可用性和水平扩展的重要手段。本文将详细介绍如何部署副本集和分片集群的完整流程。
创建数据目录
创建以下目录结构:/data/example/firstset1/data/example/firstset2/data/example/firstset3
使用命令:
mkdir -p /data/example/firstset1 /data/example/firstset2 /data/example/firstset3
启动三个MongoDB实例
在不同的终端窗口启动以下命令:mongod --dbpath=/data/example/firstset1 --port 10001 --replSet firstset --oplogSize 700 --rest --fork --logpath=/data/example/firstset1/firstset1.log --logappend --nojournal --directoryperdb
同样启动其他两个实例,分别使用端口10002和10003。
初始化副本集
连接任意一个MongoDB实例,执行以下命令:mongo mongo01:10001/admin
输入以下配置并运行:
var config = { "_id": "firstset", "members": [ { "_id": 0, "host": "mongo01:10001" }, { "_id": 1, "host": "mongo01:10002" }, { "_id": 2, "host": "mongo01:10003" } ]};rs.initiate(config);
初始化成功后会显示信息,确认副本集已创建。
插入测试数据
使用MongoDB Shell执行以下命令:use mydb;for (let i = 0; i < 100000; i++) { const name = animal[Math.floor(Math.random() * animal.length)]; const userId = i; const boolean = [true, false][Math.floor(Math.random() * 2)]; const createdAt = new Date(); const number = Math.floor(Math.random() * 10001); db.test_collection.insert({ name: name, user_id: userId, boolean: boolean, added_at: createdAt, number: number });}
这将向test_collection
中插入100万条测试数据。
创建数据目录
创建以下目录结构:/data/example/secondset1/data/example/secondset2/data/example/secondset3
使用命令:
mkdir -p /data/example/secondset1 /data/example/secondset2 /data/example/secondset3
启动三个MongoDB实例
在不同的终端窗口启动以下命令:mongod --dbpath=/data/example/secondset1 --port 30001 --replSet secondset --oplogSize 700 --rest --fork --logpath=/data/example/secondset1/secondset1.log --logappend --nojournal --directoryperdb
同样启动其他两个实例,分别使用端口30002和30003。
初始化副本集
连接任意一个MongoDB实例,执行以下命令:mongo mongo01:30001/admin
输入以下配置并运行:
db.runCommand({ "replSetInitiate": { "_id": "secondset", "members": [ { "_id": 0, "host": "mongo01:30001" }, { "_id": 1, "host": "mongo01:30002" }, { "_id": 2, "host": "mongo01:30003" } ] }});
将副本集加入分片集群
运行以下命令将副本集添加到分片集群:db.runCommand({ addShard: "secondset/mongo01:30001,mongo01:30002,mongo01:30003"});
成功添加后会显示确认信息。
创建数据文件保存目录
创建以下目录结构:/data/example/config1/data/example/config2/data/example/config3
使用命令:
mkdir -p /data/example/config1 /data/example/config2 /data/example/config3
启动配置服务器
在不同的终端窗口启动以下命令:mongod --configsvr --dbpath=/data/example/config1 --port 20001 --fork --logpath=/data/example/config1/config1.log --logappend
同样启动其他两个配置服务器,分别使用端口20002和20003。
启动分片主节点
在新的终端窗口启动以下命令:mongos --configdb mongo01:20001,mongo01:20002,mongo01:20003 --port 27017 --chunkSize 1 --fork --logpath=/data/example/mongos.log --logappend
连接分片主节点
运行以下命令连接分片主节点:mongo mongo01:27017/admin
添加第一个分片
运行以下命令将第一个副本集添加为分片:db.runCommand({ addShard: "firstset/mongo01:10001,mongo01:10002,mongo01:10003"});
验证分片添加
运行以下命令确认分片是否已成功添加:db.runCommand({ listShards: 1 });
输出结果应显示所有分片信息。
通过以上步骤,可以成功部署MongoDB的副本集和分片集群,确保数据的高可用性和系统的水平扩展。副本集用于数据的主从复制,分片集群则通过将数据分布到多个分片上,提升查询性能和系统的扩展能力。
转载地址:http://ncffk.baihongyu.com/