【项目实战经验】DataKit迁移MySQL到openGauss(下)
上一篇我们分享了安装、设置、链接、启动等步骤,本篇我们将继续分享迁移、启动~
目录
9. 离线迁移
9.1. 迁移插件安装
中断安装,比如 kill 掉java进程(安装失败也要等待300s)
下载安装包准备上传
缺少mysqlclient lib包
mysql如果是二进制安装的话,我这个版本是没有18这个lib包的
安装成功后的截图
主机上有对应的进程
10. 全量迁移
10.1. 选中主机,启动迁移
10.2. 迁移中
10.3. 迁移结束
10.4. 日志所在目录
11. 增量迁移
11.1. PG里面创建第二个库
11.2. 创建在线迁移任务
11.3. 启动
11.4. 在mysql端进行DDL和DML
mysql 端进行了5个事务
第6次增量
停止增量
12. 反向迁移
12.1. 在PG端进行增删改
12.2. PG端DDL
9. 离线迁移





9.1. 迁移插件安装
中断安装,比如 kill 掉java进程(安装失败也要等待300s)
update tb_migration_host_portal_install set install_status=10;

下载安装包准备上传

缺少mysqlclient lib包
-
mysql如果是二进制安装的话,我这个版本是没有18这个lib包的
[root@mysqldb lib]# ls -ltrh /usr/local/mysql/lib
total 1001M
-rw-r--r-- 1 mysql mysql 392M Jun 21 2023 libmysqld-debug.a
-rw-r--r-- 1 mysql mysql 43K Jun 21 2023 libmysqlservices.a
-rwxr-xr-x 1 mysql mysql 11M Jun 21 2023 libmysqlclient.so.20.3.30
-rw-r--r-- 1 mysql mysql 26M Jun 21 2023 libmysqlclient.a
-rw-r--r-- 1 mysql mysql 574M Jun 21 2023 libmysqld.a
lrwxrwxrwx 1 mysql mysql 25 Jun 21 2023 libmysqlclient.so.20 -> libmysqlclient.so.20.3.30
lrwxrwxrwx 1 mysql mysql 20 Jun 21 2023 libmysqlclient.so -> libmysqlclient.so.20
drwxr-xr-x 2 mysql mysql 28 Jan 10 13:36 pkgconfig
drwxr-xr-x 4 mysql mysql 28 Jan 10 13:36 mecab
drwxr-xr-x 3 mysql mysql 4.0K Jan 10 13:36 plugin
lrwxrwxrwx 1 root root 25 Jan 10 14:41 libmysqlclient.so.18 -> libmysqlclient.so.20.3.30
-
在porta安装日志下面,会有如下报错
[root@mysqldb logs]# cat /ops/portal/error.log
/ops/portal/tools/chameleon/chameleon-5.1.0
install.sh: /ops/portal/tools/chameleon/chameleon-5.1.0/venv/bin/chameleon: /venv/bin/python3.6: bad interpreter: No such file or directory
Traceback (most recent call last):File "/ops/portal/tools/chameleon/chameleon-5.1.0/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 18, in <module>from . import _mysql
ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directoryDuring handling of the above exception, another exception occurred:
-
查看到符合当前mysql的版本,通过yum安装即可
Installed:mysql-community-libs-compat.x86_64 0:5.7.44-1.el7 Complete!
[root@datakit bin]# rpm -ql mysql-community-libs-compat-5.7.44-1.el7.x86_64
/etc/ld.so.conf.d/mysql-x86_64.conf
/usr/lib64/mysql
/usr/lib64/mysql/libmysqlclient.so.18
/usr/lib64/mysql/libmysqlclient.so.18.1.0
/usr/lib64/mysql/libmysqlclient_r.so.18
/usr/lib64/mysql/libmysqlclient_r.so.18.1.0
/usr/share/doc/mysql-community-libs-compat-5.7.44
/usr/share/doc/mysql-community-libs-compat-5.7.44/LICENSE
/usr/share/doc/mysql-community-libs-compat-5.7.44/README
-
其他有用命令
# 重新加载lib库
/sbin/ldconfig -v
# 查看位置
locate libmysql
# 手动配置lib库
vi /etc/ld.so.conf.d/mysql.conf
# 查看是否有对应的lib库
ldconfig -p|grep mysql
-
ldconfig,此时安装迁移插件应该没有问题
[root@mysqldb lib]# ldconfig -p|grep mysqllibmysqlclient.so.20 (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so.20libmysqlclient.so.20 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.20libmysqlclient.so.18 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.18libmysqlclient.so (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so
-
如果是在线安装,会遇到403错误,现在要登陆了才能下载
download portal package failed:
--2024-01-09 12:11:24-- https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/PortalControl-5.1.0.tar.gz
Resolving opengauss.obs.cn-south-1.myhuaweicloud.com (opengauss.obs.cn-south-1.myhuaweicloud.com)... 122.9.127.163, 122.9.127.162
Connecting to opengauss.obs.cn-south-1.myhuaweicloud.com (opengauss.obs.cn-south-1.myhuaweicloud.com)|122.9.127.163|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2024-01-09 12:11:25 ERROR 403: Forbidden.
-
出现如下提示最终还是能成功安装的:
/ops/portal/tools/chameleon/chameleon-5.1.0
install.sh: /ops/portal/tools/chameleon/chameleon-5.1.0
/venv/bin/chameleon: /venv/bin/python3.6: bad interpreter: No such file or directory
安装成功后的截图

