MongoDB 分片集群复制数据库副本

文章目录


提示:MongoDB分片集群数据库名称不能直接重命名(MongoDB副本集或MongoDB单机可以直接重命名数据库名称),如果MongoDB分片集群数据库名称需要重命名,则需要创建一个新的数据库并把数据库备份导入。

MongoDB分片集群主机规划

主机名称 主机IP CPU 内存 mongos端口 config端口 share1端口 share2端口 share3端口 操作系统及软件版本
mongodb01 192.168.91.61 2*4 16GB 27017 27019 27101 27102 27103 CentOS 7.9 mongo 4.4.29 mongos 4.4.29 mongod 4.4.29 mongosh 2.2.29
mongodb02 192.168.91.62 2*4 16GB 27017 27019 27101 27102 27103 CentOS 7.9 mongo 4.4.29 mongos 4.4.29 mongod 4.4.29 mongosh 2.2.29
mongodb03 192.168.91.63 2*4 16GB 27017 27019 27101 27102 27103 CentOS 7.9 mongo 4.4.29 mongos 4.4.29 mongod 4.4.29 mongosh 2.2.29

实验场景:

现在需要把emop_elinkmain数据库中main_repetition集合和shard_repetition 集合复制到另外一个新的数据库emop_elinkmain_new进行测试(同一个MonogDB分片集群操作)。


一、登录MongoDB查询数据库及集合分片情况

bash 复制代码
mongosh --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111"

### 查看分片情况
sh.status();

二、登录MongoDB先创建副本数据库并设置数据库及集合分片功能

bash 复制代码
mongosh --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111"

### 进入到admin数据库
use admin

### 创建副本数据库分片功能(默认自动分片)
db.runCommand( { enablesharding : "emop_elinkmain_new" } );

### 设置副本数据库main_repetition集合和hard_repetition 集合分片功能,_id为片键使用hashed哈希算法
db.runCommand({ shardcollection : "emop_elinkmain_new.main_repetition",key : {"_id": "hashed"}} );
db.runCommand({ shardcollection : "emop_elinkmain_new.shard_repetition",key : {"_id": "hashed"}} );

### 查看分片情况
sh.status();

三、登录MongoDB查询emop_slinkmain数据库main_repetition集合和

bash 复制代码
shard_repetition 集合数据行数
mongosh --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111"

### 进入到emop_elinkmain旧数据库查看main_repetition、shard_repetition三个集合的数据行数
use emop_elinkmain
db.main_repetition.stats().count;
db.shard_repetition.stats().count;

四、使用mongodump压缩备份emop_slinkmain数据库中的main_repetition集合和shard_repetition 集合

bash 复制代码
mongosh --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111"
mongodump --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111" --authenticationDatabase admin -d emop_elinkmain -c main_repetition -o /data/backup/ --gzip
mongodump --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111" --authenticationDatabase admin -d emop_elinkmain -c shard_repetition -o /data/backup/ --gzip

五、使用mongorestore解压恢复emop_slinkmain数据库中的main_repetition集合和shard_repetition 集合

bash 复制代码
mongosh --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111"
mongorestore --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111" --authenticationDatabase admin -d emop_elinkmain_new -c main_repetition --dir=/data/backup/emop_elinkmain/main_repetition.bson.gz --gzip
mongorestore --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111" --authenticationDatabase admin -d emop_elinkmain_new -c shard_repetition --dir=/data/backup/emop_elinkmain/shard_repetition.bson.gz --gzip

六、登录MongoDB新旧集合数据行数是否一样

bash 复制代码
mongosh --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111"

### 进入到emop_elinkmain_new新数据库查看main_repetition、shard_repetition三个集合的数据行数
use emop_elinkmain_new
db.main_repetition.stats().count;
db.shard_repetition.stats().count;

七、删除库、删除集合、清空集合所有数据

bash 复制代码
mongosh --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111"

### 删除emop_elinkmain数据库(所有集合都会删除)
use emop_elinkmain
db.dropDatabase()

### 删除emop_elinkmain数据库main_repetition集合、shard_repetition集合
use emop_elinkmain
db. main_repetition.drop()
db. shard_repetition.drop()

### 清空emop_elinkmain数据库main_repetition集合和shard_repetition集合所有数据
use emop_elinkmain
db. main_repetition.deleteMany({})
db. shard_repetition.deleteMany({})
相关推荐
Omics Pro几秒前
强生:以机理为中心!虚拟细胞世界模型
数据库·人工智能·python·深度学习·算法·机器学习·自然语言处理
SL-staff3 分钟前
技术实践:将Excel自动升级为可搜索的知识节点(JVS平台实现)
mongodb·elasticsearch·知识图谱·jvs平台·语义解析·企业文档管理·excel结构化
java资料站19 分钟前
四、Spring AIAlibaba · Tools(工具调用)
数据库·sql·spring
步行cgn30 分钟前
Spring 事务传播行为详解
java·数据库·spring
anxiao_m1 小时前
跨地域大文件怎么传?2026主流传输软件实测对比
大数据·数据库·文件传输
Su米苏1 小时前
基于 Token 预算的上下文压缩控制器(Context Compaction Controller)
前端·数据库·人工智能
暖核1 小时前
Redis 从基础到集群实战:数据类型、客户端、高可用架构完整梳理
数据库·redis·架构
神一样的老师1 小时前
WS63 访问 HTTPS 握手失败(-0x7780)根治
数据库·网络协议·https
Patrick在香港2 小时前
时间戳凭空早了 8 小时:datetime.utcnow() 弃用实测与漂移复盘
数据库·python·标准库·datetime·时区·弃用
李兆龙的博客9 小时前
问津集 #26:Lakebase——Postgres 的版本化页面存储、数据库分支与计算弹性
数据库