当前位置: 首页 > news >正文

MySQL数据库迁移至国产数据库测试案例

以下所使用的环境为:
虚拟化软件:VMware Workstation 17 Pro
麒麟系统版本:Kylin-Server-V10-SP3-2403-Release-20240426-x86_64
本次实验的预期效果是打算基于LAMP架构搭建一个WordPress,然后写入相关数据,使得MySQL中存在数据。然后将MySQL数据分别迁移至国产数据库(人大金仓和达梦),然后将WordPress的接入国产数据库。结果到后面发现WordPress不支持连接国产数据库。也就只能校验迁移后数据库内容是否发生更改以判断数据迁移是否成功。

一、模拟企业环境搭建

1. 国产化迁移背景

在数字化转型与国家信息技术应用创新(信创)战略的双重驱动下,国产数据库迁移已成为金融、能源、电信等关键行业技术升级的核心任务。这一趋势的形成主要基于以下背景:

国家战略与安全需求:打破核心技术依赖

  • 外部形势复杂化:国际环境变化导致国外数据库体系(如Oracle、MySQL)存在供应链风险,核心技术不可控问题日益突出。国家明确要求关键行业实现自主可控,保障数据安全与产业链安全。
  • 政策强制推动:2022年国资委发布79号文件,明确要求到2027年,党政及金融、电力、电信等八大行业完成100%国产替代。截至2024年,党政领域替换率已达80%,但金融、能源等行业核心系统替换率仍不足20%,任务紧迫。

国产数据库技术成熟:从“可用”到“好用”

  • 核心功能突破:国产数据库已解决分布式事务、全局一致性、高可用切换等关键技术问题。例如,OceanBase支持多地多中心部署,故障自动切换时间小于30秒。
  • 生态兼容性提升:主流国产数据库(如达梦、GaussDB)高度兼容Oracle、MySQL语法,降低应用改造难度。同时,提供自动化迁移工具,支持数据结构、历史数据一键迁移。
  • 行业实践验证:在金融领域,某超大型保险公司通过一年时间完成400TB数据迁移,覆盖近百个业务系统,单库规模超20TB,系统稳定运行并经受住高峰TPS 5万+的考验。

信创产业生态完善:全栈自主可控

  • 硬件适配性增强:国产数据库已适配鲲鹏、飞腾等国产芯片,以及麒麟、统信等操作系统,满足信创验收要求。
  • 产业链协同发展:从芯片、服务器到中间件、应用软件,国产数据库与上下游企业形成完整生态。例如,华为GaussDB基于鲲鹏昇腾生态,实现软硬协同全栈自主。

2. 基于WordPress模拟企业博客搭建

节点设置

系统或服务版本信息软件安装目录
麒麟系统Kylin Linux Advanced Server release V10 (Halberd)
WordPressWordPress6.8.1/opt/wordpress
PHPPHP 8.0.30系统默认
ApacheApache系统默认
人大金仓数据库KingBaseES8/KingbaseES/V8
达梦数据库DM Database Server 64 V8/home/dmdba/dmdbms

配置需求

  • 本机搭建WordPress6.8.1+PHP+MySQL+Apache
  • 往WordPress中写入相关数据,使MySQL数据库中存在对应的数据

2.1 PHP安装与配置

[Step1]: 本次安装使用麒麟自带的网络源进行对应的软件安装。

[root@kylinsp3-1 ~]# yum makecache

在这里插入图片描述

[Step2]: 安装PHP及相关工具。

[root@kylinsp3-1 ~]# yum install -y php php-fpm php-mysqlnd php-gd

2.2 MySQL安装与配置

[Step1]: 先删除系统自带的Mariadb数据库,确保本地不存Mariadb。

[root@kylinsp3-1 ~]# yum remove -y mariadb

在这里插入图片描述

[Step2]: 在MySQL官网中获取MySQL源下载地址。

https://dev.mysql.com/downloads/repo/yum/

在这里插入图片描述
在这里插入图片描述

[Step3]: 新建MySQL目录,然后下载并安装MySQL源。

[root@kylinsp3-1 ~]# mkdir /opt/mysql
[root@kylinsp3-1 ~]# wget -P /opt/mysql https://dev.mysql.com/get/mysql84-community-release-el7-2.noarch.rpm
[root@kylinsp3-1 ~]# yum install -y /opt/mysql/*

在这里插入图片描述

[Step4]: 更新本地仓库的元数据缓存,可以看到MySQL源没有出错。

[root@kylinsp3-1 ~]# yum clean all
[root@kylinsp3-1 ~]# yum makecache

在这里插入图片描述

[Step5]: 通过网络源安装MySQL。

[root@kylinsp3-1 ~]# yum install -y mysql-community-server

[Step6]: 启动MySQL服务,MySQL服务默认是开机自启。

[root@kylinsp3-1 ~]# systemctl start mysqld

[Step7]: 在MySQL应用程序运行日志中查找MySQL的默认密码。

[root@kylinsp3-1 ~]# cat /var/log/mysqld.log | grep password

在这里插入图片描述

[Step8]: 登录MySQL后修改初始密码。

[root@kylinsp3-1 ~]# mysql -uroot -p
Enter password:[输入密码p;IVqe&N6fcu]
mysql> alter user 'root'@'localhost' identified by 'ChinaSkills23!';		// 修改密码
mysql> flush privileges;													// 刷新权限

[Step9]: 创建wordpress数据库和wordpress用户,并授予wordpress用户对wordpress数据库的所有权限。

mysql> create database wordpress;
mysql> create user 'wordpress'@'localhost' identified by 'ChinaSkills23!';
mysql> grant all privileges on wordpress.* to 'wordpress'@'localhost';
mysql> flush privileges;

2.3 Apache安装与配置

[Step1]: 麒麟操作系统默认是安装好Apache的,我们只需要启动Apache。

[root@kylinsp3-1 ~]# systemctl enable --now httpd

2.4 WordPress安装与配置

[Step1]: 新建WordPress安装目录,将提前下载好的WordPress6.8.1上传到服务器中。

