【项目实战经验】DataKit迁移MySQL到openGauss(下)
上一篇我们分享了安装、设置、链接、启动等步骤,本篇我们将继续分享迁移、启动~
目录
中断安装,比如 kill 掉java进程(安装失败也要等待300s)
mysql如果是二进制安装的话,我这个版本是没有18这个lib包的
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 directory During 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 mysql libmysqlclient.so.20 (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so.20 libmysqlclient.so.20 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.20 libmysqlclient.so.18 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.18 libmysqlclient.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: 0 root@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: 0 root@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: 0 root@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 ----------------- city city_copy country countrylanguage pg_table t1 t2 t3 (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 ---- 1 2 (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)
至此,迁移部分实践分享结束,欢迎大家一起交流学习。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源日报 | Linus亲自动手;Elastic公司重磅开源新项目;Meta无限长文本大模型已开源;华为今年最关键是鸿蒙
欢迎阅读 OSCHINA 编辑部出品的开源日报,每天更新一期。 # 2024.4.18 今日要点 开源富文本编辑器 Quill 2.0 重磅发布 Quill 现在是一个有效的 ESM 包,以便更好地支持生态系统(例如,打包器)和树摇(tree-shaking)功能 支持嵌套 Quill 迁移到 TypeScript 提供了官方 TypeScript 声明 迁移到 Vitest 进行单元测试 迁移到 Playwright 进行端到端测试 将网站迁移到 Gatsby Linus 亲自动手,阻止内核开发者用空格替换制表符 在最近的 Linux 6.9-rc4 版本中,Linus Torvalds 采取了一个特别的方法来应对那些不能正确处理制表符(tabs)的 Kconfig 解析器。Kconfig 是 Linux 内核配置系统的一部分,用于定义内核的可配置选项。 事件起因是有一个等待被合并的内核补丁引起了 Linus 注意,该补丁目的是将内核跟踪(kernel tracing)Kconfig 文件中的一个制表符替换为一个空格字符。这个替换导致某些第三方的内核配置解析工具在处理制表符时出现了问...
- 下一篇
GreatSQL 死锁案例分析
1.背景概述 客户业务发生死锁的报错,根据业务程序日志及业务流程,发现造成死锁的原因是:事务1 delete + insert ,事务2 delete + insert 2个事务交替执行导致的死锁;由于GAP锁阻塞了插入意向锁,并且当delete的数据存在时死锁不会发生,当delete的数据不存在时,会发生死锁。 2.问题复现 本次测试基于 GreatSQL-8.0.32-24,隔离级别为 RR 2.1 创建测试表 greatsql> create database test; greatsql> create table test(c1 int unique key, c2 int, c3 int, c4 int); greatsql> insert into test values (1,1,1,1),(3,3,3,3),(5,5,5,5),(9,9,9,9); greatsql> select * from test; +------+------+------+------+ | c1 | c2 | c3 | c4 | +------+------+--...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7