【DataKit系列】数据迁移-实例搭建步骤(二)
说明:此文档仅包含使用DataKit进行数据迁移时,搭建迁移任务相关教程,不包含一些必须的前置配置步骤,和环境要求等,请优先学习“【DataKit系列】数据迁移-使用说明(一)”文档。
数据迁移实例搭建步骤
1、离线模式迁移步骤
-
创建源端数据库用例,并初始化数据
详细说明,参考“迁移各步骤详细说明”目录下:“1 创建源端数据库用例,并初始化数据”,下同。
-
创建目标端数据库B库
详细说明:“2 创建目标端数据库B库”
-
使用B库连接openGauss数据库,并在目标端创建与mysql对象definer同名的用户,并赋权
详细说明:“3 在目标端创建与MySQL对象definer同名的用户,并赋权”
-
DataKit新增目标端和源端数据源
详细说明:“4 DataKit新增目标端和源端数据源”
-
创建迁移任务
详细说明:“5 创建迁移任务步骤”
-
启动迁移任务,查看任务详情
详细说明:“6 启动迁移任务,查看任务详情”
-
解决前置校验失败
详细说明:“7 解决前置校验失败”
-
重置迁移任务, 查看任务详情
详细说明:“8 重置迁移任务, 查看任务详情”
-
等待迁移任务完成,手动校验迁移结果
详细说明:“9 校验全量迁移结果”
2、在线模式迁移步骤
-
创建源端数据库用例,并初始化数据
同离线模式步骤
-
创建目标端数据库B库
同离线模式步骤
-
使用B库连接openGauss数据库,并在目标端创建与mysql对象definer同名的用户,并赋权
同离线模式步骤
-
DataKit新增目标端和源端数据源
同离线模式步骤
-
创建迁移任务
同离线模式步骤
-
启动迁移任务,查看任务详情
同离线模式步骤
-
解决前置校验失败
同离线模式步骤
-
重置迁移任务, 查看任务详情
同离线模式步骤
-
校验全量迁移结果
同离线模式“校验迁移结果”步骤
-
修改源端数据库数据,校验增量迁移结果
详细说明:“10 修改源端数据库数据,校验增量迁移结果”
-
结束增量迁移,启动反向迁移
详细说明:“11 结束增量迁移,启动反向迁移”
-
修改目标端数据库数据,检验反向迁移结果
详细说明:“12 修改目标端数据库数据,检验反向迁移结果”
-
结束迁移任务
-
详细说明:“13 结束在线模式迁移任务”
迁移各步骤详细说明
1、创建源端数据库用例,并初始化数据
连接MySQL数据库,并执行如下sql语句,在源端创建source_db数据库,作为迁移的源端数据库用例。
DROP DATABASE IF EXISTS source_db;
CREATE DATABASE source_db;
USE source_db;
CREATE TABLE table1(id INT, name VARCHAR(10), col VARCHAR(20), PRIMARY KEY(id));
INSERT INTO table1 VALUES(1,'data', 'data1');
INSERT INTO table1 VALUES(2,'data', 'data2');
INSERT INTO table1 VALUES(3,'data', 'data3');
INSERT INTO table1 VALUES(4,'data', 'data4');
INSERT INTO table1 VALUES(5,'data', 'data5');
INSERT INTO table1 VALUES(6,'data', 'data6');
CREATE VIEW view1 AS SELECT * FROM table1;
CREATE FUNCTION mysql_func1(s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('mysql_func1, ',s,'!');
CREATE TRIGGER trigger1 BEFORE INSERT ON table1 FOR EACH ROW SET new.col = CONCAT(new.name, new.id);
CREATE PROCEDURE procedure1() SELECT * FROM table1;
2、创建目标端数据库B库
连接openGauss数据库,并执行如下sql语句,创建B库。
create database target_db with dbcompatibility = 'b';
3、在目标端创建与MySQL对象definer同名的用户,并赋权
当源端数据库中有视图(view),触发器(trigger)或存储过程(procedure)的对象时,需要在目标端创建与其对象definer同名的用户。
查询MySQL端对象definer
-- 查询MySQL对象definer的sql语句
show create view view1;
查询结果类似如下:
View Create View character_set_client collation_connection
view1 CREATE ALGORITHM=UNDEFINED DEFINER=`test`@`%` SQL SECURITY DEFINER VIEW `view1` AS select `table1`.`id` AS `id`,`table1`.`name` AS `name`,`table1`.`col` AS `col` from `table1` utf8mb3 utf8mb3_general_ci
其中:“'test'@'%'”即为MySQL对象definer
使用B库连接openGauss数据库
-- 通过gsql连接B库
gsql -d target_db -p 5680 -r
-- 或,在gsql已连接情况下切换至B库
\c target_db
在目标端创建与mysql对象definer同名的用户,并赋权
-- 创建与mysql对象definer同名的用户,并赋权的sql语句
-- 设置b_compatibility_user_host_auth参数值为on
set b_compatibility_user_host_auth to on;
-- 创建同名用户
create user 'username'@'%' with password 'Sample@123';
-- 给新增用户赋权
grant all privileges to 'username'@'%';
4、DataKit新增目标端和源端数据源
请按照如下步骤,分别添加源端MySQL数据源和目标端openGauss数据源。
-
访问DataKit服务,点击进入“资源中心->实例管理”目录下
-
点击“创建”按钮,弹出“新增数据源”窗口
-
进行新增数据源配置
-
集群名称可忽略,也可自定义
-
数据库类型选择“MYSQL”或“OPENGAUSS”
-
准确配置数据库服务的ip地址,端口,用户名,密码信息
-
连接拓展属性,及使用jdbc连接数据库服务时,做的一些时区,字符集限制等,可忽略
-
连接地址,即通过上述配置的连接信息拼出的jdbc连接数据库的url
-
-
配置完成后,点击“测试连通性”
-
“待检测”显示为“可用”,说明可以成功建立连接
-
“待检测”显示为“不可用”,说明存在网络问题,或配置信息有误,请校验后重试。
-
-
“测试连通性”可用后,点击“确认”按钮,成功添加数据库实例
5、创建迁移任务步骤
-
Datakit成功加载data-migration插件
-
点击进入DataKit服务“数据迁移 -> 迁移任务中心”目录下
-
点击“创建数据迁移任务”按钮
-
开始“选择迁移源库和目的库”步骤
注:
-
如果无数据源,点击“新增数据源”,输入所需参数进行新增,或参考目录“4 DataKit新增目标端和源端数据源”。
-
目的端选择目录“2 创建目标端数据库B库”已创建好的B库。
-
迁移过程模式,支持在线模式和离线模式。
离线模式:自动执行全量迁移 + 全量校验,完成后自动结束。
在线模式:可执行全量迁移 + 全量校验 + 增量迁移 + 增量校验 + 反向迁移。其中portal自动执行全量迁移 + 全量校验 + 增量迁移 + 增量校验,然后一直处于增量迁移状态(此时增量迁移和增量校验同时运行)。用户需要手动停止增量迁移,然后手动启动反向迁移,此后一直处于反向迁移状态。如果需要结束任务,需要用户手动结束迁移。
-
选择源端数据库(MySQL端),选择目的端数据库(openGauss端),并点击“添加子任务”按钮,支持添加多条子任务。
-
成功添加子任务后,在页面下方选择对应子任务的“迁移过程模式”,支持选择“在线模式”和“离线模式”。
-
“选择迁移源库和目的库”配置成功,点击下一步。
-
-
开始“配置迁移过程参数”步骤
直接使用默认参数即可,点击“下一步”。
-
开始“分配执行机资源”步骤
页面会展示所有的执行机列表信息,页面左侧复选框,勾选一台已安装迁移套件(portal)的执行机,点击完成,创建迁移任务成功。
注:
-
执行机,是指安装有portal(portal时具体执行迁移任务的插件)的服务器。即,迁移任务实际上是在安装portal的服务器上,使用portal插件执行的,DataKit这里只是作为一个集中管理迁移任务的客户端。
-
如果没有已安装迁移套件的执行机,详细见文档“【DataKit系列】数据迁移-使用说明(一)”中,目录:“DataKit安装Portal教程”。
-
-
查看迁移任务
点击进入目录“数据迁移 -> 迁移任务中心”下,可以看到已创建成功的迁移任务列表信息。
-
修改迁移任务配置
迁移任务列表中,字段“执行状态”为未启动的任务,点击对应数据行右侧“详请”,可以看到上述“创建迁移任务步骤”的过程配置信息,并支持修改配置。
6、启动迁移任务,查看任务详情
-
点击进入DataKit服务“数据迁移 -> 迁移任务中心”目录下
-
找到上述创建的迁移任务记录,点击记录右侧的“启动”,迁移任务启动成功
-
点击记录右侧的“详情”,进入迁移任务详情页
-
点击对应子任务右侧的“详情”,可查看子任务迁移的详细过程数据
-
“在线/离线迁移过程记录”中,会展示详细的迁移情况
-
其中全量迁移会展示表,视图,函数,触发器和存储过程的迁移情况,迁移状态为绿色“√”图标时,说明迁移成功,为橙色“×”图标时,说明迁移失败。
-
全量校验则只校验拥有主键的表,同样校验状态为绿色“√”图标时,说明迁移成功,为橙色“×”图标时,说明校验失败。
-
当存在失败的情况时,点击对应子任务右侧的“日志”,可以选择下载所需日志,查看日志中的报错信息并解决。
7、解决前置校验失败
如果未出现“前置校验失败”的状态,则不需要解决,跳过此步骤即可。
当出现前置校验失败时,鼠标悬浮于对应子任务“前置校验失败”提示的右侧橙色“×”图标上,即可查看校验失败的详细信息,根据详细信息中提示的校验失败项,参考文档“DataKit数据迁移-3前置校验失败的处理”,对失败项进行解决。
8、重置迁移任务, 查看任务详情
如果未出现“前置校验失败”的状态,则不需要此操作,跳过此步骤即可。
当解决完成“前置校验失败”的项目后,在页面的标签页栏中关闭此任务的“任务详情”页面,点击回到“迁移任务中心”页面,找到对应迁移任务记录,点击对应页面右侧的“结束迁移”,然后点击“重置”,再点击“启动”,重新启动此迁移任务,再次点击“详情”,即可查看迁移任务详细的过程信息。
9、校验全量迁移结果
当离线模式迁移任务完成,或在线模式全量校验完成后,可以手动连接到迁移的目标端数据库,通过如下sql语句,手动查看并校验库中数据是否于源端数据库中数据相同。
-- 使用B库连接openGauss数据库
gsql -d target_db -p 5680 -r
-- 或在已连接的情况下,切换到目标端B库
\c target_db
-- 设置默认的schema
SET CURRENT_SCHEMA TO source_db;
-- 查看表格和视图
SHOW TABLES;
-- 查询触发器
SHOW TRIGGERS;
-- 查看函数
SHOW FUNCTION STATUS WHERE Db = 'source_db';
-- 查看存储过程
SHOW PROCEDURE STATUS WHERE Db = 'source_db';
-- 查询表中数据
SELECT * FROM table1;
注:此处设置默认的schema,是由于数据迁移会默认在目标端数据库中创建与源端数据库同名的的schema,并将源端数据库中的数据迁移到此schema中。
10、修改源端数据库数据,校验增量迁移结果
在源端依次执行增删改和创建表格等操作,可以查看对应迁移任务详情中,“累计增量迁移对象数”会随着操作逐次增加,当“剩余待写入数据”条数为0时,说明所有数据库操作均已增量迁移成功。
也可以每次源端做出操作后,在目标端手动校验数据是否同步,以验证增量迁移情况。
修改源端数据库数据
-- 增删改操作
-- 插入数据
INSERT INTO table1 VALUES(7, 'data', 'data7');
-- 修改数据
UPDATE table1 SET NAME = 'new_data' WHERE id = 7;
-- 删除数据
DELETE FROM table1 WHERE id = 7;
-- DDL操作
-- 创建表
CREATE TABLE table2 (id INT, NAME VARCHAR(10)
);
-- 删除表
DROP TABLE table2;
手动校验增量迁移结果
-- 增删改操作校验
-- 查询表中修改的数据是否同步
select * from table1;
-- DDL操作校验
-- 查询目标端表格的增删情况
SHOW TABLES;
-- 查询目标端表结构,与新增表结构是否一致
SHOW CREATE TABLE table2;
11、结束增量迁移,启动反向迁移
点击对应子任务右侧的“停止增量”,点击“确认”按钮,等待增量迁移停止。
增量迁移成功停止后,对应子任务右侧的“启动反向”,点击查看详情,可以查看反向迁移详细过程。
12、修改目标端数据库数据,检验反向迁移结果
在目标端依次执行增删改操作,可以查看对应迁移任务详情中,“累计反向迁移对象数”会随着操作逐次增加,当“剩余待写入数据”条数为0时,说明所有数据库操作均已反向迁移成功。
也可以每次目标端做出操作后,在源端手动校验数据是否同步,以验证反向迁移情况。
修改目标端数据库数据
-- 增删改操作
-- 插入数据
INSERT INTO table1 VALUES(7, 'data', 'data7');
-- 修改数据
UPDATE table1 SET NAME = 'new_data' WHERE id = 7;
-- 删除数据
DELETE FROM table1 WHERE id = 7;
手动校验反向迁移结果
-- 增删改操作校验
-- 依次查询修改是否同步
select * from table1;
13、结束在线模式迁移任务
在线模式迁移任务不同与离线模式,当不手动进行停止操作时,会始终处于反向迁移状态下。
点击对应子任务右侧“结束迁移”,等待迁移任务停止,则此在线模式迁移任务完成。
- END -
相关文章:
【DataKit系列】数据迁移-实例搭建步骤(二)
说明:此文档仅包含使用DataKit进行数据迁移时,搭建迁移任务相关教程,不包含一些必须的前置配置步骤,和环境要求等,请优先学习“【DataKit系列】数据迁移-使用说明(一)”文档。 数据迁移实例搭建…...
发送jsonp请求(前后端如何实现)
发送jsonp请求(前后端如何实现) 前端 $.ajax({url: /api/jsonp,type: get,data: { id: 123 }, // 参数dataType: jsonp,jsonp: cb, // 回调函数的参数名jsonpCallback: successfn,// 回调函数contentType: "application/json; charsetutf-8",success: function(resp…...
Leetcode—1239. 串联字符串的最大长度【中等】(unordered_set)
2024每日刷题(155) Leetcode—1239. 串联字符串的最大长度 实现代码 class Solution { public:bool charSet(string & s) {unordered_set<char> charSet(s.begin(), s.end());// true表示有重复// false表示唯一return s.size() ! charSet.s…...
Spring Boot 3.x Rest API统一异常处理最佳实践
上一篇:Spring Boot 3.x Rest API最佳实践之统一响应结构 下一篇:Spring Boot 3.x Web单元测试最佳实践 参考著作:Error Handling for REST with Spring 在Spring MVC应用中,要对web表示层所抛出的异常进行捕获处理有多种方式&…...
线程的进阶学习
线程结束方式: 1.pthread_exit //pthread_join 2.从线程执行函数中return //此时效果等价于pthread_exit 3.pthread_cancel //线程可以被取消 4.任何一个线程调用了exit 或者 主线程 (main函数) return都会造成 进程结束 线程资源回收 ---pthread_join int pthread_ca…...
13.1 Python 正则表达式基础
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...
贪心算法介绍(Greedy Algorithm)
贪心算法介绍(Greedy Algorithm) 1. 贪心算法概念简介 贪心算法Greedy Algorithm是一种在每一步选择中都采取当前状态下最优(或最有利)决策的算法策略,以期望通过这样的局部最优决策达到全局最优解。它适用于那些…...
谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发
文章目录 一,175-商城业务-检索服务-检索查询参数模型分析抽取二,176-商城业务-检索服务-检索返回结果模型分析抽取三,177-商城业务-检索服务-检索DSL测试-查询部分四,178-商城业务-检索服务-检索DSL测试-聚合部分问题记录解决方案…...
爬虫 Web Js 逆向:RPC 远程调用获取加密参数(1)WebSocket 协议介绍
RPC (Remote Procedure Call) 是远程调用的意思。 在 Js 逆向时,本地可以和浏览器以服务端和客户端的形式通过 WebSocket 协议进行 RPC 通信,这样可以直接调用浏览器中的一些函数方法,不必去在意函数具体的执行逻辑,可以省去大量…...
【安卓】WebView的用法与HTTP访问网络
文章目录 WebView的用法使用http访问网络使用HttpURLConnection使用OkHttp 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。 WebView的用法 新建一个WebViewTest项目,然后修…...
Mysql中文存入乱码???
问题描述 提示:用的mysql5.x版本: 例如:在新增数据的时候,数据库本应该保存中文的字段出现了乱码???: 原因分析: 提示:首先想到的是mysql的字符集设置&…...
安美数字酒店宽带运营系统 weather.php 任意文件读取漏洞复现
0x01 产品简介 HiBOS酒店宽带运营系统是由安美世纪(北京)科技有限公司开发的一套专为酒店设计的宽带管理系统。该系统旨在提升酒店宽带服务的运营效率和安全性,为酒店客人提供稳定、高速、便捷的上网体验。 0x02 漏洞概述 安美数字酒店宽带运营系统 weather.php …...
BGP的反射器(四)
解决IBGP全互联问题带来的问题: 路由器需维护大量的TCP和BGP连接,尤其在路由器数量较多时AS内BGP网络的可扩展性较差 角色 RR:路由反射器Client:RR的客户端Non-Client:非客户机 关系 Client只与RR之间建立IBGP会话…...
proxy负载均衡
endpoint : 终点、终端 看service服务器的ip kubectl get ep backend -> real server :真正提供web服务的服务器 负载均衡器 load balancer --》LB USER -->LB --->BACKEND(real server) nginx SERVICE --->很多的endpoint--》po…...
两个若依系统,不能同时登录问题解决方案
原因: 问题根源在于两个独立的系统(A系统与B系统)共享了同一cookie键名来存储各自用户的认证令牌(token)。这种设计导致了以下情形: 当用户在A系统登录后,一个token被存储在cookie中࿰…...
Unity Render Streaming项目实践经验
UnityRenderStreaming项目 项目github地址见上,我使用项目的3.1.0-exp.7版本、Unity 2023.1.0版本、windows11运行。 1下载项目包 2在Unity Hub中打开RenderStreaming~文件夹 3在package manager中导入com.unity.renderstreaming package 因为已经下载过了就选择install pa…...
Rvt/dgn格式的模型如何提取外轮廓,用于压平倾斜模型或者地形,进行BIM+GIS融合
0序 很多设计院、施工单位都需要做BIMGIS的融合,把设计成果或者施工方案和现状实景做叠加。 BIM作为设计模型和现状的实景是不吻合的,多数都需要在现状的基础上进行改造,穿过村落的桥梁,已有立交的跨域等。为了更好的展示设计方案…...
sqli-labs-master靶场通关
目录 一、sqli-labs第一关 1.判断是否存在sql注入 (1)提示输入数字值的ID作为参数,输入?id1 (2)通过数字值不同返回的内容也不同,所以我们输入的内容是带入到数据库里面查询了 (3࿰…...
hive sql 处理多层 json 数组
1. 背景 json 字符串值数据示例: {"score": 1,"submitTime": 1712491933,"answerFlag": 1,"groupId": 1755547960,"answers": [{"value": "[1, 2, 3]","ids": [4,5,6],"is…...
Dom 元素转换 Image 图片 (截图)
Dom 元素转换 Image 图片 (截图) dom-to-image dom-to-image NPM 官网文档 参考文章码上行舟 dom-to-image 是如何将 html 转换成图片的(文章参考) 安装 npm install dom-to-image --save 使用 /* in ES 6 */ import domtoimage from "dom-to-image"; /* in ES 5 *…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