# WordPress下载地址
https://wordpress.org/latest.zip
[root@kylinsp3-1 ~]# mkdir /opt/wordpress

[Step3]: 进入WordPress安装目录,将解压缩后的文件复制到Apache的资源发布目录中。

[root@kylinsp3-1 ~]# cd /opt/wordpress/
[root@kylinsp3-1 wordpress]# unzip wordpress-6.8.1.zip
[root@kylinsp3-1 wordpress]# cp -a wordpress/* /var/www/html/

[Step4]: 修改WordPress文件的属主和属组。

[root@kylinsp3-1 wordpress]# chown apache:apache -R /var/www/html/

[Step5]: 通过浏览器访问WordPress初始化界面。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 WordPress数据写入

[Step1]: 新建三个普通用户

在这里插入图片描述

在这里插入图片描述

[Step2]: 使用admin管理员登录,编写一篇文章。

在这里插入图片描述

在这里插入图片描述

[Step3]: 修改文章的别名,默认情况下使用的是中文命名。中文路径会导致后续无法跳转访问。

在这里插入图片描述

[Step4]: 分别使用user01、user02、user03用户登录,评论admin所发布的软件。使用三个用户评论完后,需要使用admin账户手动批注该评论。

在这里插入图片描述

在这里插入图片描述

[Step5]: 验证:查询wp_users表中数据,可以看到存在四个用户。

[root@kylinsp3-1 ~]# mysql -uroot -pChinaSkills23! -e "select * from wordpress.wp_users;"

在这里插入图片描述

[Step6]: 验证:查询wp_posts表中数据,可以看到admin用户的博客内容。

[root@kylinsp3-1 ~]# mysql -uroot -pChinaSkills23! -e "select * from wordpress.wp_posts;"

在这里插入图片描述

[Step7]: 验证:查询wp_comments表中数据,可以看到用户的评论信息。

[root@kylinsp3-1 ~]# mysql -uroot -pChinaSkills23! -e "select * from wordpress.wp_comments;"

在这里插入图片描述

二、人大金仓数据库迁移

1. 人大金仓数据库搭建

1.1 规范化准备

实施规范目录

目录目录权限说明
/install755安装软件存储目录
/backup755备份目录
/archive755归档目录
/data700数据存储目录
/KingbaseES/V8755KES安装目录

部署数据库软件及服务

  • 数据库管理员 SYSTEM 的密码设置为 ChinaSkills23!;
  • 数据库监听端口号设置为 52025;
  • 数据库字符集设置为 UTF8;
  • 配置操作系统启动时自动启动数据库服务;
  • 允许数据库命令不带路径就可以执行;
  • 通过环境变量指定数据库默认所在的目录和默认端口号。

[Step1]: 新建目录

[root@kylinsp3-1 ~]# mkdir -p /backup /archive /data /KingbaseES/V8 /install

[Step2]: 将人大金仓安装镜像以及授权文件上传到install目录。

在这里插入图片描述

[Step3]: Linux中安装人大金仓需要使用非管理员用户,且具有正常的home目录。这里我们新建用户kingbase,同时修改目录所属主和属组。

[root@kylinsp3-1 ~]# useradd kingbase
[root@kylinsp3-1 ~]# echo "ChinaSkills23!" | passwd --stdin kingbase
[root@kylinsp3-1 ~]# chown -R kingbase:kingbase /{data,archive,install,KingbaseES}

[Step4]: 设置目录权限

[root@kylinsp3-1 ~]# chmod 755 -R /{install,archive,KingbaseES}
[root@kylinsp3-1 ~]# chmod 700 -R /data

[Step5]: 将人大金仓安装镜像挂载到mnt目录下

[root@kylinsp3-1 ~]# mount /install/KingbaseES_V008R006C008B0014_Lin64_install.iso /mnt

在这里插入图片描述

1.2 图形化安装KES

[Step1]: 使用kingbase用户登录麒麟操作系统

在这里插入图片描述

[Step2]: 执行KingBase安装脚本,根据提示进行安装。

[kingbase@kylinsp3-1 ~]$ bash /mnt/setup.sh

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step3]: 选择授权文件,授权文件在/install目录。

在这里插入图片描述

在这里插入图片描述

[Step4]: 选择安装目录,这里我们选择先前创建好的目录。

在这里插入图片描述

在这里插入图片描述

[Step5]: 选择数据库集的存储位置,这里我们选择先前创建好的目录。

在这里插入图片描述

[Step6]: 配置数据库初始化参数,因为本地部署的MySQL数据库,因此修改数据库的兼容模式为MySQL。兼容模式为MySQL,大小写敏感需要关闭。
在这里插入图片描述
在这里插入图片描述

[Step7]: 安装完成,点击【完成】退出。

在这里插入图片描述

[Step8]: 切换为root管理员,将KES服务注册为Linux系统服务

[root@kylinsp3-1 ~]# bash /KingbaseES/V8/install/script/root.sh

在这里插入图片描述

1.3 验证KES安装

[Step1]: 查看kingbase相关进程是否启动

[kingbase@kylinsp3-1 ~]$ ps -xf | grep -i "kingbase"

在这里插入图片描述

[Step2]: 使用ksql工具测试连接数据库

[kingbase@kylinsp3-1 ~]$ /KingbaseES/V8/Server/bin/ksql test system -p52025

在这里插入图片描述

[Step3]: 启动数据库开发管理工具,测试连接数据库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step4]: 检查服务是否开机自启

[kingbase@kylinsp3-1 ~]$ systemctl list-dependencies | grep kingbase
[kingbase@kylinsp3-1 ~]$ chkconfig --list | grep kingbase

在这里插入图片描述

1.4 配置环境变量

[Step1]: 修改环境变量,添加 KINGBASE_DATA变量。在配置环境变量后,通过ksql命令连接数据库时,无需添加端口号。

[kingbase@kylinsp3-1 ~]$ vim /home/kingbase/.bashrc# 写入下列内容
export PATH=/KingbaseES/V8/Server/bin:$PATH
export KINGBASE_DATA=/data
export KINGBASE_PORT=52025

