一、迁移流程介绍

1、MongoDB迁移流程

在这里插入图片描述

2、迁移过程

在这里插入图片描述

四、MongoDB迁移前准备

将A机房的MongoDB迁移到B机房

1、环境信息

A机房:
	192.168.184.161  27001
	192.168.184.162  27001
	192.168.184.163  27001

在这里插入图片描述

B机房:
	192.168.184.164  27001
	192.168.184.165  27001
	192.168.184.166  27001

在这里插入图片描述

2、环境搭建

(1)A机房搭建MongoDB副本集

可参考:
创建MongoDB高可用环境

(2)A机房MongoDB副本集写入数据

161节点执行

mongosh onlinestore --port 27001 -u onlinestore_rw -p admin
use onlinestore;
db.one.insertOne({name:'liu'});

在这里插入图片描述

(3)B机房搭建MongoDB副本集

可参考:
创建MongoDB高可用环境

3、创建同步用户

(1)A机房创建同步用户

在161节点执行,也就是Primary节点执行

mongosh --port 27001 -u root -p admin
db.getSiblingDB("admin").createUser({
  user: "mongoshake_rw", 
  pwd: "admin", 
  roles: [
    { role: "root", db: "admin" } 
  ]
});

在这里插入图片描述

(2)B机房创建同步用户

在165节点执行,我这里165是Primary节点

mongosh --port 27001 -u root -p admin
db.getSiblingDB("admin").createUser({
  user: "mongoshake_rw", 
  pwd: "admin", 
  roles: [
    { role: "root", db: "admin" } 
  ]
});

在这里插入图片描述

4、配置A机房到B机房的同步

(1)下载MongoShake

在B机房166节点下载MongoShake

mkdir -p /data/mongoshake
cd /data/mongoshake
wget https://github.com/alibaba/MongoShake/releases/download/release-v2.8.4-20230425/mongo-shake-v2.8.4.tgz

在这里插入图片描述

(2)解压安装包

cd /data/mongoshake
tar -zxvf mongo-shake-v2.8.4.tgz

在这里插入图片描述

(3)修改配置文件

cd /data/mongoshake/mongo-shake-v2.8.4
vim collector.conf

修改如下内容:

mongo_urls 填写A机房的地址
tunnel.address 填写B机房地址
mongo_urls = mongodb://mongoshake_rw:admin@192.168.184.161:27001,192.168.184.162:27001,192.168.184.163:27001
sync_mode = all 
tunnel.address = mongodb://mongoshake_rw:admin@192.168.184.164:27001,192.168.184.165:27001,192.168.184.166:27001

incr_sync.mongo_fetch_method = change_stream

在这里插入图片描述
在这里插入图片描述

(4)启动同步

cd /data/mongoshake/mongo-shake-v2.8.4
nohup ./collector.linux -conf=collector.conf &

在这里插入图片描述

查看日志

cd /data/mongoshake/mongo-shake-v2.8.4/logs
tail -100f collector.log

在这里插入图片描述

5、验证历史数据是否同步到B机房

mongosh onlinestore --port 27001 -u onlinestore_rw -p admin

在这里插入图片描述

show tables;
db.one.find();

在这里插入图片描述

6、A机房新增数据验证是否同步到B机房

(1)A机房161节点执行

mongosh onlinestore --port 27001 -u onlinestore_rw -p admin
use onlinestore;
db.two.insertOne({name:'zhang'});
db.three.insertOne({name:'tao'});

在这里插入图片描述

(2)查看日志

cd /data/mongoshake/mongo-shake-v2.8.4/logs
tail -100f collector.log

在这里插入图片描述

(3)B机房165节点查看

mongosh onlinestore --port 27001 -u onlinestore_rw -p admin
show tables;
db.two.find();
db.three.find();

在这里插入图片描述

7、迁移前准备

(1)增加监控和备份

可参考如下:

Promethets监控MongoDB以及通过企业微信发送告警信息
设置MongoDB自动备份

(2)给B机房的客户端增加白名单

例如,想将167节点加到白名单中

164节点执行

iptables -A INPUT -s 192.168.184.167 -p tcp --dport 27001  -j ACCEPT

加到开机启动项

vim /etc/rc.local

添加如下内容:

iptables -A INPUT -s 192.168.184.167 -p tcp --dport 27001  -j ACCEPT

在这里插入图片描述

165节点执行

iptables -A INPUT -s 192.168.184.167 -p tcp --dport 27001  -j ACCEPT

加到开启启动项

vim /etc/rc.local

添加如下内容:

iptables -A INPUT -s 192.168.184.167 -p tcp --dport 27001  -j ACCEPT

在这里插入图片描述

三、迁移过程

1、查看A机房3种数据库是否有连接

161节点执行,查看连接

mongosh --port 27001 -u repl -p admin --eval "db.currentOp()"

在这里插入图片描述

2、确定是否有同步延迟

A机房写入数据,161节点执行

mongosh onlinestore --port 27001 -u onlinestore_rw -p admin

在这里插入图片描述

use onlinestore;
show tables;
db.one.insertOne({name:'test_delay'});

在这里插入图片描述
B机房查询数据,165节点执行,我这里165是Primar节点

mongosh onlinestore --port 27001 -u onlinestore_rw -p admin

在这里插入图片描述

show tables;
db.one.find();

在这里插入图片描述

3、配置反向同步

这里配置反向同步是为了回滚,万一要回滚的话,新插入B机房的数据也能进行回滚。

下载MongoShake

在A机房163节点下载MongoShake

mkdir -p /data/mongoshake
cd /data/mongoshake
wget https://github.com/alibaba/MongoShake/releases/download/release-v2.8.4-20230425/mongo-shake-v2.8.4.tgz

在这里插入图片描述
解压安装包

cd /data/mongoshake
tar -zxvf mongo-shake-v2.8.4.tgz

在这里插入图片描述
修改配置文件

cd /data/mongoshake/mongo-shake-v2.8.4
vim collector.conf

修改如下内容:

mongo_urls     填写B机房的地址
tunnel.address 填写A机房地址
mongo_urls = mongodb://mongoshake_rw:admin@192.168.184.164:27001,192.168.184.165:27001,192.168.184.166:27001
sync_mode = all 
tunnel.address = mongodb://mongoshake_rw:admin@192.168.184.161:27001,192.168.184.162:27001,192.168.184.163:27001

incr_sync.mongo_fetch_method = change_stream

在这里插入图片描述
在这里插入图片描述
启动同步

cd /data/mongoshake/mongo-shake-v2.8.4
nohup ./collector.linux -conf=collector.conf &

在这里插入图片描述

查看日志

cd /data/mongoshake/mongo-shake-v2.8.4/logs
tail -100f collector.log

在这里插入图片描述

4、停止正向同步

B机房166节点停止mongoshake进程

ps -ef | grep collector.linux

在这里插入图片描述

kill -9 35624
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