DataKit6.0将MySQL8.0迁移至openGauss6.0

举报
Gauss松鼠会小助手 发表于 2025/06/26 09:45:32 2025/06/26
【摘要】 本文档是基于centos7.9操作系统部署Datakit 6.0,Datakit 6.0、openGauss6.0和PortalControl6.0在一台服务器上,openGauss6.0和MySQL8.0为非容器化部署。

本文作者:董小姐

本文档是基于centos7.9操作系统部署Datakit 6.0,Datakit 6.0、openGauss6.0和PortalControl6.0在一台服务器上,openGauss6.0和MySQL8.0为非容器化部署。

迁移需求

将源库的dataexchange数据迁移至目标库的dataexchange中,具体信息如下:

image.png

迁移前准备

注意事项

  • 当前平台运行依赖于openJDK11
  • 平台使用的数据库,当前仅支持openGauss数据库,并且需要提前创建database。
  • 需要将部署服务器IP配置在平台使用的数据库openGauss的白名单列表中。

支持的服务器系统

openEuler 20.3LTS(x86_x64,ARM)

centos7.x(x86_x64)

注:经验证,在openEuler 22.03 LTS可以完美运行。

[omm@top175 ~]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

jdk升级至11版本

jdk下载地址请到官网下载

--当前JDK版本
[root@top175 ~]# java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)

[root@top175 ~]# rpm -qa |grep jdk
copy-jdk-configs-3.3-10.el7_5.noarch

yum -y remove copy-jdk-configs.noarch 


--压缩安装包
tar -zxvf /opt/jdk-11.0.22_linux-x64_bin.tar.gz -C /usr/local
ln -s /usr/local/jdk-11.0.22/bin/java /usr/bin/java

--环境变量导入
vi /etc/profile

export JAVA_HOME=/usr/local/jdk-11.0.22
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

--环境变量生效
source /etc/profile

--确认安装是否成功
[root@top175 jdk-11.0.22]# java -version
java version "11.0.22" 2024-01-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.22+9-LTS-219)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.22+9-LTS-219, mixed mode)

或采用rpm安装方式升级java版本

# 检查rpm -qa | grep java
rpm -qa | grep jdk 
# 卸载
rpm -qa | grep java | xargs rpm -e --nodeps
rpm -qa | grep jdk | xargs rpm -e --nodeps
# 安装
rpm -ivh jdk-11.0.17_linux-x64_bin.rpm
# 验证
[root@test01 tmp]# java -version
java version "11.0.17" 2022-10-18 LTSJava(TM) SE Runtime Environment 18.9 (build 11.0.17+10-LTS-269)Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.17+10-LTS-269, mixed mode)

opengauss配置参数更改

--更改配置文件
vi /topsoft/huawei/install/data/dn/postgresql.conf
更改前
listen_addresses = 'localhost'
wal_level = hot_standby  # minimal, archive, hot_standby or logical
更改后
listen_addresses = '*'
wal_level = logical             # minimal, archive, hot_standby or logical

vi /topsoft/huawei/install/data/dn/pg_hba.conf
添加
host    all    all    0.0.0.0/0   md5

--重启库
gs_om -t stop
gs_om -t start

运维工具DataKit介绍

openGauss官方文档:Data Kit

DataKit使用文档和开发文档:content/zh/docs/ToolandCommandReference/DataKit.md · openGauss/docs

功能介绍

openGauss的开发运维涉及到很多复杂操作,DataKit提供了一个可视化操作的运维界面,可以帮助用户管理,安装,监控运维自己的openGauss数据库以及对应的物理机资源。

DataKit是一个以资源(物理机,数据库)为底座的开发运维工具,将上层的开发运维工具插件化,各插件之间相互独立,方便用户按需引入。各插件围绕DataKit的资源中心进行扩展开,完成数据库的运维,监控,迁移,开发,建模等复杂的操作。

Datakit安装部署在服务器上,是一个自动化运维的平台。可以部署不同类型的插件来实现不同的功能,是跟随opengauss6.0发布的新软件,也可以用来监控小于6.0的opengauss版本。

原理简介

DataKit是基于spring-brick开发的插件化的工具,前台使用vue,后台使用spring-bot技术栈。DataKit基座提供资源管理,安全中心,日志中心等基础的公共能力,具体的数据库安装,运维,监控,数据迁移等能力是基于spring-brick开发的插件工具,可以灵活的在基座上面安装卸载,方便客户按需使用。

特性优势

本项目是基于Web的openGauss的可视化的一体化工具:DataKit,目的是方便客户使用和管理openGauss可视化工具,可以为客户降低openGauss数据库安装使用门槛,做到安全中心管理,插件管理,以及其它功能包括一键化部署、卸载、组件化安装、多版本升级和日常运维。

运维工具DataKit安装

