数据库迁移方案

名词解释 单机 : docker 部署 分布式:k8s,多个容器,有边车,配置文件参数区分, engine.run.mode=SINGLE engine.store.meta.mode=CLOUD

整库迁移:保留目标库系统表数据, 环境检查: 升级指引: 一、单机迁移分布式环境 单机环境迁移到生产分布式环境, 1.1 环境检查 来源:127.0.0.1 /test 目标: 1.0.0.0/ snest

迁移步骤: 序号 执行步骤 执行内容 状态 开始时间 1 停服来源数据库 test整库备份(test.sql) 完成 2 检查目标库 有目标库的时候,没有目标库,有,备份目标库业务表数据(业务表名smi_* )smi_back.sql,无,创建目标库 完成 3 整库备份test.sql导入目标库 将序号1备份的(test.SQL)导入目标库中 完成 4 将目标库中的业务表smi_back.sql导入目标库中 完成 5 应用市场上传应用,上架应用 完成 6 执行sql 执行1.1 ,1.2, 等SQL 完成

1.2 数据库准备 平台sql 1.1 卸载应用SQL

update meta_app set is_primary =0, state = 'uninstalled' , is_delete = 1 where author='smi';

1.2 已安装表(meta_appp)关联市场(meta_app_store) UPDATE meta_app SET meta_app_store_id = ( SELECT id FROM meta_app_store AS subquery_meta_app WHERE subquery_meta_app.name = meta_app.name ) WHERE author = 'smi'

1.3 已经安装(meta_app)前端资源文件 (注意视情况而定,非必须执行SQL) UPDATE meta_app SET view_file_id = ( SELECT view_file_id FROM meta_app_store AS subquery_meta_app WHERE subquery_meta_app.name = meta_app.name ) WHERE author = 'smi'

UPDATE meta_app SET view_file = ( SELECT att.name FROM meta_app_store AS subquery_meta_app left join meta_attachment att on subquery_meta_app.view_file_id = att.id WHERE subquery_meta_app.name = meta_app.name ) WHERE author = 'smi'

1.3 应用市场准备 归档应用文件一份。 2.1 市场上传,上架。 2.2 市场安装到容器。 具体操作参考 http://iidp.chinasie.com:9999/iidpdoc/pages/0570a6/#%E5%BA%94%E7%94%A8%E5%B8%82%E5%9C%BA 1.4 容器准备 1.5 MINO存储迁移 Minio数据迁移(mc命令) mc(MinIO Client)是一个强大的命令行工具,用于管理MinIO和其他兼容的对象存储服务(如Amazon S3)。你可以使用mc来执行各种操作,如创建和删除存储桶,上传、下载和删除对象,配置策略等。

4.1 下载 wget https:// dl.minio.org.cn/client/mc/release/linux-amd64/mc chmod +x mc

4.2 数据迁移常用命令 #注:mc只适合用于同网段minio之间的迁移或确保mc能连接到要迁移的服务器也可以使用mc

例:全量迁移

如下两台机器minio数据需要进行迁移,10.11全量迁移到10.12 192.168.10.11 minio 192.168.10.12 minio

#添加新的minio服务地址 语法: mc alias set 名称 服务地址 用户名 密码 mc alias set minio1 http://192.168.10.11:9000 minioadmin minioadmin mc alias set minio2 http://192.168.10.12:9000 minioadmin minioadmin

#查看已经添加的minio服务信息 mc config host ls

#移除已经添加的minio服务 mc config host remove minio1

#全量迁移,重名文件不覆盖,bucket不存在会自动创建 mc mirror minio1 minio2 #只是迁移某个bucket,以test为例,目标的bucket需要提前建好 mc mirror minio1/test minio2/test #覆盖重名文件,加–overwrite mc mirror –overwrite minio1/test minio2/test

常用命令 已经添加minio服务地址后

192.168.10.11 minio 192.168.10.12 minio

#添加新的minio服务地址 语法: mc alias set 名称 服务地址 用户名 密码 mc alias set minio1 http://192.168.10.11:9000 minioadmin minioadmin mc alias set minio2 http://192.168.10.12:9000 minioadmin minioadmin

#列出minio1的桶,和linux的ls一样 mc ls minio1

#列出minio1中mybucket桶中的数据,和linux的ls一样 mc ls minio1/mybucket

#删除桶 mc rm minio1/mybucket #删除桶中的数据 mc rm minio1/mybucket/yuehansuzhangaiqing99.txt

#查看桶的大小 mc du minio1/mybucket 输出如下结果 825KiB 3 objects mybucket

#移动桶数据 #把minio1中mydata桶中的数据移动到minio2 archive桶下。

–recursive:这是一个选项,告诉 mc 移动所有子目录中的对象。如果没有这个选项,mc 只会移动顶层目录中的对象。

mc mv –recursive minio1/mydata minio2/archive

#复制桶数据 #把minio1中mydata桶中的数据复制到minio2 archive桶下。

mc cp –recursive minio1/mydata minio2/archive

#查看文件内容,如果查看视频二进制文件等内容会乱码

