暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

单个执行机并行执行MySQL到openGauss数据迁移子任务

原创 Clipnosis 2025-04-30
357

1. 软件依赖

分类 组件 版本
JDK JDK 11.0.20
数据库 MySQL 5.7.27
数据库 openGuass 5.0.0+
迁移平台 DataKit 5.1.0+
迁移插件 Portal 5.1.0+

2. 环境配置

2.1 JDK安装配置

要求安装JDK11

2.2 MySQL多实例安装及预制数据

2.2.1 下载MySQL5.7

2.2.2 创建实例

  1. 配置环境变量
vim /home/wxm/.bashrc

​ 文件末尾新增配置

export MYSQL_PATH=/usr2/wxm/mysql/mysql-5.7.27-aarch64 export PATH=$MYSQL_PATH/bin:$PATH

:wq保存文件并退出,执行:

source /home/test/.bashrc
  1. 创建五个文件夹 对应5个MySQL实例,以下操作重复五次(或者使用mysqld_multi使用一个配置文件安装多个实例)
    输入图片说明

  2. 进入实例目录下,以mysql_3310为例,创建配置文件

cd mysql_3310 vi my.cnf

配置文件内容如下:(注意修改文件路径、端口号和server-id,并确认端口号是否空闲)

[mysqld] port=3310 datadir=/usr2/wxm/mysql/mysql_3310/datadir pid-file=/usr2/wxm/mysql/mysql_3310/mysql.pid socket=/usr2/wxm/mysql/mysql_3310/mysql.sock log_error=/usr2/wxm/mysql/mysql_3310/error.log server-id=3310 enforce_gtid_consistency=on gtid_mode=on binlog_format= ROW log_bin=mysql-bin binlog_row_image=FULL bind_address = 0.0.0.0
  1. 安装MySQL实例

    mysqld --defaults-file=/usr2/wxm/mysql/mysql_3310/my.cnf  --initialize  --user=test --basedir=/usr2/wxm/mysql/mysql-5.7.27-aarch64 --datadir=/usr2/wxm/mysql/mysql_3310/datadir
    

    如果在安装过程中出现报错

    ./mysqld: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory

    对应的解决方案为:

    创建软链接

    ln -s /opt/datakit/tools/mysql5.7/mysql-5.7.27-aarch64/extra/libatomic.so.1 /usr/lib64/libatomic.so.1
    

    注意该操作需在root下执行

  2. 启动MySQL

    mysqld_safe --defaults-file=/usr2/wxm/mysql/mysql_3310/my.cnf --user=test &
    
  3. 查看root用户临时密码

    cat /usr2/wxm/mysql/mysql_3310/error.log | grep root@localhost
    
  4. 登录MySQL

    mysql -u root -p -S /usr2/wxm/mysql/mysql_3310/mysql.sock
    

​ 输入第6步命令查出的密码即可登录数据库

​ 设置root用户密码为“123456”

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
  1. 预制数据

    8.1 创建新的用户mysql_test,对应的密码为password123

    CREATE USER mysql_test; 
    SET PASSWORD FOR mysql_test=PASSWORD('password123'); 
    GRANT ALL ON *.* TO 'mysql_test'; 
    GRANT RELOAD ON *.* to 'mysql_test'; 
    GRANT REPLICATION CLIENT ON *.* to 'mysql_test'; 
    GRANT REPLICATION SLAVE ON *.* to 'mysql_test'; 
    FLUSH PRIVILEGES; 
    

    8.2 预制数据

    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.3 openGauss安装及预制数据

2.3.1 openGauss部署

​ 在目标目录下提前下载openGauss的安装包openGauss-6.0.0-openEuler-64bit-all.tar.gz,直接解压并配置环境变量即可部署openGauss数据库。

cd /usr3/wxm mkdir opengauss tar -zxvf openGauss-6.0.0-openEuler-64bit-all.tar.gz -C opengauss cd opengauss tar -xf openGauss-6.0.0-openEuler-64bit.tar.bz2

​ 配置用户环境变量

vi /home/wxm/.bashrc

​ 文件末尾添加配置:

export GAUSSHOME=/usr3/wxm/opengauss export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH export PATH=$GAUSSHOME/bin:$PATH

​ :wq保存文件并退出,执行:

source /home/wxm/.bashrc