[Step2]: 生效环境变量

[kingbase@kylinsp3-1 ~]$ source /home/kingbase/.bashrc

[Step3]: 验证:查看kingbase用户环境变量

[kingbase@kylinsp3-1 ~]$ env | grep -iE 'kingbase_data|kingbase_port|path'

在这里插入图片描述

[Step4]: 验证:登录数据库

[kingbase@kylinsp3-1 ~]$ ksql -Usystem -d test

在这里插入图片描述

2.人大金仓数据库迁移评估系统KDMS

2.1 准备安装环境

[Step1]: KDMS部署之前,建议建立一个独立的运行账户,这里我们使用KingBaseES的运行用户kingbase。使用kingbase用户登录系统。

在这里插入图片描述

[Step2]: 操作系统 ulimit 用于限制进程所占用的资源。在KDMS运行时,会需要打开大量的文件句柄,所以需要检查一下系统相关的ulimit属性参数是否能够满足要求。

[kingbase@kylinsp3-1 ~]$ ulimit -a

在这里插入图片描述

[Step3]: KDMS进程设计的几个限制包括最大文件句柄数(open files)和允许创建的最大进程数量(max user processes)。上述的两个限制不符合运营配置要求,使用root管理员修改配置文件调整相关参数。

[root@kylinsp3-1 ~]# vim /etc/security/limits.conf# 写入下列内容
kingbase        -       nofile  65535
kingbase        -       nproc   4096

[Step4]: 上述修改完成后,退出当前的会话,重新连接。再次通过命令查询配置,可以看到已经生效。

[kingbase@kylinsp3-1 ~]$ ulimit -a

在这里插入图片描述

[Step5]: 检查当前系统的编码类型,可以看到当前系统编码类型为UTF-8。

[kingbase@kylinsp3-1 ~]$ locale

在这里插入图片描述

[Step6]: 系统部署依赖软件检查,KDMS需要使用到Java环境。

[kingbase@kylinsp3-1 ~]$ java -version

在这里插入图片描述

2.2 图形化安装KDMS

[Step1]: 使用kingbase用户上传软件包并解压。

[kingbase@kylinsp3-1 ~]$ mkdir /install/kdms
[kingbase@kylinsp3-1 ~]$ cd /install/kdms/
[kingbase@kylinsp3-1 kdms]$ tar -zxf KDMS-COLLECTOR-V004R001C001-x86.tar.gz

在这里插入图片描述

[Step2]: KDMS的默认安装目录为/opt/KDMS,需要提前使用root管理员创建该目录并授予kingbase用户访问该目录的权限。

[root@kylinsp3-1 ~]# mkdir -p /opt/KDMS
[root@kylinsp3-1 ~]# chown kingbase:kingbase /opt/KDMS/

[Step3]: 进入安装程序所在目录,执行安装脚本。

[kingbase@kylinsp3-1 ~]$ cd /install/kdms
[kingbase@kylinsp3-1 kdms]$ ./setup.sh

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step4]: 安装完成后,可以通过浏览器访问。

http://192.168.68.134:19007
账号:admin
密码:Kingbase@2024

在这里插入图片描述

2.3 MySQL数据库采集

[Step1]: 使用具有Root权限的账号创建临时账号,并配置相关权限,采集完成后删除该临时账号。临时账号授予的权限仅用于连接MySQL数据库系统,仅采集数据库结构信息,而不会采集用户的业务数据。

[root@kylinsp3-1 ~]# mysql -uroot -pChinaSkills23!
mysql> create user 'kdms'@'localhost' identified by 'ChinaSkills23!';
mysql> grant all on *.* to 'kdms'@'localhost';
mysql> flush privileges;

[Step2]: 新建采集,在弹窗中选择采集类型为数据库采集,选择数据库类型为MySQL,同时选择采集数据量大小(会采集每张表中的有多少条数据,表占用多大磁盘空间)。

在这里插入图片描述

在这里插入图片描述

[Step3]: 填写完基本信息后,点击测试连接。成功后会提示数据库连接成功。

在这里插入图片描述

在这里插入图片描述

[Step4]: 当运行状态为“采集成功”即完成采集任务。点击“下载采集包”,下载压缩包。

在这里插入图片描述

在这里插入图片描述

[Step5]: 压缩包文件包含被采集的数据库结构信息和 COLLECTOR_META.dat文件,其中的 COLLECTOR_META.dat为本次采集的操作信息文件。在创建评估项目时,如果上传的采集包不存在meta文件或meta文件不合法则无法创建评估项目,所以不同的采集包不可混用同一个 COLLECTOR_META.dat文件。

在这里插入图片描述

2.4 评估系统使用

[Step1]: 访问人大金仓官方网站,进入数据库迁移评估,注册并登录账号。

https://dms.kingbase.com.cn/#/dashboard

在这里插入图片描述

[Step2]: 新建评估,上传4.3步骤中采集的数据。上传成功后,系统会自动识别源数据库、目标KES版本等信息。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step3]: 下载评估报告,查看评估报告关键内容。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step4]: 评估完成后,删除掉临时用户kdms。

[root@kylinsp3-1 ~]# mysql -uroot -pChinaSkills23! -e "drop user 'kdms'@'localhost';"

3.人大金仓数据库数据库迁移工具KDTS

3.1 迁移前准备

在实际应用中,一个MySQL数据库系统的移植主要包括如下内容。这些内容的迁移是存在先后顺序的。若违反该顺序,则可能导致迁移受阻。

根据迁移构成中业务是否可以停止服务,迁移又分为离线迁移和在线迁移。数据库是各种 SQL 和 PL/SQL 数据库对象的存放容器,而用户是这些对象的管理者和使用者。因此,在迁移数据库对象之前,一般应先迁移数据库、用户。

  • 使用KDTS将MySQL离线迁移到KingbaseES
  • 使用KFS支持将MySQL在线迁移到KingbaseES