jar包下载有以下两种方式

1.通过openGauss官网下载

2.通过opengauss官方gitee仓库下载

openGauss官方gitee仓库的安装包一般会比openGauss官网的安装包版本高,包含最新功能和基础修复。

由于datakit版本需要和下文中的迁移套件有版本依赖关系,所以

本文档采用opengauss官网下载最新版本的安装包和opengauss官网下载迁移套件

上传并解压Datakit安装包

下载后安装包上传至/home/omm/soft目录下

--创建DataKit安装包存放位置目录
mkdir -p /home/omm/soft

--查看并解压DataKit安装包
[root@top175:/root]$ cd /home/omm/soft
[root@top175:/home/omm/soft]$ ls -l
total 878700
-rw-r--r-- 1 root root 899781101 Oct 15 18:17 Datakit-6.0.0.tar.gz

--查看解压后的内容
[root@top175:/home/omm/soft]$ ls -l
total 985604
-rw-r--r-- 1 root root      1379 Sep 29 10:16 application-temp.yml
-rw-r--r-- 1 root root       320 Sep 29 10:06 build_commit_id.log
-rw-r--r-- 1 root root 899781101 Oct 15 18:17 Datakit-6.0.0.tar.gz
drwxr-xr-x 2 root root      4096 Sep 29 10:16 doc
-rw-r--r-- 1 root root 109445199 Sep 29 10:16 openGauss-datakit-6.0.0.jar
-rw-r--r-- 1 root root      1677 Sep 29 10:16 run.sh
drwxr-xr-x 2 root root      4096 Sep 29 10:16 visualtool-plugin
[root@top175:/home/omm/soft]$ ls -l visualtool-plugin/
total 834392
-rw-r--r-- 1 root root  82833727 Sep 29 10:16 alert-monitor-6.0.0-repackage.jar
-rw-r--r-- 1 root root  58341751 Sep 29 10:16 base-ops-6.0.0-repackage.jar
-rw-r--r-- 1 root root  63093773 Sep 29 10:16 compatibility-assessment-6.0.0-repackage.jar
-rw-r--r-- 1 root root  32585208 Sep 29 10:16 data-migration-6.0.0-repackage.jar
-rw-r--r-- 1 root root  64090612 Sep 29 10:16 MetaTune-6.0.0-repackage.jar
-rw-r--r-- 1 root root  37983131 Sep 29 10:16 monitor-tools-6.0.0-repackage.jar
-rw-r--r-- 1 root root  42026528 Sep 29 10:16 oauth-login-6.0.0-repackage.jar
-rw-r--r-- 1 root root 247163511 Sep 29 10:16 observability-instance-6.0.0-repackage.jar
-rw-r--r-- 1 root root  45877188 Sep 29 10:16 observability-log-search-6.0.0-repackage.jar
-rw-r--r-- 1 root root  81130700 Sep 29 10:16 observability-sql-diagnosis-6.0.0-repackage.jar
-rw-r--r-- 1 root root  99260679 Sep 29 10:16 webds-plugin-6.0.0-repackage.jar

创建DataKit工作目录

mkdir -p /ops/server/openGauss-visualtool/logs /ops/server/openGauss-visualtool/config/visualtool-plugin /ops/ssl /ops/files

上传DataKit的jar包

cd /home/omm/soft
cp openGauss-datakit-6.0.0.jar /ops/server/openGauss-visualtool/

配置文件application-temp.yml

上传本地application-temp.yml文件到/ops/server/openGauss-visualtool/config/目录下,并修改文件中的数据库ip、port、database、dbuser、dbpassword,test-while-idle配置为false。

此处使用openGauss作为后台数据库。

cd /ops/server/openGauss-visualtool/config
vi application-temp.yml
:%s#/ops#/topsoft/server/DataKit5#g

修改前

--查看原配置文件内容
cat application-temp.yml
system:
  # File storage path
  defaultStoragePath: /ops/files
  # Whitelist control switch
  whitelist:
    enabled: false
server:
  port: 9494
  ssl:
    key-store: /ops/ssl/keystore.p12
    key-store-password: 123456
    key-store-type: PKCS12
    enabled: true
  servlet:
    context-path: /
logging:
  file:
    path: /ops/logs/
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.opengauss.Driver
    url: jdbc:opengauss://ip:port/database?currentSchema=public&batchMode=off
    username: dbuser
    password: dbpassword
    druid:
      test-while-idle: true
      test-on-borrow: true
      validation-query: "select 1"
      validation-query-timeout: 10000
      connection-error-retry-attempts: 0
      break-after-acquire-failure: true
      max-wait: 6000
      keep-alive: true
      max-active: 30
      min-evictable-idle-time-millis: 600000
management:
  server:
    port: 9494

更改后

