分片集群平滑迁移实验(成功)

过程概述:

为每个分片添加多个从节点,然后自动同步。同步完后,切换主节点到新服务器节点。

导出原来的config 数据库,并导入到新服务器的config数据库

停掉整个集群,可以使用kill 命令停掉

新服务器 启动 config 进程 ,启动mongod 分片进程,

最后启动mongos进程,注意config的地址需要变成新的节点地址

验证成功!

 

 

老服务器的三分片数据 迁移到 新服务器的三片集群

老分片环境:

192.168.168.56  22001 22002 22003

192.168.168.57  22001 22002 22003

192.168.168.58  22001 22002 22003

 

新分片环境

192.168.6.103  22001  22002 22003

192.168.6.104  22001 22002 22003

192.168.6.105  22001 22002 22003

 

 

 

#### 新服务器搭建分片服务:

(按照配置标准启动服务,mongos服务 可以先不启用)

 

 /usr/local/mongodb/bin/mongod --configsvr--dbpath /data/mongodb/config/data --port 21000 --logpath/data/mongodb/config/log/config.log --fork

 

 /usr/local/mongodb/bin/mongod --shardsvr--replSet shard1 --port 22001 --dbpath /data/mongodb/shard1/data --logpath/data/mongodb/shard1/log/shard1.log --fork --oplogSize 10000

 

/usr/local/mongodb/bin/mongod--shardsvr --replSet shard2 --port 22002 --dbpath /data/mongodb/shard2/data--logpath /data/mongodb/shard2/log/shard2.log --fork --oplogSize 10000

 

/usr/local/mongodb/bin/mongod--shardsvr --replSet shard3 --port 22003 --dbpath /data/mongodb/shard3/data--logpath /data/mongodb/shard3/log/shard3.log --fork --oplogSize 10000

#

 

 

####老服务器操作:主从集群增加新节点

 

增加 新的主从服务器到分片节点,让mongodb自同步数据到新服务器三分片

/rs.add('192.168.6.103:22001')

    rs.add('192.168.6.104:22001')

总裁 rs.add('192.168.6.105:22001','arbiterOnly:true')

 

总裁 rs.add('192.168.6.103:22002','arbiterOnly:true')

/rs.add('192.168.6.104:22002')

     rs.add('192.168.6.105:22002')

 

 

       rs.add('192.168.6.103:22003')

总裁    rs.add('192.168.6.104:22003','arbiterOnly:true')

/    rs.add('192.168.6.105:22003')

 

 

#####老服务器操作:更改权重,切换priority

 

同步完成后,更改权重,切换主priority到新的服务器,让老的主节点变成从节点

 

22001 主服务器操作:

rs.conf();

cfg=rs.conf();

cfg.members[0].priority=1

cfg.members[3].priority=2

rs.reconfig(cfg);

 

 

22002主服务器操作:

rs.conf();

cfg=rs.conf();

cfg.members[2].priority=1

cfg.members[4].priority=2

rs.reconfig(cfg);

 

 

 

22003  主服务器操作:

rs.conf();

cfg=rs.conf();

cfg.members[1].priority=1

cfg.members[5].priority=2

rs.reconfig(cfg);

 

######主切换完成后删除 旧服务器的 从节点:

rs.remove('192.168.168.56:22001')

rs.remove('192.168.168.57:22001')

rs.remove('192.168.168.58:22001')

 

 

 

rs.remove('192.168.168.56:22002')

rs.remove('192.168.168.57:22002')

rs.remove('192.168.168.58:22002')

 

 

 

rs.remove('192.168.168.56:22003')

rs.remove('192.168.168.57:22003')

rs.remove('192.168.168.58:22003')

 

 

###原配置服务(21000)导出config库并导入新的配置服务

导出config  

# mongodump --port21000 -d config  #导出

 

导入config 到新的服务器config

# mongorestore--port 21000 -d config /root/dump/config/  #导入

 

停掉所有的服务器的进程,关闭整个集群包括config  mongod   mongos

 

####在新服务器启动服务#

启动整个集群,包括:config  mongod mongos进程

如果启动mongos进程没有报错,则说明mongodb分片集群平滑迁移成功

 

#备注#

config服务器需要替换成新的服务器ip地址和端口

 

/usr/local/mongodb/bin/mongos--configdb 192.168.6.103:21000,192.168.6.104:21000,192.168.6.105:21000--port 30000 --chunkSize 50 --logpath /data/mongodb/mongos/log/mongos.log--fork