迁移MySQL时,需要注意Kingbase的data需要使用指定的初始化参数来初始化数据库。MySQL通常默认是大小写不敏感,而 KingbaseES 默认是大小写敏感,可以在初始化数据库的时候进行修改。我们在时间搭建人大金仓的时候就关闭了大小写敏感,因此无需做修改。

[Step1]: 在KingBaseES中创建和MySQL中的同名用户和数据库。

[kingbase@kylinsp3-1 ~]$ ksql -Usystem -d test
test=# create user wordpress password 'ChinaSkills23!';
test=# create database wordpress with owner=wordpress;

[Step2]: 验证:查看刚刚创建的wordpress数据库信息。

test=# \l wordpress

在这里插入图片描述

3.2 离线迁移

迁移信息

角色网络信息数据库版本端口号迁移用户迁移数据库
源库localhostMySQL 8.4.53306wordpresswordpress
目标库localhostKingbaseES V008R006C008B001452025wordpresswordpress

[Step1]: KDTS提供了两种形态(BS、SHELL),用户可以根据需求进行选择。无论是BS版还是SHELL版,都是随着数据库一起打包发布,无需单独安装。

{KingbaseES安装路径}/ClientTools/guitools/KDts

在这里插入图片描述

[Step2]: 启动BS版的KDTS,运行脚本需要有JAVA环境。

[kingbase@kylinsp3-1 ~]$ cd /KingbaseES/V8/ClientTools/guitools/KDts/KDTS-WEB/bin/
[kingbase@kylinsp3-1 bin]$ ./startup.sh\

在这里插入图片描述

[Step3]: 验证:运行成功后,会生成一个pid文件,供给shutdown.sh脚本使用。

[kingbase@kylinsp3-1 bin]$ ll /KingbaseES/V8/ClientTools/guitools/KDts/KDTS-WEB/

在这里插入图片描述

[Step4]: 查看该pid文件内容,可以看到WEB的端口号。

[kingbase@kylinsp3-1 bin]$ cat /KingbaseES/V8/ClientTools/guitools/KDts/KDTS-WEB/pid

在这里插入图片描述

[Step5]: 验证:通过JAVA进程可以看到,一共启动了两个端口。

[kingbase@kylinsp3-1 bin]$ netstat -anlp | grep 8406

在这里插入图片描述

[Step6]: 通过浏览器访问KDTS网页端,账户密码会自动填充。

账号:kingbase
密码:kingbase

在这里插入图片描述

3.3 建立数据源

[Step1]: 数据源管理:新建源数据库,根据实际数据库的参数进行填写。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step2]: 数据源管理:新建目标数据库,根据实际数据库的参数进行填写。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.4 建立迁移任务

[Step1]: 建立迁移任务:分别选择5.3步骤中创建的数据源。

在这里插入图片描述

在这里插入图片描述

[Step2]: 建立迁移任务:选择要迁移的数据库。

在这里插入图片描述

[Step3]: 建立迁移任务:选择迁移对象,可以根据实际需求进行选择,我们这里保持默认。

在这里插入图片描述

[Step4]: 建议迁移任务:这里可以根据实际的数据库迁移经验对参数进行微调,这里我们的数据量过小,保持默认即可。

在这里插入图片描述

3.5 开始迁移

[Step1]: 因为我们的数据量过小,所以迁移很快就完成了。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step2]: 验证:查看迁移详情,可以看到没有任何问题。

在这里插入图片描述

4. KingBaseES数据迁移验证

人大金仓基于 PostgreSQL 开发,但与 WordPress 默认的 MySQL 驱动不兼容。需通过 PHP 的 PDO_KDB 扩展(人大金仓专用驱动)连接,但 WordPress 核心未内置该支持,需手动开发适配层。

[Step1]: 数据迁移验证:查询wp_users表中数据,可以看到四个用户。

[kingbase@kylinsp3-1 ~]$ ksql -Uwordpress -d wordpress
wordpress=> select * from wordpress.wp_users;

在这里插入图片描述

[Step2]: 数据迁移验证:查询wp_posts表中数据,可以看到admin用户的博客内容。

wordpress=> select * from wordpress.wp_posts;

在这里插入图片描述

[Step3]: 数据迁移验证:查询wp_commentis表中数据,可以看到用户的评论信息。

wordpress=> select * from wordpress.wp_comments;

在这里插入图片描述

三、达梦数据库迁移

1. 达梦数据库搭建

1.1 安装前准备

实施规范目录

目录目录权限说明
/dmdata/data755实例保存目录
/dmdata/arch755归档保存目录
/dmdata/dmbak755备份保存目录
/dmdata/install755镜像存储目录

[Step1]: 新建数据库运行用户,禁止使用root用户安装数据库。创建用户所在的组,创建用户。

[root@kylinsp3-1 ~]# groupadd dinstall -g 2001
[root@kylinsp3-1 ~]# useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba
[root@kylinsp3-1 ~]# echo "ChinaSkills23!" | passwd --stdin dmdba

[Step2]: 修改文件打开最大数,在 Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响。

[root@kylinsp3-1 ~]# vim /etc/security/limits.conf# 添加下列内容
dmdba  soft      nice       0
dmdba  hard      nice       0
dmdba  soft      as         unlimited
dmdba  hard      as         unlimited
dmdba  soft      fsize      unlimited
dmdba  hard      fsize      unlimited
dmdba  soft      nproc      65536
dmdba  hard      nproc      65536
dmdba  soft      nofile     65536
dmdba  hard      nofile     65536
dmdba  soft      core       unlimited
dmdba  hard      core       unlimited
dmdba  soft      data       unlimited
dmdba  hard      data       unlimited

[Step3]: 重新启动系统,然后使用dmdba用户登录,可以看到修改已经成功生效。

[dmdba@kylinsp3-1 ~]$ ulimit  -a

在这里插入图片描述

[Step4]: 使用root管理员创建目录,同时授予dmdba用户权限。

[root@kylinsp3-1 ~]# mkdir -p /dmdata/{data,arch,dmbak,install}
[root@kylinsp3-1 ~]# chown dmdba:dmdba -R /dmdata/{data,arch,dmbak,install}
[root@kylinsp3-1 ~]# chmod -R 755 /dmdata/{data,arch,dmbak,install}