cat application-temp.yml
system:
  # File storage path
  defaultStoragePath: /ops/files
  # Whitelist control switch
  whitelist:
    enabled: false
server:
  port: 9494
  ssl:
    key-store: /ops/ssl/keystore.p12
    key-store-password: 123456
    key-store-type: PKCS12
    enabled: true
  servlet:
    context-path: /
logging:
  file:
    path: /ops/logs/
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.opengauss.Driver
    url: jdbc:opengauss://192.168.3.175:15400/datakit?currentSchema=public&batchMode=off
    username: datakit
    password: Topnet_1234
    druid:
      test-while-idle: true
      test-on-borrow: true
      validation-query: "select 1"
      validation-query-timeout: 10000
      connection-error-retry-attempts: 0
      break-after-acquire-failure: true
      max-wait: 6000
      keep-alive: true
      max-active: 30
      min-evictable-idle-time-millis: 600000
management:
  server:
    port: 9494

生成ssl文件

root用户下操作

使用keytool工具生成密钥,需要注意的是keytool -genkey命令用于创建SSL文件(包括密钥对和证书),并且它与 JDK (Java Development Kit)是有关系的。keytool 是JDK提供的一个工具,用于管理密钥库和证书,用于加密和身份验证等安全通信。而我们前面提到该平台依赖JDK11环境,所以这里使用JDK11来创建密钥文件。

修改并执行如下命令生成密钥信息。修改-storepass参数值与application.yml配置文件中的key-store-password值保持一致,默认时两者均为123456;-keystore路径值与配置文件application-temp.yml中的key-store路径值保持一致。

su - root

keytool -genkey -noprompt \
    -dname "CN=opengauss, OU=opengauss, O=opengauss, L=Beijing, S=Beijing, C=CN"\
    -alias opengauss\
    -storetype PKCS12 \
    -keyalg RSA \
    -keysize 2048 \
    -keystore /ops/ssl/keystore.p12 \
    -validity 3650 \
    -storepass 123456

需要修改的参数:
-keystore /ops/ssl/keystore.p12  #位置,视情况修改
-storepass 123456  #123456密码,视情况修改    
注意:
storepass与配置文件application-temp.yml中的key-store-password保持一致
keystore路径与配置文件application-temp.yml中的key-store路径保持一致

创建DataKit运行用户

groupadd ops
useradd -m -g ops ops
chown -R ops:ops /ops

启动与日常运维

--切换目录
su - ops
cd /ops/server/openGauss-visualtool

--启动应用  -Xms2048m -Xmx4096m可视情况更改
nohup java -Xms1024m -Xmx2048m -jar /ops/server/openGauss-visualtool/openGauss-datakit-6.0.0.jar --spring.profiles.active=temp >/ops/server/openGauss-visualtool/logs/visualtool-main.out 2>&1 &

登录datakit平台

启动成功后,可通过浏览器界面访问datakit平台

初始用户:admin

初始密码:admin123

首次登录需修改初始密码

admin1234
2ab34102170bd7e0cce0a86649594b76_20241025-44214018-4170-4410-a928-8af54fc6c593.png

2dbd7a98f53ec99cf84fe58c6b274c13_20241025-5480b2ad-a722-47f0-a283-829e92892f23.png

迁移步骤

前置操作

源库检查用户或更改加密方式

该步骤必须做,不然后面启动迁移报错

--源库检查用户加密方式
select host,user,plugin,authentication_string from user;

输出如下:
host	     user	                     plugin	              authentication_string
%	        bf_ops	          caching_sha2_password	$A$005$m1M2%4SS8A^'Nfo07fFqb8cifguGTcMjWBJJuCdpwp1ZqpCDYK9PfpGQZv0
%	        root	            caching_sha2_password	$A$005$C%yk~vR	%\WZWXZoGExiNd.FaHld2muR3pevPW.w5E3Kc85lHOeYMPOYKB
localhost	mysql.infoschema	caching_sha2_password	$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
localhost	mysql.session	    caching_sha2_password	$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
localhost	mysql.sys	        caching_sha2_password	$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
localhost	root	            caching_sha2_password	$A$005$9kTQi#bH2:"~@kDCvVlJDpQSDcO4iSfrdbSgACVUSDon1vlf40HZiYdqD

如果不是,按以下语句进行更改加密方式

--配置文件中[mysqld]下增加以下参数并重启
[mysqld]
default_authentication_plugin=mysql_native_password

--重启mysql服务
systemctl restart mysqld
systemctl status mysqld

--源库中更改用户加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;

目标库准备

目标库更改参数

控制是否允许创建user@host、‘user’@'host’之类的用户并兼容mysql的user@host认证鉴权,对兼容mysql
的user@host进行认证时,需要在配置文件postgresql.conf中设为on。
取值范围:布尔型 默认值:off