mc cat minio1/mybucket/suzhanyuehanaiqing99.txt

二、测试分布式-迁移生产分布式环境

整库迁移,

2.1 环境检查 KubeSphere 容器升级指引 升级指引http://iidp.chinasie.com:9999/iidpwiki/upgrad

2.2 数据库准备 第一原则,源整库迁移,把客户需要的业务表数据迁移,在把客户业务表数据覆盖之前整库备份的数据。只保留系统表。目的是为了保留系统表。重新在新的环境,安装应用容器。 方案一: 来源:127.0.0.1 /test 目标: 1.0.0.0/ snest

2.2.1 数据迁移步骤 序号 执行步骤 执行内容 状态 开始时间 1 停服来源数据库 test整库备份(test.sql) 完成 2 检查目标库 有目标库的时候,没有目标库,有,备份目标库业务表数据(业务表名smi_* )smi_back.sql,无,创建目标库 完成 3 整库备份test.sql导入目标库 将序号1备份的(test.SQL)导入目标库中 完成 4 执行sql 将目标库中的业务表smi_back.sql导入目标库中 完成 5 执行sql 执行批量卸载SQL 完成 6 执行sql 执行批量下架SQL 完成

2.1 卸载应用SQL

update meta_app set is_primary =0, state = 'uninstalled' , is_delete = 1 ;

2.2 批量下架SQL UPDATE snest_no_tenant.meta_app_store SET app_market = 'noUp' ;

2.3 已经安装(meta_app)前端资源文件(视情况而定非必须执行SQL) UPDATE meta_app SET view_file_id = ( SELECT view_file_id FROM meta_app_store AS subquery_meta_app WHERE subquery_meta_app.name = meta_app.name ) WHERE author = 'smi'

UPDATE meta_app SET view_file = ( SELECT att.name FROM meta_app_store AS subquery_meta_app left join meta_attachment att on subquery_meta_app.view_file_id = att.id WHERE subquery_meta_app.name = meta_app.name ) WHERE author = 'smi'

2.3 容器准备 升级指引http://iidp.chinasie.com:9999/iidpwiki/upgrad

2.4 应用市场准备 http://iidp.chinasie.com:9999/iidpdoc/pages/0570a6/#%E5%BA%94%E7%94%A8%E5%B8%82%E5%9C%BA 2.5 MINO准备 Minio数据迁移(mc命令)(同网络迁移方案,不同网络需要自行准备) mc(MinIO Client)是一个强大的命令行工具,用于管理MinIO和其他兼容的对象存储服务(如Amazon S3)。你可以使用mc来执行各种操作,如创建和删除存储桶,上传、下载和删除对象,配置策略等。

4.1 下载 wget https:// dl.minio.org.cn/client/mc/release/linux-amd64/mc chmod +x mc

4.2 数据迁移常用命令 #注:mc只适合用于同网段minio之间的迁移或确保mc能连接到要迁移的服务器也可以使用mc

例:全量迁移

如下两台机器minio数据需要进行迁移,10.11全量迁移到10.12 192.168.10.11 minio 192.168.10.12 minio

#添加新的minio服务地址 语法: mc alias set 名称 服务地址 用户名 密码 mc alias set minio1 http://192.168.10.11:9000 minioadmin minioadmin mc alias set minio2 http://192.168.10.12:9000 minioadmin minioadmin

#查看已经添加的minio服务信息 mc config host ls

#移除已经添加的minio服务 mc config host remove minio1

#全量迁移,重名文件不覆盖,bucket不存在会自动创建 mc mirror minio1 minio2 #只是迁移某个bucket,以test为例,目标的bucket需要提前建好 mc mirror minio1/test minio2/test #覆盖重名文件,加–overwrite mc mirror –overwrite minio1/test minio2/test

常用命令 已经添加minio服务地址后

192.168.10.11 minio 192.168.10.12 minio

#添加新的minio服务地址 语法: mc alias set 名称 服务地址 用户名 密码 mc alias set minio1 http://192.168.10.11:9000 minioadmin minioadmin mc alias set minio2 http://192.168.10.12:9000 minioadmin minioadmin

#列出minio1的桶,和linux的ls一样 mc ls minio1

#列出minio1中mybucket桶中的数据,和linux的ls一样 mc ls minio1/mybucket

#删除桶 mc rm minio1/mybucket #删除桶中的数据 mc rm minio1/mybucket/yuehansuzhangaiqing99.txt

#查看桶的大小 mc du minio1/mybucket 输出如下结果 825KiB 3 objects mybucket

#移动桶数据 #把minio1中mydata桶中的数据移动到minio2 archive桶下。

–recursive:这是一个选项,告诉 mc 移动所有子目录中的对象。如果没有这个选项,mc 只会移动顶层目录中的对象。

mc mv –recursive minio1/mydata minio2/archive

#复制桶数据 #把minio1中mydata桶中的数据复制到minio2 archive桶下。

mc cp –recursive minio1/mydata minio2/archive

#查看文件内容,如果查看视频二进制文件等内容会乱码

mc cat minio1/mybucket/suzhanyuehanaiqing99.txt