1.2 图形化安装达梦

[Step1]: 使用root管理员将DM数据库的iso挂载。

[root@kylinsp3-1 ~]# mount /dmdata/install/dm8_20250506_x86_rh7_64.iso /mnt

[Step2]: 切换到dmdba用户,执行命令开始图形化安装。

[dmdba@kylinsp3-1 ~]$ cd /mnt/
[dmdba@kylinsp3-1 mnt]$ ./DMInstall.bin

[Step3]: 图形化界面启动成功或,会弹出设置语言和时区,保持默认即可。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step4]: 弹出key文件页面,安全版必须指定key文件,否则无法启用安全特性,这里我们没有KEY,直接下一步跳过该步骤。

在这里插入图片描述

在这里插入图片描述

[Step5]: 安装位置保持默认即可,随后执行安装。

在这里插入图片描述

在这里插入图片描述

[Step5]: 安装完成后会弹出执行配置脚本页面,使用root管理员执行该脚本。

[root@kylinsp3-1 ~]# /home/dmdba/dmdbms/script/root/root_installer.sh

在这里插入图片描述
在这里插入图片描述

[Step6]: 安装完成后会提示我们初始化数据库,如果点击初始化,会引导我们建立数据库,这里我们点击“初始化”以完成后续数据库实例的相关配置。

在这里插入图片描述

1.3 配置实例

[Step1]: 选择创建数据库实例,然后会有一个创建数据库模版,根据实际需求进行配置即可。

在这里插入图片描述

在这里插入图片描述

[Step2]: 指定数据库目录。

在这里插入图片描述

在这里插入图片描述

[Step3]: 数据库文件的存储路径保持默认即可。

在这里插入图片描述

[Step4]: DM数据库初始化参数,根据实际需求进行配置。这里我们将簇大小和页大小设置为32,字符集设置为UTF-8,关闭大小写敏感。

在这里插入图片描述

在这里插入图片描述

[Step5]: 用户在安装数据库初始化实例时,需要设置数据库系统用户的密码,并保证一定的密码强度。这里会需要我们为SYSDBA、SYSAUDITOR用户设置密码,也可以让所有系统用户使用同一的密码。DM数据库使用三权分立作为安全机制,通过将数据库管理权限划分为数据库管理员(SYSDBA)、数据库安全员(SYSSSO)和数据库审计员(SYSAUDITOR)。如果安全的版本为安全版,才会增加SYSSSO的用户的密码修改。

在这里插入图片描述

[Step6]: 创建示例库。

在这里插入图片描述

在这里插入图片描述

[Step7]: 创建完成数据库实例后,按照提示执行脚本完成实例配置。

[root@kylinsp3-1 ~]# mv /home/dmdba/dmdbms/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
[root@kylinsp3-1 ~]# systemctl enable DmServiceDMSERVER.service
[root@kylinsp3-1 ~]# systemctl start DmServiceDMSERVER.service

在这里插入图片描述

[Step8]: 执行完脚本后会提示参数修改完成。

在这里插入图片描述

[Step9]: 点击“确定”后,会提示以root用户执行提示的脚本重启数据库使自动优化的参数生效。

[root@kylinsp3-1 ~]# systemctl restart DmServiceDMSERVER.service

在这里插入图片描述

在这里插入图片描述

1.4 配置环境变量

[Step1]: 切换到root管理员,进入dmdba用户的根目录,配置对应的环境变量。DM_HOME 变量和动态链接库文件的加载路径在程序安装成功后会自动导入。

[root@kylinsp3-1 ~]# vim /home/dmdba/.bash_profile# 在文件末尾追加下列内容
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

在这里插入图片描述

[Step2]: 切换到dmdba用户,使环境变量生效。

[dmdba@kylinsp3-1 ~]$ source .bash_profile

1.5 注册服务

[Step1]: DM 提供了将 DM 服务脚本注册成操作系统服务的脚本,同时也提供了卸载操作系统服务的脚本。注册和卸载脚本文件所在目录为安装目录的“/script/root”子目录下。注册服务脚本为 dm_service_installer.sh,用户可以使用注册服务脚本将服务脚本注册成为操作系统服务。注册服务需使用 root 用户进行注册。

[root@kylinsp3-1 ~]# cd /home/dmdba/dmdbms/script/root/
[root@kylinsp3-1 root]# ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -p DMTEST
  • **-t:**注册服务类型,支持的服务类型【dmap、dmamon、dmserver、dmwatcher、dmmonitor、dmasmsvr、dmasmsvrm、dmcss、dmcssm】
  • **-dm_ini:**指定服务所需要的 dm.ini 文件路径
  • **-p:**指定服务名后缀,生成的操作系统服务名为“服务脚本模板名,称 + 服务名后缀”。此参数只针对 dmserver、dmwatcher、dmmonitor、dmasmsvr、dmasmsvrm、dmcss、dmcssm 服务脚本生效。

[Step2]: 验证:进入数据安装目录下的bin目录,可以看到已经注册好的服务 DmServiceDMTEST。

[root@kylinsp3-1 ~]# ll /home/dmdba/dmdbms/bin | grep TEST

在这里插入图片描述

1.6 数据库的启停

[Step1]: 命令行启停数据库:使用dmdba用户进入DM安装目录的bin目录。

[dmdba@kylinsp3-1 ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@kylinsp3-1 bin]$ ./DmServiceDMTEST start			// 启动数据库
[dmdba@kylinsp3-1 bin]$ ./DmServiceDMTEST restart		// 重启数据库
[dmdba@kylinsp3-1 bin]$ ./DmServiceDMTEST stop			// 停止数据库

[Step2]: 查看数据库状态。

[dmdba@kylinsp3-1 bin]$ ./DmServiceDMTEST status

在这里插入图片描述

[Step3]: 图形化启停数据库。

[dmdba@kylinsp3-1 ~]$ cd /home/dmdba/dmdbms/tool/
[dmdba@kylinsp3-1 tool]$ ./dmservice.sh