--登录数据库
gsql -d postgres -p 15400

--查看参数  默认为off
show b_compatibility_user_host_auth;

openGauss=# show b_compatibility_user_host_auth;
 b_compatibility_user_host_auth
--------------------------------
 off
(1 row)

--配置文件中增加参数
永久性修改b_compatibility_user_host_auth为on
su - omm
vi /topsoft/huawei/install/data/dn/postgresql.conf 
增加
b_compatibility_user_host_auth=on

--重启数据库
gs_om -t stop
gs_om -t start

--查看参数是否生效
gsql -d postgres -p 15400
show b_compatibility_user_host_auth;

openGauss=# show b_compatibility_user_host_auth;
 b_compatibility_user_host_auth
--------------------------------
 on
(1 row)

目标库创建业务用户和数据库(重要)

openGauss支持A、B、C和PG四种兼容模式,分别表示兼容Oracle、MySQL、Teradata(TD)和PostgreSQL。但是C目前已经放弃支持。因此常用的取值是A、B、PG,不同兼容模式下的语法行为存在一定差异,默认为A兼容模式。

迁移前openGauss创建与对象digital同名的用户,并赋予一定的权限。

注意每次创建库时视情况设置兼容模式。

--登录openGauss库
su - omm
gsql -d postgres -p 15400

--创建openGauss连接用户
create user root with password 'Topnet_123';
grant all privileges to root;

--创建digital数据库
create database digital ENCODING = 'UTF8'  dbcompatibility = 'B'  owner  root;
grant all privileges on database digital to root;

--切换到digital数据库下
\c  digital root

--创建和源库同名的迁移对象专用用户(兼容MySQL语法)  必须是反引号不是单引号,必须创建不然后面迁移过程中视图迁移报错
set b_compatibility_user_host_auth=on;
create user `root`@`%` with password 'Topnet_123';
grant all privileges to `root`@`%`;

注意:

  • 通过CREATE USER创建的用户,默认具有LOGIN权限。
  • 通过CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA。
  • 系统管理员在普通用户同名schema下创建的对象,所有者为schema的同名用户(非系统管理员)。

创建数据源

DataKit实例管理中创建数据源
MySQL和openGauss数据库启动后可在datakit平台–资源中心–实例管理中创建对应的数据源

配置源端数据源

15b64703831569cfecfaaea8d88f242e_20241025-bad7c4cd-fc4b-4510-b5bd-fabcbd58c160.png

配置目标数据源

ea5bc6dbbd295796bede2d2bfdf98315_20241025-f5a97742-2fe2-4038-886a-ee8fbcc745af.png

创建完成后DataKit平台界面会显示对应的数据源
d89f63dcfba05efb0e4a4b7a9b9966a1_20241025-fac13571-fcd0-4b23-80ba-1f2386ff9e9a.png

服务器管理配置

添加服务器

DataKit服务器管理中添加服务器
在datakit平台–资源中心–服务器管理中添加对应的服务器,被管理的机器才可用于安装迁移插件,本文档用目标openGauss服务器作为迁移插件的执行机
请注意这里密码为root用户的密码,并需要勾选记住密码,否则将不能用作迁移插件的执行机。
bcf5ac88a2b63ebb9ef214ad32cb24cd_20241025-903eafd5-45d3-4666-853b-d9e2cb7bddbc.png

添加服务器后即可看到执行机,如下:
29fcfcd29eb8ad7547ac371acceb8e73_20241025-76843e35-4bfb-4081-8b69-e9976ed4876b.png

新增用户

1.操作系统上创建用户

--操作系统上创建用户
useradd top
passwd top

2.Datakit中添加用户

f616d78196eff41f0d4e7c662ce9b7a7_20241025-de7bbae8-2983-41e6-9157-bd28710c8ef6.png

6f27d99c70681b4ce773a6b69510847c_20241025-e3a84f0b-69f6-4d54-952d-b5477a36037d.png

6419a71e33613f911211a04842cf2bf9_20241025-76bd28d6-2d34-4aa7-ac45-3be0f52ffdeb.png

5500daf913688fc82e4b28a5b295ca8b_20241025-87334999-08be-4353-9fd8-16519dc3f370.png

问题处理

添加用户提示报错

--问题描述
添加用户提示报错,且一直转圈转圈

--原因
操作系统上未创建用户

--解决办法
操作系统上需事先创建用户

7703037f66264c1ca409625c71a57550_20241025-4cfb26a6-d50a-4d60-9ec8-edd57c50b8fa.png

安装data-migration插件

如果不安装,左侧目录树里没有数据迁移菜单。这个地方设计的不合理,明明服务器上解压安装后已经有这些插件了为啥还让将文件拖入或上传安装?为啥不是在线安装或者是手动安装?无奈将jar包下载到本地,再上传安装,时间游bd戏浪费了。

