注册
MySQL8.0.36迁移到DM8
专栏/培训园地/ 文章详情 /

MySQL8.0.36迁移到DM8

Biscuit. 2026/08/03 58 1 0
摘要

从MySQL 8.0迁移到达梦DM8:DTS工具实战与踩坑记录
本文记录从MySQL 8.0迁移至达梦DM8的完整过程,重点分享使用达梦DTS数据迁移工具的操作步骤,以及在迁移过程中遇到的问题,希望能为有类似迁移需求的同学提供参考。
一、环境准备
1、下载MySQL8.0.36安装包:
下载【RPM Bundle】包含5个rpm(server、client、plugins、devel、common)
8eb290364f960e8924617710f3addfe2.png
2、将安装包上传到虚拟机
在虚拟机右下角打开ens33连接本地网络,打开终端执行命令ip a获取虚拟机IP地址
2.png
查看虚拟机 IP,记录 IP 地址
3.png
确认 SSH 开启、防火墙放行
4.png
在本地打开命令行,将安装包传输到虚拟机
在本地打开cmd执行命令:scp 本地文件完整路径 Linux用户名@虚拟机IP:Linux存放路径
示例:scp D:\下载\mysql-8.0.36-1.el8.x86_64.rpm-bundle.tar root@192.168.1.45:/usr/local/mysql8
3、解压压缩包,安装数据库
(1)进入安装文件夹
cd /usr/local/mysql8
(2)解压 bundle 压缩包
tar -xvf mysql-8.0.36-1.el8.x86_64.rpm-bundle.tar
(3)卸载系统自带 mariadb(端口冲突)
rpm -qa | grep mariadb
#查到全部mariadb包,批量卸载
rpm -e --nodeps mariadb*
(4)按顺序安装 rpm 包
#公共依赖
rpm -ivh mysql-community-common-8.0.36-1.el8.x86_64.rpm
#客户端插件
rpm -ivh mysql-community-client-plugins-8.0.36-1.el8.x86_64.rpm #
客户端命令
rpm -ivh mysql-community-client-8.0.36-1.el8.x86_64.rpm #
服务主程序
rpm -ivh mysql-community-server-8.0.36-1.el8.x86_64.rpm #
开发依赖
rpm -ivh mysql-community-devel-8.0.36-1.el8.x86_64.rpm
4、初始化MySQL、启动服务
(1)初始化数据库
mysqld --initialize
#修改数据目录权限
chown mysql:mysql /var/lib/mysql -R
(2)开机自启+启动 mysql 服务
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
(3)查询初始 root 临时密码
grep 'temporary password' /var/log/mysqld.log
在root@localhost后面的就是密码
5、登录MySQL,修改密码,开放远程访问
(1)本地登录 MySQL
mysql -uroot -p
输入刚刚记录的临时密码
(2)修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
(3)开启root全网远程访问
#允许root从任意地址访问
CREATE USER 'root'@'%' IDENTIFIED BY 'Root@123456';
#赋予全部权限
GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;
#刷新权限生效
FLUSH PRIVILEGES;
exit;
6、防火墙放行3306端口
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
7、适配DTS迁移的关键配置
(1)编辑 MySQL 配置文件
vim /etc/my.cnf
在[mysqld]后面加入以下sql:
server-id=1
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
#适配达梦字符集,避免中文乱码
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
#大小写敏感适配达梦
lower_case_table_names=1
(2)重启MySQL让配置生效
systemctl restart mysqld
8、初始化DM8
进入tool文件夹执行./dbca.sh,之后采用图形化设置。
5.png
记得不开启大小写敏感
6.png
初始化实例后,在tool文件夹下执行:./manager,打开DM管理工具,可以进行图形化操作
然后创建好表空间和用户,并给用户授权。
7.png
兼容性参数配置,进入自己的数据库安装路径修改dm.ini文件,需要重启数据库生效
#兼容MySQL模式(4表示兼容MySQL)
COMPATIBLE_MODE=4
8.png
二、迁移前评估
在正式迁移前,先使用DTS的评估功能对源库进行兼容性分析,提前识别潜在风险。
1、启动DTS评估
打开DTS工具,选择【评估】模块,右键新建评估任务。
2、配置源端连接
选择数据源类型为MySQL,填写连接信息。
9.png
10.png
11.png
12.png
3、执行评估并查看报告
选择需要评估的对象、数据对象类型及模式,点击完成后等待评估结束后出评估报告。报告会说明兼容、不兼容对象,以及SQL兼容情况。
13.png
14.png
15.png16.png
三、DTS迁移
1、新建迁移工程
打开DTS工具,DTS工具位于DM8安装目录的tool文件夹下,进入tool目录执行sql命令:./dts启动。
17.jpg18.jpg
2、配置源端和目的端信息
按步骤配置好源端和目的端信息就好了,IP、端口、用户名密码。
记得数据库保持开启状态。
19.jpg20.jpg21.jpg
3、选择迁移对象
22.jpg23.jpg
4、执行迁移任务,查看迁移情况
24.jpg
四、容易出现的问题
1、执行rpm -ivh mysql-community-client-8.0.36-1.el8.x86_64.rpm报错
25.png
核心问题:
(1)缺前置包mysql-community-libs:客户端依赖这个库文件;
安装缺失依赖包 mysql-community-libs
rpm -ivh mysql-community-libs-8.0.36-1.el8.x86_64.rpm
(2)系统存在 mariadb 相关包,MySQL 客户端和 mariadb 冲突,无法共存。
卸载所有 mariadb
rpm -qa | grep mariadb
把查到的所有 mariadb 包逐个卸载
rpm -e --nodeps mariadb-server-10.3.39-1.p02.ky10.x86_64
rpm -e --nodeps mariadb-common-10.3.39-1.p02.ky10.x86_64
rpm -e --nodeps mariadb-errmessage-10.3.39-1.p02.ky10.x86_64
rpm -e --nodeps mariadb-connector-c-3.0.6-9.ky10.x86_64
rpm -e --nodeps mariadb-10.3.39-1.p02.ky10.x86_64
卸载全部完成后,再执行检查,无返回代表清干净:
rpm -qa | grep mariadb

