文章目錄
- 一、登錄MongoDB查詢數據庫及集合分片情況
- 二、登錄MongoDB先創建副本數據庫并設置數據庫及集合分片功能
- 三、登錄MongoDB查詢emop_slinkmain數據庫main_repetition集合和
- 四、使用mongodump壓縮備份emop_slinkmain數據庫中的main_repetition集合和shard_repetition 集合
- 五、使用mongorestore解壓恢復emop_slinkmain數據庫中的main_repetition集合和shard_repetition 集合
- 六、登錄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查詢數據庫及集合分片情況
mongosh --host 192.168.91.61 --port 27017 -u "root" -p "AAAaaa111"### 查看分片情況
sh.status();
二、登錄MongoDB先創建副本數據庫并設置數據庫及集合分片功能
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集合和
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 集合
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 集合
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新舊集合數據行數是否一樣
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;
七、刪除庫、刪除集合、清空集合所有數據
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({})