将服务器上/home/omm/soft/visualtool-plugin目录下的data-migration-6.0.0-repackage.jar插件下载到本地。

3fdf1ec56cbb5796769db8a40492bd43_20241025-5803ee28-040f-4ce0-9287-7ae97c7ac82e.png

上传data-migration-6.0.0-repackage.jar插件并安装,安装后会将插件复制到/ops/server/openGauss-visualtool目录下
89c953d615824975b5ff561ab5279d16_20241025-6e6c9ab4-7e33-45a1-a7a1-b35a49503c83.png

f33c84e82a60bec5043482a5e2b5c9a5_20241025-b44a96c5-6e71-445d-851f-0a67ea0040be.png

e7651b2765df5d2ec9ca3007a8e6794e_20241025-09239f53-6afc-434c-8a1d-1a99dd0f235c.png

迁移配置

MySQL迁移全流程包括全量迁移、全量校验、增量迁移、增量校验和反向迁移五个阶段,下面将详细介绍迁移全流程。

创建迁移任务

在Datakit平台数据迁移–迁移任务中心–创建迁移任务,选定源端数据库(source_db)和目的端数据库(target_db),添加子任务,迁移过程模式选择在线模式。

迁移模式包括离线和在线两种模式,其中离线模式包括全量迁移和全量校验两个阶段,在线模式包括全量迁移、全量校验、增量迁移、增量校验、反向迁移和五个阶段,本次实践选择在线模式,囊括业务割接的整个过程。

详细描述如下:

选择迁移源库和目的库

(1)在Datakit平台迁移任务中心–创建数据迁移任务

f22a18fc4823aa435625d300added490_20241025-348a8560-c9d5-4820-a0f7-018bb1cba6a8.png

(2)选定源端数据库(source_db)和目的端数据库(target_db),添加子任务,迁移过程模式选择在线模式,这个地方需注意选择最大页数或者逐页全选。

f7d0eb72ff1c4ae35059a449fe275a51_20241025-c629772c-ef54-46a0-bf0d-76f498d0b208.png

06faab3f1c47ba524749c53c23c9a438_20241025-0194ab65-98a4-4bd1-b563-376fac2a8826.png

配置迁移过程参数

可直接使用默认参数,无需修改,或者根据实际自定义
7f22fb03cd0a8912d20a74b739cd6c7c_20241025-80b9b391-1ca3-4eef-9eda-878277c19c12.png

下载PortalControl插件

gs_rep_portal是一个用Java编写的,在linux系统上运行的,集成了全量迁移、增量迁移、反向迁移、数据校验的工具。gs_rep_portal支持以上工具的一键式安装上述工具,设定迁移任务,任务根据用户设定的执行计划顺序的调用相应工具完成每个迁移步骤,并能实时展示每个步骤的状态、进度、异常原因等。

注意事项

  • portal在执行增量迁移、反向迁移、增量校验时需要使用curl工具。
  • 同一个迁移计划的增量迁移和反向迁移不会同时开启,如果一个计划中包含了增量迁移和反向迁移,那么需要用户手动停止增量迁移,启动反向迁移。当用户启动反向迁移之后,无法再启动增量迁移。
  • portal使用的workspace.id只能为小写字母与数字的组合。
  • portal在启动多个计划时,需要保证MySQL数据库实例各不相同,openGauss端数据库各不相同,且同一个MySQL数据库实例和openGauss端数据库的增量迁移和反向迁移不能同时开启。

创建数据迁移任务

MySQL迁移全流程包括全量迁移、全量校验、增量迁移、增量校验和反向迁移五个阶段,下面将详细介绍迁移全流程。

1.创建迁移任务

在Datakit平台数据迁移–迁移任务中心–创建迁移任务,选定源端数据库和目的端数据库,添加子任务,迁移过程模式选择在线模式。

迁移模式包括离线和在线两种模式,其中离线模式包括全量迁移和全量校验两个阶段,在线模式包括全量迁移、全量校验、增量迁移、增量校验、反向迁移和五个阶段,本次实践选择在线模式,囊括业务割接的整个过程。

详细描述如下:

(1)在Datakit平台数据迁移–迁移任务中心–创建迁移任务

(2)选定源端数据库(source_db)和目的端数据库(target_db),添加子任务,迁移过程模式选择在线模式。

46e6290207fa434f74a9dd4ee00b8513_20241025-259c6a31-cb6d-4844-8bd1-2108e449c6b0.png

选择迁移源库和目的库

配置源端

fd5756f86d20b6d25d1930307bcdf9a2_20241025-b27e163f-e85e-4a2a-92d6-2cfc59418ca2.png

a8579ba3e6fd58899b7610c9baff4386_20241025-d09b4a3d-1d27-4621-85ce-7e49c391cf5e.png

