单机迁移集群
停止单机版本老环境
-
检查单机版本老环境的 kafka 队列有无消息堆积
进入存储组件容器
docker exec -it $(docker ps | grep mingdaoyun-sc | awk '{print $1}') bash检查当前容器内是否有 minio 进程
ps aux|grep [m]inio- 如果有输出,代表当前容器内运行的文件存储服务是 V2 版本
- 如果没有输出,代表代表当前容器内运行的文件存储服务是 V1 版本
- 后续迁移文件存储服务时,V1 与 V2 的迁移步骤会有不同
检查 kafka 工作流队列有无堆积
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server ${ENV_KAFKA_ENDPOINTS:=127.0.0.1:9092} --describe --group md-workflow-consumer | awk '{count+=$6}END{print count}'-
仅输出 0 代表无堆积,可以立刻停止微服务
-
输出的数字大于 0 代表当前队列中有工作流消息待消费
- 如果在队列中有未消费的数据时停止了微服务,在做完数据迁移,新环境会有某些工作流一直显示排队数字不消失,这些显示排队的流程不会继续消费
-
在安装管理器所在目录执行停止微服务命令
bash service.sh stopall
启动临时容器
-
单独启动挂载明道云数据目录的容器
docker run -itd --entrypoint bash --rm -v /data/mingdao/script/volume/data/:/data/ 788b6f437789-
788b6f437789 为存储组件
mingdaoyun-sc的镜像ID,可通过docker images查看 -
如果单机环境的明道云数据目录有修改, 则以实际为准
-
-
进入刚启动的临时容器
docker exec -it 363625b14db6 bash- 363625b14db6 为刚启动的容器ID,可通过
docker ps查看
- 363625b14db6 为刚启动的容器ID,可通过
-
在临时容器内分别启动 mysql、mongodb、file
source /entrypoint.sh && mysqlStartup &
source /entrypoint.sh && mongodbStartup &
source /entrypoint.sh && filev1Run &如果容器内运行的文件存储服务是 V2 版本,也要额外启动下 minio 服务
echo "127.0.0.1 sc" >> /etc/hosts
source /entrypoint.sh && minioStartup &
文件存储迁移
单机环境中内置的文件存储版本可能有所不同,根据实际情况选择对应版本的迁移文档。
- 文件存储 V1 版本
- 文件存储 V2 版本
-
在临时创建的容器内配置集群环境文件存储信息
mc alias set minio_old http://127.0.0.1:9000 mdstorage eBxExGQJNhGosgv5FQJiVNqH
mc alias set minio_new http://10.206.0.6:9011 mingdao T7RxxxxxxxxxxdRky-
minio_old 中的地址、认证信息无需修改
-
minio_new 中的IP与端口及认证信息注意替换为实际新集群环境的 minio 服务的访问地址与认证信息
-
-
拷贝单机 环境中的文件存储数据到集群环境的 minio 中
mc mirror minio_old/mdmedia minio_new/mdmedia
mc mirror minio_old/mdoc minio_new/mdoc
mc mirror minio_old/mdpic minio_new/mdpic
mc mirror minio_old/mdpub minio_new/mdpub
-
在临时创建的容器内配置集群环境文件存储信息
mc alias set minio_old http://127.0.0.1:9010 mdstorage eBxExGQJNhGosgv5FQJiVNqH
mc alias set minio_new http://10.206.0.6:9011 mingdao T7RxxxxxxxxxxdRky-
minio_old 中的地址、认证信息无需修改
-
minio_new 中的IP与端口及认证信息注意替换为实际新集群环境的 minio 服务的访问地址与认证信息
-
-
拷贝单机环境中的文件存储数据到集群环境的 minio 中
mc mirror minio_old/mdmedia minio_new/mdmedia
mc mirror minio_old/mdoc minio_new/mdoc
mc mirror minio_old/mdpic minio_new/mdpic
mc mirror minio_old/mdpub minio_new/mdpub
数据库迁移
MySQL 数据导出
-
在临时创建的容器内创建 mysql 数据导出目录
mkdir -p /data/backup/mysql_dump -
进入 backup 目录
cd /data/backup/ -
导出 mysql 数据
for dbname in MDApplication MDCalendar MDLog MDProject MDStructure; do
mysqldump --set-gtid-purged=off --default-character-set=utf8mb4 -h127.0.0.1 -P3306 -uroot -p123456 $dbname > mysql_dump/$dbname.sql
done -
导出的数据会持久化保存在宿主机
/data/mingdao/script/volume/data/backup/mysql_dump下
MongoDB 数据导出
-
在临时创建的容器内创建 mongodb 数据导出目录
mkdir -p /data/backup/mongodb_dump -
进入 backup 目录
cd /data/backup/ -
创建导出的 mongodb 库列表
cat > mongodb.list <<EOF
MDAlert
MDChatTop
MDGroup
MDHistory
MDLicense
MDNotification
MDSso
MDUser
commonbase
mdIdentification
mdactionlog
mdapproles
mdapprove
mdapps
mdattachment
mdcalendar
mdcategory
mdcheck
mddossier
mdemail
mdform
mdgroups
mdinbox
mdkc
mdmap
mdmobileaddress
mdpost
mdreportdata
mdroles
mdsearch
mdservicedata
mdsms
mdtag
mdtransfer
mdworkflow
mdworksheet
mdworkweixin
mdwsrows
pushlog
taskcenter
mdintegration
mdworksheetlog
mdworksheetsearch
mddatapipeline
mdwfplugin
mdpayment
EOF- 如果老环境有启用聚合表,则也把
mdaggregationwsrows库加入要导出的 mongodb 库列表
- 如果老环境有启用聚合表,则也把
-
导出 mongodb 数据
for i in $(cat mongodb.list);do mongodump --uri mongodb://127.0.0.1:27017/$i --numParallelCollections=6 --gzip -o ./mongodb_dump/ ;done-
--numParallelCollections参数指定mongodump并行处理集合的数量,默认4,文档这里示例6,如服务器性能较高可适当调整。 -
数据量较大时,导出较为耗时,也可以使用
nohup放后台执行nohup bash -c 'for i in $(cat mongodb.list); do mongodump --uri mongodb://127.0.0.1:27017/$i --numParallelCollections=6 --gzip -o ./mongodb_dump/; done' > mongodump.log 2>&1 &
-
-
导出的数据会持久化保存在宿主机
/data/mingdao/script/volume/data/backup/mongodb_dump下
数据传输
MySQL 数据传输
-
在新环境 mysql master 节点启动一个接收端
mkdir /data/recover && cd /data/recover
nc -l 9900 | tar -zxvf - -
老环境在宿主机中进入导出的数据所在目录启动发送端
cd /data/mingdao/script/volume/data/backup
tar -zcvf - mysql_dump | nc 192.168.1.1 9900