​ 初始化数据库:

gs_initdb -D /usr3/wxm/opengauss/datanode/dn1 --nodename=single -w Sample@123

2.3.2 openGauss参数配置

​ 设置配置文件pg_hba.conf相关参数

gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -h "host all all 0.0.0.0/0 sha256"
gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -h "host replication all 0.0.0.0/0 sha256"

​ 设置配置文件postgresql.conf相关参数

gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "listen_addresses = '*'" gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "wal_level = logical" gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "port = 5433" # 可选 修改openGauss占用端口,默认为5432 gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "max_wal_senders=4" # 指定可以同时连接到主节点的最大备节点数量的参数,默认值为4,迁移任务数大于4时需要修改该参数,至少等于并行迁移任务数量 gs_guc set -D /usr3/wxm/opengauss/datanode/dn1 -c "max_connections = 4096" #openGauss的最大连接数,默认为200,多任务并行时需要改大该参数

2.3.3 启动openGauss

​ 启动:

gs_ctl start -D /usr3/wxm/opengauss/datanode/dn1

​ 连接:

gsql -d postgres -p 5433 -r

​ 创建用户和数据库:

create user opengauss_test with password 'Sample@123'; grant all privileges to opengauss_test; create database datakit; # datakit为datakit平台的底层数据库 create database target_db11 with dbcompatibility = 'b'; # 迁移目标库 create database target_db12 with dbcompatibility = 'b'; create database target_db13 with dbcompatibility = 'b'; create database target_db14 with dbcompatibility = 'b'; create database target_db15 with dbcompatibility = 'b';

​ 大小写参数检查,MySQL端和opanGauss端的大小写参数需要一致

# 查询MySQL的大小写参数 show variables like 'low_case_table_names'; # 查询openGauss的大小写参数 show dolphin.lower_case_table_names; # 不一致的情况下修改openGuass端参数 alter user {用户名} set dolphin.lower_case_table_names to 0;

​ \q退出gsql命令,使用初始用户连接b库,每个目标库都需要连接一次,加载dolphin插件,以target_db11为例

gsql -d target_db11 -p 5432 -r

2.4 DataKit安装

​ 参考 https://gitee.com/duanguoqiang4/openGauss-workbench/wikis/datakit_install.sh

3. 执行迁移任务

3.1 添加实例管理

​ MySQL实例:对多个MySQL实例重复如下操作,选择数据库类型为MYSQL,输入正确的IP地址、端口号、用户名即密码后点击连通性测试,左下角显示可用点击确定,即可添加成功。

输入图片说明

​ openGauss实例:选择数据库类型为OPENGAUSS,输入正确的IP地址、端口号、用户名即密码后点击连通性测试,左下角显示可用点击确定,即可添加成功。

输入图片说明

3.2 添加服务器管理

​ 1. 服务器管理用来安装portal执行机,执行迁移任务。(注意:必须勾选记住密码

输入图片说明

​ 2. 添加迁移任务的执行用户,点击添加用户后,在弹框中输入执行用户及用户密码,点击确认即可。

输入图片说明

3.3 添加迁移任务

​ 1. 点击创建数据迁移任务

输入图片说明

​ 2. 分别选择源端和目的端的数据库,添加子任务,按需选择是否调整内核参数,点击下一步

输入图片说明

​ 3. 配置迁移过程的参数,使用默认参数直接点击下一步

输入图片说明
4.使用执行用户为执行机安装迁移套件,点击开始安装,以离线安装为例

输入图片说明

本地下载对应系统架构的portal版本,选择离线安装,选择安装目录,上传安装包,点击确定(注意使用执行用户做安装用户,并选择空闲端口

输入图片说明

安装成功参考如下,选择物理机IP,点击完成

输入图片说明

迁移长时间运行可能导致java堆内存不足,设置kafka的jvm参数:

vi /usr3/wxm/datakit_task/portal/tools/debezium/confluent-5.5.1/bin/connect-standalone # 将KAFKA_HEAP_OPTS的默认参数-Xms256M -Xmx2G改为-Xms25G -Xmx25G :wq # 保存退出

3.4 执行迁移任务

  1. 步骤3.3完成后,页面上会出现迁移任务,点击启动即可执行迁移,多个迁移子任务开始执行

    输入图片说明

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论