在这里插入图片描述

2. 达梦数据库迁移评估工具

达梦数据提供了三种工具进行迁移前源端数据库兼容性评估:

  • 数据迁移工具 DTS:提供了异构数据源之间的评估,迁移和对比功能。DM 数据迁移工具采用向导方式引导用户通过简单的图形化进行兼容性评估操作。
  • 达梦企业管理器 DEM:支持对 ORACLE、MySQL、SQL Server 等主流数据库迁移到达梦数据库进行在线采集评估和自动转化,并提供兼容报告。
  • SQLark 百灵连接:支持对 ORACLE、MySQL、PostgreSQL 等主流数据库迁移到达梦数据库进行在线采集评估和自动转化,一键生成源数据库画像,获取源库对象、不兼容对象、大表、大字段表等迁移重难点情况,评估本次迁移需要投入的工作量。SQLark 会根据源库画像,生成合理的迁移策略,为开发者后续进行的自动/手动迁移提供迁移方案参考。

2.1 数据迁移工具DTS

DTS是一款免费的数据迁移工具,在数据库安装时自带有图形化的版本,同时也可以部署DEM(达梦企业管理器)以WEB客户端的方式提供,此工具主要适用于静态数据迁移场景。DTS 基于成熟的关系数据模型和标准接口,跨越多种主流大型数据库,能以极少的系统开销实现数据迁移工作。

DM 数据迁移工具提供了主流大型数据库迁移到 DM、DM 迁移到主流大型数据库、DM 到 DM、文件迁移到 DM 以及 DM 迁移到文件的功能,DM 数据迁移工具采用向导方式引导用户通过简单的步骤完成需要的操作,数据迁移粒度灵活,DTS 客户端部署简单,对移植环境要求较低。

2.2 SQLark百灵连接

SQLark百灵连接是一款面向信创应用开发者的数据库开发和管理工具,其数据迁移功能,专注于提供全流程的异构数据库迁移服务,通过迁移评估和数据迁移两个环节和自动化语法解析,提前识别可能存在的改造工作,生成最佳迁移策略,一键迁移到目标数据库,最大化减低用户的数据库迁移成本。因环境因素、迁移报错等原因造成的迁移任务中断,SQLark 支持从断点恢复迁移,可以提升大型企业级项目中千万级/亿级大表的迁移效率。百灵连接的典型场景为:Oracle/MySQL/PostgreSQL 全量迁移至达梦数据库。

2.3 数据复制软件DMDRS

DMDRS 是支持异构环境的高性能、高可靠和高可扩展的数据库实时同步系统。通过秒级数据实时同步有效避免传统备份系统导致的无法完全满足企业对于信息系统不中断服务的问题;通过变化日志捕捉可以有效降低传统 ETL 工具因创建触发器、影子表等对业务系统带来的性能影响;通过实时的数据同步,构建“双活”的主备系统,解决传统基于数据库自身的主备系统中备机只读而无法对外提供写服务的问题。该产品可广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发和多业务中心等业务领域。DMDRS 移植场景下,源端数据库需要开启归档和逻辑附加日志。

  • 主要场景是停机窗口较短的业务系统,使用增量同步数据的方式缩短停机窗口,适用于平滑迁移或升级
  • 支持数据全量和增量实时同步,非介入式捕获增量对源端数据库几乎无影响
  • 可实现数据级灾备、业务分流,支持远距离异地容灾

2.4 数据集成软件DMDIS

DMDIS实现了对数据抽取、传输、整合以及装载的一站式支持,是构建数据中心、数据仓库、数据交换和数据同步等数据集成类应用的理想平台。

  • 支持 TXT、CSV、Excel、XML 文件、消息服务器、WebService、Restful。
  • 支持全量抽取、增量抽取,双向同步、文件同步、批量文件读取
  • 支持对于简繁体、汉字拼音、乱码处理、字符集转换、中文数字的中国特有的问题提供内置的转换规则进行处理
  • 支持中英文日期时间格式自动转换、支持web端操作、监控
  • 支持二次开发接口,比如数据源的抽取装载接口、数据转换接口、元数据存取接口

3. 基于SQLark进行数据迁移

迁移信息

角色网络信息数据库版本端口号迁移用户迁移数据库
源库localhostMySQL 8.4.53306wordpresswordpress
目标库localhostDM Database Server 64 V85236SYSDBAwordpress

3.1 迁移流程

一次完整的数据库迁移流程,包括迁移评估和数据迁移两部分。SQLark同时支持仅迁移评估或跳过评估直接开始数据迁移环节,满足不同迁移场景需求。

  • 迁移评估:迁移评估环节通过分析源库对象、兼容表、大表、大字段表等迁移重难点情况,生成源库画像和迁移策略,评估本次迁移需要投入的工作量
  • 迁移实施:数据迁移环节提供一站式全自动迁移,基于迁移策略对数据库对象和表数据开展自动化迁移和语法转换,为迁移异常提供错误分析和修改建议,以任务管理的方式保证迁移工作完成。

3.2 SQLark安装

[Step1]: 通过PC端访问SQLark官网下载安装SQLark最新客户端。

https://www.sqlark.com/?s=eco-com-mysql-dm

在这里插入图片描述

[Step2]: 下载完成后安装。

[root@kylinsp3-1 ~]# yum install -y SQLark_V3.5_linux_x86_64.rpm

在这里插入图片描述

[Step3]: SQLark是免费使用的,但是需要注册账号,这里我们登录注册的账号。

在这里插入图片描述

在这里插入图片描述

3.3 迁移评估

[Step1]: 打开SQLark百灵连接,在迁移首页点击“数据迁移”。

在这里插入图片描述

[Step2]: 随后会跳转到网页端,点击“创建评估任务”,源和目的选择“MySQL->DM”。

在这里插入图片描述

在这里插入图片描述

[Step3]: 点击“查看详情”,跳转去配置连接源数据库。

在这里插入图片描述

在这里插入图片描述

[Step4]: 选择要评估的数据库。

在这里插入图片描述

[Step5]: 生成源数据库画像。