主机上有对应的进程
[root@mysqldb alternatives]# jps
19073 QuorumPeerMain
19122 SupportedKafka
4874 Jps
19487 SchemaRegistryMai
10. 全量迁移
10.1. 选中主机,启动迁移

10.2. 迁移中

10.3. 迁移结束


10.4. 日志所在目录
[root@mysqldb datacheck]# pwd
/ops/portal/workspace/2/logs/datacheck
[root@mysqldb datacheck]# ls -ltrh
total 36K
-rw-rw-r-- 1 appadm appadm 2.2K Jan 10 15:31 business-source.log
-rw-rw-r-- 1 appadm appadm 2.1K Jan 10 15:31 business-sink.log
-rw-rw-r-- 1 appadm appadm 282 Jan 10 15:31 business-check.log
-rw-rw-r-- 1 appadm appadm 3.1K Jan 10 15:31 source.log
-rw-rw-r-- 1 appadm appadm 3.3K Jan 10 15:31 sink.log
-rw-rw-r-- 1 appadm appadm 422 Jan 10 15:31 kafka-sink.log
-rw-rw-r-- 1 appadm appadm 422 Jan 10 15:31 kafka-source.log
-rw-rw-r-- 1 appadm appadm 3.3K Jan 10 15:31 check.log
-rw-rw-r-- 1 appadm appadm 2.1K Jan 10 15:31 kafka-check.log[root@mysqldb datacheck]# ls -l /ops/portal/workspace/2/logs/
total 24
drwxrwxr-x 2 appadm appadm 204 Jan 10 15:30 datacheck
drwxrwxr-x 2 appadm appadm 51 Jan 10 15:30 debezium
-rw-rw-r-- 1 appadm appadm 162 Jan 10 15:31 error.log
-rw-rw-r-- 1 appadm appadm 17400 Jan 10 15:31 full_migration.log[root@mysqldb datacheck]# find /ops -name schema-registry.log
/ops/portal/workspace/2/logs/debezium/schema-registry.log
/ops/portal/tools/debezium/confluent-5.5.1/logs/schema-registry.log
11. 增量迁移
11.1. PG里面创建第二个库
create database world2 with dbcompatibility='b';
11.2. 创建在线迁移任务

11.3. 启动

-
全量迁移完成并校验成功后进入增量迁移

11.4. 在mysql端进行DDL和DML
mysql 端进行了5个事务
root@localhost 16:08:00 [world]> create table t1(id int primary key,name varchar(32));
Query OK, 0 rows affected (0.01 sec)root@localhost 16:08:31 [world]> insert into t1 values(1,'zhangsan');
Query OK, 1 row affected (0.01 sec)root@localhost 16:08:45 [world]> insert into t1 values(2,'22'),(3,'33');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0root@localhost 16:09:00 [world]> create table city_copy like city;
Query OK, 0 rows affected (0.03 sec)root@localhost 16:09:22 [world]> insert into city_copy select * from city;
Query OK, 4079 rows affected (0.06 sec)
Records: 4079 Duplicates: 0 Warnings: 0