配置目标端

88a42e066108ad89c6823309fcf0c82f_20241025-9062e44e-accd-4b2e-8dbd-468b2b892d7c.png

目标端添加子任务

0cc0883a2d6da58952f08c0c60038d12_20241025-4a932a75-e83b-4673-a9c8-a5e0111cbd8f.png

迁移模式有2种:

离线模式:自动执行全量迁移,完成后自动结束,释放资源。

在线模式:自动执行全量迁移+增量迁移,用户手动启动反向迁移,需要用户操作结束迁移,释放资源。

本文档采用离线模式实现MySQL8.0向openGauss6.0.0迁移

配置迁移过程参数

调整内核参数,目的是提升迁移效率;数据库迁移用户为管理员时才能勾选上。

de1dc89f0cdb1fa133054d05d2ee1b61_20241025-060a20c3-9798-45cb-9b0f-a2ec29315fc5.png

安装 PortalControl-6.0.0-x86_64.tar.gz插件
单机“开始安装”
feaa51917d55e09404f5738e2c0630f6_20241025-9aa2f17a-673e-44a5-a2c1-6bdade406e47.png

44d77513933a367749fa08ca8f669a65_20241025-ee16b7d5-cd3b-43ec-a34d-26f294899f54.png

897a761f082c896c32c919a022a3c31a_20241025-4e2f2f53-6c91-4384-9667-50364e1baac3.png

DataKit6.0.0比5.0.0更高完善,头一次点错了,点成了在线安装失败后,清理环境再次离线安装上传PortalControl-6.0.0-x86_64.tar.gz插件,安装成功。

启动迁移

7cb9d281912797aee9bba136b861a321_20241025-e1cea7c7-b83f-40a1-9b64-e99cd0140e8d.png

  • 迁移任务配置文件:/home/top/portal/workspace/12/config/migrationConfig.properties
  • DataKit6.0图形化界面日志查看方式:查看迁移任务右侧详情
  • 服务器上日志路径:/home/top/portal/workspace/7/logs/full_migration.log,每启动一次/home/top/portal/workspace/目录下的数字就会累加1,生成一个新的日志目录,如下:
[root@top175:/root]$ cd /home/top/portal/workspace
[root@top175:/home/top/portal/workspace]$ ls -l
total 32
drwxrwxr-x 6 top top 4096 Oct 21 10:29 1
drwxrwxr-x 6 top top 4096 Oct 21 11:43 2
drwxrwxr-x 7 top top 4096 Oct 21 11:52 3
drwxrwxr-x 7 top top 4096 Oct 21 12:02 4
drwxrwxr-x 7 top top 4096 Oct 23 17:33 5
drwxrwxr-x 7 top top 4096 Oct 23 17:38 6
drwxrwxr-x 7 top top 4096 Oct 23 17:47 7
drwxrwxr-x 8 top top 4096 Oct 25 10:54 8

查看迁移进度

a852732cad3501fcdad8043d7f90ee6c_20241025-0d5b5bec-d9e9-481f-a678-fa547d067ef2.png

扩展

停止迁移步骤

如果迁移过程中发生报错,需要手动停止迁移时,需按一下步骤操作:

单击迁移任务右侧的结束迁移

image.png

重启迁移失败的任务

如果迁移过程中发生报错,手动停止迁移后,需再次启动迁移,步骤如下:

单击迁移任务右侧的结束迁移–>单击迁移任务右侧结束迁移右侧的重置–>最后单击迁移任务右侧的启动。

问题处理

启动迁移后前置校验失败1

问题描述

4c9c896647bd13fdf9c084dbb56db723_20241025-2cffc7c3-79ff-45b9-afb8-98aa2daedbbe.png

2cc126e6eb3f3979d7060d8c5346441b_20241025-a1643287-53e3-43ee-af86-a4bc59f96a95.png

前置校查失败详情
服务可用性: 可用;
数据库连接: MySQL可连接;openGauss可连接;
数据库权限: MySQL全量迁移权限满足;openGauss全量迁移权限满足;
大小写参数: 一致;
MySQL加密方式:不正确, 结果为:caching_sha2_password,应改为default_authentication_plugin=mysql_native_password;
openGauss B兼容库:满足;

解决办法

--更改源端MySQL数据库配置文件
[root@db191 ~]# ps -ef | grep mysql
mysql     1379     1  0 1016 ?      00:21:15 /mysql/app/bin/mysqld --defaults-file=/etc/my.cnf
root     14566 14520  0 10:34 pts/0    00:00:00 grep --color=auto mysql
[root@db191 ~]# vi /etc/my.cnf
[mysqld]下面增加
#认证策略解决登录ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded#
default_authentication_plugin = mysql_native_password 