在这里插入图片描述

在这里插入图片描述

[Step6]: 选择导出pdf格式的数据库画像。

在这里插入图片描述

在这里插入图片描述

[Step7]: 生成迁移策略。

在这里插入图片描述

在这里插入图片描述

3.4 自动化迁移

3.4.1 开启自动化迁移

[Step1]: 在迁移评估完成后,可以开启自动化迁移。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step2]: 连接目标数据库,也就是连接DM数据库。

在这里插入图片描述

[Step3]: 确认迁移范围,选择源库数据库wordpress,迁移范围为全量迁移。SQLark会按照依赖关系对数据库对象实施自动化迁移,降低迁移风险,缩短迁移耗时。

在这里插入图片描述

3.4.2 初始化参数检查

[Step1]: 迁移初始化参数设置不当,会导致迁移失败、迁移批量报错且无法修改、迁移完成后业务系统功能运行失败、数据展示异常等问题。建议完成以下检查项后再进行后续迁移。

在这里插入图片描述

[Step2]: 设置目标库兼容参数(COMPATIBLE_MODE):修改源库兼容参数为4,修改完参数后需要重启数据库生效。

  • 兼容Oracle:2
  • 兼容SQLServer:3
  • 兼容MySQL:4
  • 兼容TERADATA:6
  • 兼容PostgreSQL:7
[dmdba@kylinsp3-1 ~]$ disql SYSDBA@localhost
密码:ChinaSkills23!
SQL> SP_SET_PARA_VALUE(2,'COMPATIBLE_MODE',4);		// 修改兼容性参数
SQL> exit
[dmdba@kylinsp3-1 ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@kylinsp3-1 bin]$ ./DmServiceDMTEST restart

在这里插入图片描述

[Step3]: 设置目标库兼容参数(COMPATIBLE_MODE)验证:执行SQL语句,查询V$PARAMETER视图下参数的设置值,结果为三个4则修改成功。

[dmdba@kylinsp3-1 bin]$ disql SYSDBA@localhost
密码: ChinaSkills23!
SQL> select VALUE,SYS_VALUE,FILE_VALUE from V$PARAMETER where name='COMPATIBLE_MODE';

在这里插入图片描述

[Step4]: 设置目标库排序时NULL值返回位置(ORDER_BY_NULLS_FLAG):修改达梦兼容参数,修改完参数后需要重启数据库生效。

SQL> SP_SET_PARA_VALUE(2,'ORDER_BY_NULLS_FLAG',2);

[Step5]: 设置目标库排序时NULL值返回位置(ORDER_BY_NULLS_FLAG)验证:执行SQL语句,查询V$PARAMETER视图下参数的设置值,结果为三个2则修改成功

SQL> select VALUE,SYS_VALUE,FILE_VALUE from V$PARAMETER where name='ORDER_BY_NULLS_FLAG';

在这里插入图片描述

[Step6]: 设置源库MySQL空闲连接数达到300或以上,执行下方SQL语句修改MySQL的最大连接数。

[dmdba@kylinsp3-1 ~]$ mysql -uroot -pChinaSkills23!
mysql> SET GLOBAL max_connections = 400;

[Step7]: 空闲连接数验证:查询MySQL的空闲连接数。

mysql> show VARIABLES LIKE 'max_connections';

在这里插入图片描述

[Step8]: 完成上述操作后,执行重新检查,可以看到大部分检查结果均为“通过”。

在这里插入图片描述

3.4.3 开启数据迁移

[Step1]: 开启数据迁移。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[Step2]: 迁移完成,可以看到没有任何报错信息。

在这里插入图片描述

[Step3]: 下一步,开启迁移校验。

在这里插入图片描述

[Step4]: 可以看到迁移的数据量与原数据量均一致。

在这里插入图片描述

[Step5]: 生成完成校验报告功能暂时还没有上线,所以到这一步便完成了所有工作。

在这里插入图片描述

4. 达梦数据库迁移验证

WordPress 默认依赖MySQL/MariaDB的架构设计,其核心代码(如 wp-config.php)仅支持 MySQL 连接方式(如 mysqli或PDO)。而达梦数据库虽兼容部分 SQL 标准,但其底层架构、存储引擎和优化策略与 MySQL 不同,需通过专用驱动或中间件实现连接

[Step1]: 数据迁移验证:查询wp_users表中数据,可以看到四个用户。

[dmdba@kylinsp3-1 ~]$ disql SYSDBA@localhost
密码: ChinaSkills23!
SQL> select * from wordpress.wp_users;

在这里插入图片描述

[Step2]: 数据迁移验证:查询wp_posts表中数据,可以看到admin用户的博客内容。

SQL> select * from wordpress.wp_posts;

在这里插入图片描述

[Step3]: 数据迁移验证:查询wp_commentis表中数据,可以看到用户的评论信息。

SQL> select * from wordpress.wp_comments;

在这里插入图片描述

四、错误解决

1. MySQL迁移人大金仓UTC时间为空

[Step1]: 在迁移的时候出现问题,提示在字段 “post_date_gmt” 中空值违反了非空约束。根据报错信息,可以知道是自动草稿没有生产post_date_gmt时间。

在这里插入图片描述

[Step2]: 通过查询MySQL中关于本地时间和UTC时间的内容,可以看到“自动草稿”的UTC时间均为默认值。

mysql> select post_title AS '标题',post_date AS '本地时间',post_date_gmt AS 'UTC时间' from wp_posts;

在这里插入图片描述

[Step3]: 这里我们使用批量更新命令进行更新。

mysql> UPDATE wp_posts-> SET post_date_gmt = DATE_SUB(post_date, INTERVAL 8 HOUR)-> WHERE post_title='自动草稿';

在这里插入图片描述

[Step4]: 解决完UTC时间异常后,重启迁移任务。

在这里插入图片描述

[Step5]: 可以看到又出现报错了,也是同样的问题。

Caused by: com.kingbase8.util.KSQLException: 错误: 在字段 "post_modified_gmt" 中空值违反了非空约束

在这里插入图片描述

