MongoDB集群间环境迁移

来源:互联网 发布:win10如何优化虚拟机 编辑:程序博客网 时间:2024/05/23 01:14

迁移准备

采用该文档进行MongoDB集群环境迁移,需确保

1. 两套MongoDB集群环境架构一致,且采用命令方式部署。本文档以如下架构集群MongoDB为例进行讲解MongoDB集群迁移部署。

MongoDB集群部署拓扑图

 

2. 两套MongoDB软件版本一致

迁移进行时

2.1 上传、解压MongoDB安装包

2.2 检验各MongoDB服务器的时间

2.3 创建数据、日志文件

进入MongoDB目录,执行创建数据、日志文件夹。

 

服务器执行命令:

  #mkdir -p data

#mkdir -p data/shard11

#mkdir -p data/shard21

#mkdir -p logs

 

服务器执行命令:

  #mkdir -p data

#mkdir -p data/shard12

#mkdir -p data/shard23

#mkdir -p logs

 

服务器执行命令:

  #mkdir -p data

#mkdir -p data/shard13

#mkdir -p data/shard23

#mkdir -p logs

 

说明:shardmn,其中m代表分片编号,n代表备份编号。如上命令,共12两个分片,每个分片共2备份。如shard11,有备份shard12shard13

 

2.4 启动数据节点

进入MongoDBbin目录,每台服务器执行命令启动2个分片数据节点。

 

服务器执行命令:

#./mongodb -shardsvr -replSet shard1 -port 27017 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard11 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard11.log  -logappend  -fork

#./mongodb -shardsvr -replSet shard2 -port 27018 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard21 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard21.log  -logappend  -fork

说明:

(1) shard1表示:分片编号,通用为shardnn为具体数字;

(2) 27017表示:该进程使用的端口;

(3) -dbpath后面的路径表示:分片数据文件存放的路径;

(4) -logpath后面路径表示:分片日志文件存放路径

(5) -logappend -fork表示:后台运行进程

 

 

服务器执行命令:

#./mongodb -shardsvr -replSet shard1 -port 27017 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard12 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard12.log  -logappend  -fork

#./mongodb -shardsvr -replSet shard2 -port 27018 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard22 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard22.log  -logappend  -fork

 

 

服务器执行命令:

#./mongodb -shardsvr -replSet shard1 -port 27017 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard13 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard13.log  -logappend  -fork

#./mongodb -shardsvr -replSet shard2 -port 27018 -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/shard23 -oplogSize 100 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/logs/shard23.log  -logappend  -fork

 

2.5 分配副本集Replica Set

副本集将分片节点关联起来。

 

只需在一台服务器上进行副本集分配命令执行。通常默认执行该命令的服务器的分配为master,其余服务器为备份。

如在服务器1登录分片1控制台,命令 #./mongo -port 27017

分配分片1副本集命令:

>config = {_id: 'shard1', members: [

                          {_id: 0, host: '服务器1 IP:27017'},

                          {_id: 1, host: '服务器2 IP:27017'},

                          {_id: 2, host: '服务器3 IP:27017'}]

           }

> rs.initiate(config);

说明:rs.initiate(config);为初始化配置命令

 

在服务器2登录分片2控制台,命令:#./mongo -port 27018

进行分片2副本集命令:

>config = {_id: 'shard2', members: [

                          {_id: 0, host: '服务器1 IP:27018'},

                          {_id: 1, host: '服务器2 IP:27018'},

                          {_id: 2, host: '服务器3 IP:27018'}]

           }

> rs.initiate(config);

2.6 启动配置服务

分别在三台服务器上执行命令:

#./mongod -configsvr -dbpath /app/mongodb-linux-x86_64-rhel62-3.0.4/config -port 20000 -logpath /app/mongodb-linux-x86_64-rhel62-3.0.4/data/config.log -logappend –fork

说明:

1) -dbpath后面跟着目录是配置文件存放路径

2) -port后面跟着20000是进程使用的端口地址

3) -logpath后面跟着目录是进程启动日志文件存放路径

4) -logappend -fork表示:后台运行进程

 

2.7 启动路由服务

分别在三台服务器上执行命令:

# ./mongos -configdb 192.168.2.33:20000,192.168.2.34:20000,192.168.2.35:20000 -port 30000 -chunkSize 5 -logpath / app /mongodb-linux-x86_64-rhel62-3.0.4/data/mongos.log -logappend –fork

 

说明:

1) -configdb 后面跟着三台配置服务器的IP及端口地址

2) -port 后面跟着进程使用的端口地址

3) -logpath 后面跟着路由进程对应日志存放地址

4) -logappend -fork表示:后台运行进程

2.8 加入分片

1. 连接到其中一台服务器的mongs进程,并切换至admin数据库。

命令:

#./mongos -port 30000

>use admin;

 

2. 配置分片,本文档例子中仅有两个分片,所以执行命令:

>db.runCommand( { addshard : "shard1/192.168.2.33:27017,192.168.2.34:27017,192.168.2.35:27017",name:"s1"} );

 

>db.runCommand( { addshard : "shard2/192.168. 2.33:27018,192.168.2.34:27018,192.168.2.35:27018",name:"s2"} );

 

说明:配置分片时,需更改分片相关服务器IP和端口地址

 

3. 配置分片验证,命令:

> db.runCommand( { listshards : 1 } );

 

说明:如果列出了以上两个你加的shards,表示shards已经配置成功,如图所示。

 

配置分配成功验证结果

 

 

2.9 激活数据库

1. 连接到其中一台服务器的mongs进程,并切换至admin数据库。

命令:

#./mongos -port 30000

>use admin;

2. 激活数据库分片,命令:

>db.runCommand( { enablesharding : “DB_NAME” } );

 

2.10 集合Collection分片

1. 连接到其中一台服务器的mongs进程,并切换至admin数据库。

命令:

#./mongos -port 30000

>use admin;

2. 集合分片,命令:

>db.runCommand( { shardcollection : "DB_NAME.COLLECTION_NAME",key : {id: 1} } );

 

2.11 迁移数据

将需要迁移的MongoDB –Data下的分片数据文件中的DB_NAME文件复制到对应服务器的对应相同目录下。

如源服务器1shard11shard21文件夹中DB_NAME文件复制到目标服务器1shard11shard21文件中。

 

2.12 添加索引

1. 连接到其中一台服务器的mongs进程,并切换至DB_NAME数据库。

命令:

#./mongos -port 30000

>use DB_NAME;

2. 添加索引

 

分片验证

3.1 方法一:数据库状态验证

1. 连接到其中一台服务器的mongs进程,并切换至DB_NAME数据库。

命令:

#./mongos -port 30000

>use DB_NAME;

 

2. 查看数据库状态,命令:

>db.stats();

 

说明:若数据库状态中包含全部分片,则说明数据迁移成功,如图所示。同时,既然是数据迁移,则dataSize应不为0

3.2 方法二:集合状态验证

1. 连接到其中一台服务器的mongs进程,并切换至DB_NAME数据库。

命令:

#./mongos -port 30000

>use DB_NAME;

 

2. 查看数据库中的集合状态,如查看EVENT集合状态命令:

>db.EVENT.stats();

 

说明:

(1) 集合中shard状态为true

(2) Count数量大于0

(3) 有具体分片的数据信息

 

原创粉丝点击