上面一直卡住,再起一个的时候报错(内存不足):
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000680000000,
中间还有一次翻车了
py_opengauss.exceptions.ClientCannotConnectError: could not establish connection to server
CODE: 08001
LOCATION: CLIENT
CONNECTION: [failed]
failures[0]:
socket('192.168.2.3', 5432)
py_opengauss.exceptions.InsufficientPrivilegeError: Please use the original role to connect B-compatibility database first, to load extension dolphin
CODE: 42501
LOCATION: SERVER
CONNECTOR: [IP4] pq://datakit:***@192.168.2.3:5432/world4?[sslmode]=disable
category: None
DRIVER: py_opengauss.driver.pq3.Driver
第6次增量
在mysql端进行增删改和DDL
root@localhost 16:48:04 [world]> delete from t1 where id=3;
Query OK, 1 row affected (0.01 sec)root@localhost 16:48:12 [world]> insert into t1 values(4,44);
Query OK, 1 row affected (0.01 sec)root@localhost 16:48:24 [world]> update t1 set name=222 where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0root@localhost 16:48:36 [world]> update t1 set name=2223 where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0root@localhost 16:49:03 [world]> create table t2 (id int primary key, name char(20));
Query OK, 0 rows affected (0.01 sec)root@localhost 16:49:41 [world]> insert into t2 select * from t1;
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0

停止增量

12. 反向迁移

12.1. 在PG端进行增删改
world4=# \c world4
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "world4" as user "omm".
world4=# set search_path=world;
SET
world4=# select * from t2;id | name
----+----------------------1 | zhangsan 2 | 2223 4 | 44
(3 rows)world4=# insert into t2 values(5,55);
INSERT 0 1
world4=# update t2 set name=5555 where id=5;
UPDATE 1
world4=# delete from t2 where id=1;
DELETE 1

12.2. PG端DDL
PG建表无法同步到mysql,但是继续在PG继续进行DML,原有表的数据依然能同步到mysql
orld4=# create table pg_table( id bigint primary key);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pg_table_pkey" for table "pg_table"
CREATE TABLE
world4=# create table t3(id bigint primary key);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t3_pkey" for table "t3"
CREATE TABLE
world4=# show tables;Tables_in_world
-----------------citycity_copycountrycountrylanguagepg_tablet1t2t3
(8 rows)world4=# update t2 set name=55555555 where id=5;
UPDATE 1
world4=# create table t4(id bigint);
CREATE TABLE
world4=# insert into t4 values(1),(2);
INSERT 0 2
world4=# select * from t4;id
----12
(2 rows)