--重启库
systemctl restart mysqld
systemctl status mysqld

启动迁移后前置校验失败2:Invalid command Run chameleon

问题描述

0a3f83c19749da314c34592ea9cbdd94_20241025-e8922c7c-0cf4-451a-8a3a-ddd6dd770c25.png

Process chameleon detach_replica --config default_3 exit abnormally occurred in checking chameleon replica order. Error message: ERROR - Invalid command Run chameleon order detach_replica failed,or you can try read /home/top/portal/workspace/3/logs/full_migration.log or error.log to get detailed information to solve the exception.

分析过程

查看并下载日志
e0713615a901f62aaed7ba6564c4c638_20241025-9c289698-38c3-441b-9366-461f6f084c77.png

Traceback (most recent call last):
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/bin/chameleon.py", line 93, in <module>
    getattr(replica, args.command)()
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pg_chameleon/lib/global_lib.py", line 1375, in detach_replica
    self.pg_engine.fk_metadata = self.mysql_source.get_foreign_keys_metadata()
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pg_chameleon/lib/mysql_lib.py", line 981, in get_foreign_keys_metadata
    self.__init_sync()
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pg_chameleon/lib/mysql_lib.py", line 2572, in __init_sync
    self.connect_db_buffered()
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pg_chameleon/lib/mysql_lib.py", line 446, in connect_db_buffered
    cursorclass=pymysql.cursors.DictCursor
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pymysql/__init__.py", line 94, in Connect
    return Connection(*args, **kwargs)
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pymysql/connections.py", line 327, in __init__
    self.connect()
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pymysql/connections.py", line 588, in connect
    self._request_authentication()
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pymysql/connections.py", line 863, in _request_authentication
    auth_packet = self._process_auth(plugin_name, auth_packet)
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pymysql/connections.py", line 892, in _process_auth
    return _auth.caching_sha2_password_auth(self, auth_packet)
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pymysql/_auth.py", line 326, in caching_sha2_password_auth
    data = sha2_rsa_encrypt(conn.password, conn.salt, conn.server_public_key)
  File "/home/top/portal/tools/chameleon/chameleon-6.0.0/venv/lib/python3.6/site-packages/pymysql/_auth.py", line 204, in sha2_rsa_encrypt
    raise RuntimeError("'cryptography' package is required for sha256_password or caching_sha2_password auth methods")
RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods

show_config,show_sources,show_status,create_replica_schema,drop_replica_schema,upgrade_replica_schema,add_source,drop_source,init_replica,enable_replica,update_schema_mappings,refresh_schema,sync_tables,start_replica,stop_replica,detach_replica,set_configuration_files,show_errors,run_maintenance,stop_all_replicas,start_view_replica,start_trigger_replica,start_proc_replica,start_func_replica,start_index_replica
2024-10-21 11:52:48.718 MainProcess DEBUG pg_lib.py (708): There is already a database connection active.
2024-10-21 11:52:48.721 MainProcess INFO global_lib.py (517): Dropping the replica schema
2024-10-21 11:52:48.722 MainProcess DEBUG pg_lib.py (2835): Trying to connect to the destination database.
2024-10-21 11:52:48.906 MainProcess INFO chameleon.py (94): drop_replica_schema finished.

解决办法

cd /home/top/portal/tools/chameleon/chameleon-6.0.0/venv/bin
./pip3 install --upgrade pip
pip3 install cryptography -i https://pypi.tuna.tsinghua.edu.cn/simple

启动迁移后前置校验失败3:2059, "Authentication plugin ‘caching_sha2_password’ cannot be loaded
源库检查用户或更改加密方式,该步骤必须做,不然启动迁移报错

问题描述