[Step6]: 通过查询MySQL中关于post_modified和post_modified_gmt的内容,可以看到“自动草稿”UTC时间也是默认值。

mysql> select post_title AS '标题',post_modified AS '本地修改时间',post_modified_gmt AS '本地UTC修改时间' from wp_posts;

在这里插入图片描述

[Step7]: 这里我们使用批量更新命令进行更新。

mysql> UPDATE wp_posts-> SET post_modified_gmt = DATE_SUB(post_modified, INTERVAL 8 HOUR)-> WHERE post_title='自动草稿';

在这里插入图片描述

2. MySQL迁移达梦数据库失败

2.1 迁移结果:无法迁移

[Step1]: WordPress存储的数据比较乱,会导致迁移的过程中出现很多问题,迁移结果分为两种类别。

  • 无法迁移:无需处理,所依赖的对象迁移成功/标记为已处理后,将自动启用迁移
  • 迁移报错:根据改写建议进行处理

在这里插入图片描述

[Step2]: 点击“改写”,然后查看“处理建议”,可以看到处理建议为“无需处理”。

在这里插入图片描述

在这里插入图片描述

[Step3]: 对三个对象名分别点击标记,标记为“已处理对象”。

在这里插入图片描述

2.2 迁移结果:迁移失败

2.2.1 DEFAULT约束表达式无效

[Step1]: 对象[user_registered]改写:点击“改写”,然后点击执行命令,查看报错信息。

在这里插入图片描述

[Step2]: 对象[user_registered]改写:根据提示,我们可以得知在达梦数据库中“DEFAULT (‘0000-00-00 00:00:00’)”的格式不支持。达梦数据库支持使用“CURRENT_TIMESTAMP”作为默认值,我们改写并执行

// 原语句
"user_registered" TIMESTAMP(0) DEFAULT ('0000-00-00 00:00:00') NOT NULL// 修改后语句
"user_registered" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL

在这里插入图片描述

[Step3]: 对象[comment_date]改写:点击“改写”,然后点击执行命令,查看报错信息。

在这里插入图片描述

[Step4]: 对象[comment_date]改写:将所有的DEFAULT约束修改。

// 原语句
"comment_date" TIMESTAMP(0) DEFAULT ('0000-00-00 00:00:00') NOT NULL
"comment_date_gmt" TIMESTAMP(0) DEFAULT ('0000-00-00 00:00:00') NOT NULL// 修改后语句
"comment_date" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL
"comment_date_gmt" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL

在这里插入图片描述

[Step5]: 对象[link_updated]改写:将所有的DEFAULT约束修改。

// 原语句
"link_updated" TIMESTAMP(0) DEFAULT ('0000-00-00 00:00:00') NOT NULL// 修改后语句
"link_updated" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL

在这里插入图片描述

[Step6]: 对象[post_date]改写:将所有的DEFAULT约束修改。

// 原语句
"post_date" TIMESTAMP(0) DEFAULT ('0000-00-00 00:00:00') NOT NULL
"post_date_gmt" TIMESTAMP(0) DEFAULT ('0000-00-00 00:00:00') NOT NULL
"post_modified" TIMESTAMP(0) DEFAULT ('0000-00-00 00:00:00') NOT NULL
"post_modified_gmt" TIMESTAMP(0) DEFAULT ('0000-00-00 00:00:00') NOT NULL// 修改后语句
"post_date" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL
"post_date_gmt" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMPNOT NULL
"post_modified" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL
"post_modified_gmt" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL

在这里插入图片描述

[Step7]: 处理完后,均需要点击标记,标记为“已处理对象“。

在这里插入图片描述

2.2.2 索引已存在

[Step1]: 一共存在三个报错,均为“索引[meta_key]已存在”,无需理会。

在这里插入图片描述

在这里插入图片描述

2.2.3 不能对自增列使用CHECK约束

[Step1]: 一共存在10个报错,均为“不能对自增列使用CHECK约束”。

在这里插入图片描述

[Step2]: 在达梦数据库中,自增列不能直接使用CHECK约束,以为自增列的值由数据库自动生成,用户无法显式控制其值是否满足CHECK条件。这里无需作任何处理,直接标记为“已处理对象”。

在这里插入图片描述

http://www.lryc.cn/news/598565.html

相关文章:

  • multiprocessing模块使用方法(二)
  • 微信格式插件 建的文件位置
  • 负载均衡-LoadBalance
  • 机器学习基础-k 近邻算法(从辨别水果开始)
  • TCP重传率优化在云服务器网络协议栈的调优实践
  • Java面试宝典:Spring专题二
  • openbmc 日志系统继续分析
  • 科大讯飞运维 OceanBase 的实践
  • Android tcp socket sample示例
  • 亚纳米级检测!潜望式棱镜的“检测密码”,决定手机远景清晰度
  • Text2SQL智能问答系统开发(一)
  • 激光雷达的单播和广播模式介绍
  • Java技术栈/面试题合集(17)-Git篇
  • C++符合快速入门(有java和js基础的)
  • 7.24路由协议总结
  • 如何将拥有的域名自定义链接到我的世界服务器(Minecraft服务器)
  • C++ 基础入门
  • 【shell脚本编程】day1 备份指定文件类型
  • 深入理解大语言模型生成参数:temperature、top\_k、top\_p 等全解析
  • 社区资源媒体管理系统设计与实现
  • 复盘—MySQL触发器实现监听数据表值的变化,对其他数据表做更新
  • Kubernetes Kubelet 资源配置优化指南:从命令行参数到配置文件的最佳实践
  • Hadoop磁盘I/O瓶颈的监控与优化:从iostat指标到JBOD vs RAID的深度解析
  • 40、鸿蒙Harmony Next开发:UI场景化-组件截图(ComponentSnapshot)
  • 跨境支付入门~国际支付结算(结算篇)
  • 龙虎榜——20250724
  • Vue工程化 ElementPlus
  • 数据结构实验-查找与排序算法
  • NPM/Yarn完全指南:前端开发的“基石“与“加速器“
  • 基于单片机智能交通灯设计