root@localhost 17:01:41 [world]> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city |
| city_copy |
| country |
| countrylanguage |
| t1 |
| t2 |
+-----------------+
6 rows in set (0.00 sec)root@localhost 17:03:08 [world]> select * from t2;
+----+----------+
| id | name |
+----+----------+
| 2 | 2223 |
| 4 | 44 |
| 5 | 55555555 |
+----+----------+
3 rows in set (0.00 sec)
至此,迁移部分实践分享结束,欢迎大家一起交流学习。
相关文章:
【项目实战经验】DataKit迁移MySQL到openGauss(下)
上一篇我们分享了安装、设置、链接、启动等步骤,本篇我们将继续分享迁移、启动~ 目录 9. 离线迁移 9.1. 迁移插件安装 中断安装,比如 kill 掉java进程(安装失败也要等待300s) 下载安装包准备上传 缺少mysqlclient lib包 mysq…...
AI预测体彩排3第2弹【2024年4月13日预测--第1套算法开始计算第2次测试】
各位小伙伴,今天实在抱歉,周末回了趟老家,回来比较晚了,数据今天上午跑完后就回老家了,晚上8点多才回来,赶紧把预测结果发出来吧,虽然有点晚了,但是咱们前面说过了,目前的…...
【13137】质量管理(一)2024年4月串讲题组一
目录 1.选择题 2.多选题 3.简答题 4.论述题 5.计算题 6.论述题 【13137】质量管理-速 记 宝 典【全国通用】</...
Go语言中工作负载类型对并发的影响
在实际工作开发中我们需要根据工作负载是CPU密集型还是I/O密集型,使用不同的方式来解决问题。下面我们先来看这些概念,然后再讨论其影响。 在程序执行时,工作负载的执行时间会受以下因素限制: CPU的速度--例如,运行归并排序算法。工作负载被称为CPU密集型。I/O速度--例如…...
常用的Python内置函数
目录 1. getattr() 函数: 2. setattr() 函数: 3. id():返回对象的唯一标识符(内存地址)。 4. type():返回对象的类型。 5. isinstance(obj, classinfo):判断对象是否是某种类型或其子类的实例。 6. issubclass(class1, class2):判断一个类是否是另一个类的子类。 …...
MAC(M1芯片)编译Java项目慢且发热严重问题解决方案
目录 一、背景二、排查三、解决四、效果以及结果展示五、总结 一、背景 使用idea编译项目等操作,经常性发热严重,并且时间慢。直到昨天编译一个项目用时30分钟,电脑温度很高,并且有烧灼的味道,于是有了此篇文章。 二、…...
如何循环pandas格式的数据
如何循环pandas格式的数据 要循环处理 Pandas 格式的数据,可以使用 iterrows() 方法或者 iteritems() 方法。 iterrows() 方法: import pandas as pd# 假设 df 是你的 Pandas DataFrame for index, row in df.iterrows():# 在这里处理每一行的数据&am…...
新零售SaaS架构:客户管理系统架构设计(万字图文总结)
什么是客户管理系统? 客户管理系统,也称为CRM(Customer Relationship Management),主要目标是建立、发展和维护好客户关系。 CRM系统围绕客户全生命周期的管理,吸引和留存客户,实现缩短销售周…...
Apache Spark
Apache Spark是一种开源的分布式计算系统,主要用于大数据处理和分析。Spark提供了一个高效的计算引擎,可以在分布式环境中处理大规模数据集。它支持多种编程语言,包括Scala、Java、Python和R。 Spark的核心概念是弹性分布式数据集࿰…...
CentOS7编译ZLMediaKit并使能WebRTC
使能WebRTC需要libsrtp库, libsrtp库需要openssl, 所以第一步先安装openssl, 系统自带的版本是1.0.2的, libsrtp需要1.1.1以上版本, 需要使用源码进行编译; GCC准备 需要安装gcc7以上版本, 并切换到gcc7的编译环境 yum install centos-release-scl yum install devtoolset-7…...
【数据交换格式】网络socket编程温度采集智能存储与上报项目技术------JSON、TLV
作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…...
IP地址定位技术在各领域的作用
IP地址定位是通过确定IP地址的物理位置来定位一个设备的技术,它在现代社会的多个领域中都有着广泛的应用。以下将详细探讨IP地址定位的应用场景,以期对读者有所启发。 首先,在网络安全领域,IP地址定位发挥着至关重要的作用。网络…...
代码随想录 538. 把二叉搜索树转换为累加树
题目 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下,二叉搜索树满足下列约束条件&a…...
JavaWeb--前端--01HTML和CSS
文章目录 1 前端开发介绍2 开发工具3 文档查阅4 VSCode的插件 1 前端开发介绍 Web标准也称为网页标准,由一系列的标准组成,大部分由W3C( World Wide Web Consortium,万维网联盟)负责制定。由三个组成部分:…...
Oracle SQL中的DECODE函数与NVL函数:区别与应用场景详析
Oracle SQL中的DECODE函数与NVL函数:区别与应用场景详析 引言1. NVL函数简介与使用示例2. DECODE函数简介与使用示例3. NVL与DECODE函数的区别4. 使用场景举例结论 引言 在Oracle数据库开发和数据分析过程中,DECODE函数和NVL函数都是非常实用且常见的工具…...
算法设计与分析实验报告c++实现(N皇后问题、卫兵布置问题、求解填字游戏问题、图的m着色问题)
一.N皇后问题 基本原理和思路: 从一条路往前走,能进则进,不能进则退回来,换一条路再试。在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一…...
深入探索Linux中的libgdbus:GDBus库的应用和实现
引言 在Linux系统中,DBus是一种高效的进程间通信(IPC)机制,广泛应用于桌面环境和系统服务之间的通信。GDBus是基于GLib库的DBus实现,作为libgdbus的一部分提供。它旨在提供一种简洁、高效的方式来实现DBus通信。通过深…...
MacOS下Qt 5开发环境安装与配置
最近笔者在MacOS中使用Qt Creator开发Qt程序时遇到了一些问题,在网上查了不少资料,都没有找到解决方案,只有自己进行研究摸索了,今天晚上终于将目前遇到的问题全部解决了,特记录下来分享给大家。 笔者使用的是MacOS 1…...
jquery 实现倒计时
$(".tableText").click(function () { var time 60; var timer setInterval(function(){ time--; $(".tableText").text("("time"秒)重发"); if(time0){ clearI…...
MYSQL 5.7重置root密码
Mysql 5.7重置root密码 如果您忘记了MySQL 5.7的root密码,可以通过以下步骤重置: 停止MySQL服务。在命令行中输入以下命令: systemctl stop mysqld启动MySQL服务并跳过授权表。在命令行中输入以下命令: mysqld_safe --skip-gra…...
InfiniBand(IB)网络介绍 (英伟达/Mellanox)的IB卡,从2022年底起就已经正式对中国断供;你现在用的shca IB卡,是国产替代的曙光自研IB卡
InfiniBand(IB) 物理上:IB专用网卡(HCA) IB专用交换机 光纤/铜线协议:完全独立的IB协议,不是TCP/IP定位:超级高铁专线——只给超算、AI集群、高性能存储用核心黑科技:RD…...
2026最权威的六大AI写作平台解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 作为智能写作工具来讲的 DeepSeek,能够高效地促进学术论文撰写效率有所提升。于选…...
三步构建专业级抖音内容管理系统:douyin-downloader架构解析与实践指南
三步构建专业级抖音内容管理系统:douyin-downloader架构解析与实践指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browse…...
当你的客户想运行自己的工作流,你该怎么办
一个平台开发者绕不开的困境 假设你在构建一个 SaaS 平台,你的客户可以在上面写自己的业务逻辑——也许是一个低代码工具,也许是一个 AI 驱动的自动化平台,也许是一个让每个团队定义自己 CI 流水线的开发工具。 客户的逻辑各不相同࿰…...
从点灯到工程模板:TMS320F28335项目文件结构最佳实践与APP文件夹管理
从点灯到工程模板:TMS320F28335项目文件结构最佳实践与APP文件夹管理 当你第一次让TMS320F28335开发板上的LED闪烁时,那种成就感无与伦比。但随着项目复杂度提升——PWM波形生成、ADC采样、通信协议栈叠加进来——原本简单的工程很快会变成一团乱麻。我曾…...
PCL2启动器完整使用指南:从零开始打造个性化Minecraft体验
PCL2启动器完整使用指南:从零开始打造个性化Minecraft体验 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL PCL2启动器是一款功能强大的Minecraft游戏启动工具&…...
编程入门必看的10个学习误区,踩中一个就白学半年
文章目录前言误区一:盲目跟风热门语言,频繁切换误区二:过度依赖AI生成代码,不理解底层逻辑误区三:只看视频不写代码,眼高手低误区四:死磕算法,忽视工程实践误区五:只学框…...
告别配置焦虑:手把手教你用Intel MPI在Visual Studio 2019里跑通第一个Fortran并行程序
告别配置焦虑:手把手教你用Intel MPI在Visual Studio 2019里跑通第一个Fortran并行程序 第一次接触并行计算时,面对密密麻麻的配置选项和晦涩的文档,你是否也感到无从下手?作为过来人,我完全理解这种焦虑。本文将带你用…...
基于Gemini大模型的自动化学术研究工具:从原理到实践
1. 项目概述:当AI学会自主研究 最近在GitHub上闲逛,发现了一个让我眼前一亮的项目: supratikpm/gemini-autoresearch 。简单来说,这是一个利用Google的Gemini大语言模型,实现自动化、端到端学术研究的工具。作为一名…...
从HackRF到USRP:软件无线电设备怎么选?聊聊我的B210/B205mini上手体验
软件无线电设备选购指南:从HackRF到USRP的实战经验分享 第一次接触软件无线电设备时,面对琳琅满目的型号和参数,我完全陷入了选择困难症。HackRF One、LimeSDR、BladeRF、USRP...每个设备都有其独特的优势和局限,而价格区间更是从…...