Process chameleon init_replica --config default_7 exit abnormally occurred in checking chameleon replica order. Error message: 2024-10-23 17:47:24.646 MainProcess ERROR mysql_lib.py (813): (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory") Run chameleon order init_replica failed,or you can try read /home/top/portal/workspace/7/logs/full_migration.log or error.log to get detailed information to solve the exception.

分析过程

--源库检查用户加密方式
select host,user,plugin,authentication_string from user;

输出如下:
host	     user	                     plugin	              authentication_string
%	        bf_ops	          caching_sha2_password	$A$005$m1M2%4SS8A^'Nfo07fFqb8cifguGTcMjWBJJuCdpwp1ZqpCDYK9PfpGQZv0
%	        root	            caching_sha2_password	$A$005$C%yk~vR	%\WZWXZoGExiNd.FaHld2muR3pevPW.w5E3Kc85lHOeYMPOYKB
localhost	mysql.infoschema	caching_sha2_password	$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
localhost	mysql.session	    caching_sha2_password	$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
localhost	mysql.sys	        caching_sha2_password	$A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED
localhost	root	            caching_sha2_password	$A$005$9kTQi#bH2:"~@kDCvVlJDpQSDcO4iSfrdbSgACVUSDon1vlf40HZiYdqD

解决办法

--配置文件中[mysqld]下增加以下参数并重启
[mysqld]
default_authentication_plugin=mysql_native_password

--重启mysql服务
systemctl restart mysqld
systemctl status mysqld

--源库中更改用户加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;

启动迁移后前置校验失败4

问题描述

前置校查失败详情
服务可用性: 可用;
数据库连接: MySQL可连接;openGauss可连接;
数据库权限: MySQL全量迁移权限满足;openGauss全量迁移权限不满足;
大小写参数: 一致;
MySQL加密方式:正确;
openGauss B兼容库:满足;

解决办法

目标库执行

grant all privileges to root;

迁移报错:Invalid username/password

问题描述

46145ae6229b24a44c56a0907a83f09d_20241025-0ab89c53-8e44-463e-9723-ef2f45b6f825.png

迁移失败详情

Process chameleon drop_replica_schema --config default_12 exit abnormally occurred in checking chameleon replica order. Error message: py_opengauss.exceptions.ClientCannotConnectError: could not establish connection to server Run chameleon order drop_replica_schema failed,or you can try read /home/top/portal/workspace/12/logs/full_migration.log or error.log to get detailed information to solve the exception.

ff032351d465f825d94adaa8f9380571_20241025-a1cea0c6-d411-43e3-9373-d0ba51c96290.png

问题原因

迁移结束后视图迁移报错,删除了openGauss连接用户root,又重建openGauss连接用户root,DataKit6.0启动迁移后就报用户名密码错误

解决办法

重新创建一个新的用于openGauss连接用户,再次迁移成功。

create user rootnew with password 'Topnet_123';
grant all privileges to rootnew;

视图迁移报错

出现该报错比较恐怖,因为重新创建用户后需要再次迁移,建议创建用户后先测试迁移个视图,如果成功了再整库迁移。

问题描述

迁移结束后发现视图迁移失败,点错号显示报错如下:

错误详情
Method 1 execute failed: role "root@%" does not exist; Method 2 execute failed: role "root@%" does not exist. PLEASE create openGauss role!!! FIRSTset b_compatibility_user_host_auth to on; SECOND:create user `XXX`@`XXX` with password 'XXXXXX';(Attention: `` not '') THIRD: grant all privileges to `XXX`@`XXX`;

分析过程

查看迁移日志
805e987dba37e6b22ee38b4394a19a60_20241025-00340de8-1253-4479-bd18-8e24f07d40a1.png

image.png

9c9110f8c130508fd094cd469ac1e45c_20241025-200b5166-ed85-40a3-a09b-71d295e73905.png

错误详情
Method 1 execute failed: role "root@%" does not exist; Method 2 execute failed: role "root@%" does not exist. PLEASE create openGauss role!!! FIRSTset b_compatibility_user_host_auth to on; SECOND:create user `XXX`@`XXX` with password 'XXXXXX';(Attention: `` not '') THIRD: grant all privileges to `XXX`@`XXX`;

解决办法

目标库更改参数

--登录数据库
gsql -d postgres -p 15400

--查看参数  默认为off
show b_compatibility_user_host_auth;

openGauss=# show b_compatibility_user_host_auth;
 b_compatibility_user_host_auth
--------------------------------
 off
(1 row)

--配置文件中增加参数
永久性修改b_compatibility_user_host_auth为on
su - omm
vi /topsoft/huawei/install/data/dn/postgresql.conf 
增加
b_compatibility_user_host_auth=on

--重启数据库
gs_om -t stop
gs_om -t start

--查看参数是否生效
gsql -d postgres -p 15400
show b_compatibility_user_host_auth;

openGauss=# show b_compatibility_user_host_auth;
 b_compatibility_user_host_auth
--------------------------------
 on
(1 row)

目标库创建用于迁移的用户并赋权

目标库创建用于迁移的用户root@% 并赋权,迁完不要删除openGauss连接用户root,不然重建openGauss连接用户root后DataKit6.0启动迁移后会报用户名密码错误,详细后面openGauss新版本会解决。

--登录openGauss库
su - omm
gsql -d postgres -p 15400

--切换到digital数据库下
\c  digital root

--创建和源库同名的迁移对象专用用户(普通用户)  必须是反引号不是单引号
set b_compatibility_user_host_auth=on;
create user `root`@`%` with password 'Topnet_123';
grant all privileges to `root`@`%`;

补充:删除openGauss连接用户root,重建openGauss连接用户root后DataKit6.0启动迁移后会报用户名密码错误报错如下:

6ce079bba99e4b39ece21bbe69f78f54_20241025-2e7cfd9c-2d41-487e-8663-662b1024fc1a.png

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。