2、启动 mysql 服务的时候报错
26.png
mysqld 初始化 / 启动失败绝大多数是 3 类原因:
(1)/var/lib/mysql文件夹权限归属不对,没有 mysql 用户权限;
(2)重复执行mysqld --initialize,数据目录残留旧文件冲突;
(3)my.cnf 配置写错。
解决步骤:
(1)停止mysql,清空脏数据目录
systemctl stop mysqld
#删除原有数据目录所有文件
rm -rf /var/lib/mysql
#重建空目录
mkdir /var/lib/mysql
#修改归属为mysql用户和组
chown mysql:mysql /var/lib/mysql -R
chmod 750 /var/lib/mysql
(2)重新初始化数据库
mysqld --initialize
(3)重新启动服务并设置开机自启
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

3、多次初始化产生了多条临时密码,登录不进去mysql。
27.png
(1)停止MySQL服务
systemctl stop mysqld
(2)编辑 /etc/my.cnf,增加跳过权限参数
vim /etc/my.cnf
找到[mysqld],在最下面新增一行:
skip-grant-tables
(3)重启 MySQL
systemctl start mysqld
(4)免密登录 MySQL
mysql -uroot
(5)执行 SQL 重置密码
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123456';
exit;
(6)删掉 my.cnf 里的 skip-grant-tables(必须删,否则无密码任何人可登录)
vim /etc/my.cnf
删除刚才添加的skip-grant-tables这一行,保存退出。
(7)重启 MySQL 生效
systemctl restart mysqld

4、报错:Communications link failure
28.png
问题:网络不通/MySQL拒绝远程连接/防火墙拦截
(1)先尝试ping IP,两边虚拟机是不是都打开ens33
(2)在MySQL虚拟机操作放行远程
#创建远程访问账号
CREATE USER 'root'@'%' IDENTIFIED BY 'Root@123456';
#赋予全部权限
GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;
(3)修改MySQL配置允许外网访问
编辑my.cnf
vim/etc/my.cnf
找到bind-address,修改:
#bind-address=127.0.0.1 注释掉此行
bind-address=0.0.0.0
#保存重启MySQL
systemctl restart mysqld
(4)放行3306端口
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

5、报错:“Host 192.168.3.234 is not allowed to connect to this MySQLserver”
29.png
问题:MySQL没有授权这个IP访问root账号。
#给192.168.3.234单独开权限
CREATE USER 'root'@'192.168.3.234' IDENTIFIED BY '密码';
#赋予全库所有权限
GRANT ALL PRIVILEGES ON . TO 'root'@'192.168.3.234' WITH GRANT OPTION;
#修改密码认证方式,解决MySQL8远程驱动兼容问题
ALTER USER 'root'@'192.168.3.234' IDENTIFIED WITH mysql_native_password BY '密码';
#刷新权限立即生效
FLUSH PRIVILEGES;
exit;

至此分享结束,有什么技术问题大家可以在评论区交流。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服