MySQL 数据迁移至达梦
前置要求
- ONES >= v6.1.98 或 v6.13.0;该客户使用的插件已经完成达梦适配。
- 达梦数据库已经按这里的要求部署完成,可正常访问;
- 迁移操作需要在停机情况下进行,主要停止 project-api、platform-api 和 wiki-api 服务。
操作步骤
0. 拉取镜像
先手动拉取如下4个镜像到本地环境,然后修改tag:
`img.ones.pro/dev/mysql-to-dm:v1.0.4` # tag修改为localhost:5000/ones/mysql-to-dm:v1.0.4
`img.ones.pro/dev/dm-tool:v1.0.0` # tag修改为localhost:5000/ones/dm-tool:v1.0.0
`img.ones.pro/library/camunda/camunda-bpm-platform:dm-7.15.0` # tag修改为localhost:5000/ones/camunda-bpm-platform:dm-7.15.0
`img.ones.pro/library/oceanbase-ce:v4.3.1` # tag修改为localhost:5000/ones/oceanbase-ce:v4.3.1
#如果是ARM环境,上述镜像名后面加上-arm64
1. 初始化达梦数据库
进入 ones-ai-k8s.sh
配置达梦数据库相信息,然后执行初始化操作:
vi config/private.yaml
dm8Host: '127.0.0.1' #达梦数据库地址
dm8Port: 5236 #达梦数据库 port
dm8SysDbaPassword: 'onesdev123' #达梦数据库系统管理员密码
onesDMClientToolkitImage: img.ones.pro/dev/dm-tool:v1.0.0 # 或 dm-tool:v1.0.0-arm64
修改保存后,执行 make init-dm-db
初始化达梦数据库。
2. 生成迁移任务编排文件
进入 ones-ai-k8s.sh
执行如下操作:
cp -r script/mysql-to-dm overlay-templates/ones/v1/
make config-ones
执行完成后,会在 tmp/ones/v1/
目录下生成 mysql-to-dm
目录,里面包含了迁移任务编排文件。
3. 执行迁移任务
直接应用步骤2生成的迁移任务编排文件,执行迁移任务:
kubectl -n ones apply -f tmp/ones/v1/mysql-to-dm/mysql-to-dm.yaml
4. 验证迁移结果
查看 mysql-to-dm pod 的日志如果看到了包含 Migration complete
的内容且 failure: 0
则说明迁移完成。如果 failure 不为 0 联系相关同事作进一步处理。
迁移完成后可以执行 kubectl -n ones delete -f tmp/ones/v1/mysql-to-dm/mysql-to-dm.yaml
删除迁移任务。
切换到达梦数据库
- 补充达梦数据库相关配置 vi config/private.yaml
dbDriver: 'dm'
wizEditorUseDB: 'dm'
wizMysqlSkipTableCreate: 'true'
internalComponentMysqlEnable: 'false'
oceanbaseImage: img.ones.pro/library/oceanbase-ce:v4.3.1
dmCdcDbUser: 'root@mysql01'
dmCdcDbHost: 'oceanbase-service'
camundaImage: img.ones.pro/library/camunda/camunda-bpm-platform:dm-7.15.0 # 或 dm-7.15.0-arm64
kafkaCdcConnectorSuffix: "3" # 改成和之前值不一样就行,原值默认为空
- 执行
make setup-ones
- 关闭内置 MySQL
make setup-ones-built-in-mysql
。
回退到 MySQL
如果切换到达梦数据库后发现问题,可以回退到 MySQL 数据库。
- 删除 「切换到达梦数据库」步骤1中添加的配置;
- 执行
make setup-ones-built-in-mysql
启用内置 MySQL; - 执行
make setup-ones
重新部署 ONES。