达梦数据库系列—30. DTS迁移Mysql到DM

news2024/9/22 1:00:33

目录

1.MySQL 源端信息

2.DM 目的端信息

3.迁移评估

4.数据库迁移

4.1源端 MySQL 准备

4.2目的端达梦准备

初始化参数设置

兼容性参数设置

创建迁移用户和表空间

4.3迁移步骤

创建迁移

配置迁移对象及策略

开始迁移

对象补迁

5.数据校验

统计 MySQL 端对象及数据

统计 DM 端对象及及数据

6.统计信息与备份

更新统计信息

备份

7.应用迁移


1.MySQL 源端信息

调研项

说明

数据库架构

单机

节点数

1

数据库版本

MySQL 8.0

待迁移库

dbtest

IP 地址/端口

192.168.32.128/3306

服务器运维用户名(密码)

root

数据库用户名(密码)

xxxxx

字符集编码

UTF-8

大小写敏感

不敏感

是否以字节为单位

归档保留策略

/

统计指定库中表的数目。

SELECT COUNT(*) TABLES, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_SCHEMA = 'eyoucms' GROUP BY TABLE_SCHEMA;

统计指定库中视图的数目

SELECT TABLE_SCHEMA,COUNT(*) VIEWS FROM INFORMATION_SCHEMA.VIEWS  WHERE TABLE_SCHEMA  = 'eyoucms'  GROUP BY TABLE_SCHEMA;

统计指定库中所有的存储过程、函数

SELECT `NAME` FROM MYSQL.PROC WHERE DB = 'eyoucms' AND `TYPE` = 'FUNCTION';

统计指定库中所有的触发器

SELECT TRIGGER_SCHEMA ,TRIGGER_NAME FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA= 'eyoucms';

将指定库中所有表数据量记录到辅助表

CREATE TABLE MYSQL_TABLES(TAB_OWNER VARCHAR(100),TAB_NAME VARCHAR(100),TAB_COUNT INT);

INSERT INTO MYSQL_TABLES SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_SCHEMA = 'eyoucms' ORDER BY TABLE_ROWS DESC;

2.DM 目的端信息

调研项

调研命令

服务器品牌/型号

dmidecode

服务器操作系统

cat /etc/os-release

内存容量

cat /proc/meminfo

CPU 型号/核数

cat /proc/cpuinfo

端口策略

是否与目的端网络、端口互通

安全策略

是否有软件、硬件相关安全限制(比如堡垒机、网闸、文件摆渡)

是否具备可视化界面

可视化提供的方式(直连、Xmanager、VNC、BMC 等)

其他

/

3.迁移评估

勾选评估内容

指定要评估的数据库模式,勾选 MySQL 中需要迁移的库进行评估。

选择 MySQL 库中具体需要评估的对象

确认评估任务后开始评估

评估完成后可点击右下方的“查看报告”,查看详细的评估报告

这里全部兼容,如果有不兼容的,可单独进行修改迁移。

4.数据库迁移

4.1源端 MySQL 准备

在正式开始移植前需要停止所有对源端 MySQL 数据库的变更操作

4.2目的端达梦准备

初始化参数设置

数据库参数

参数值

DB_NAME(数据库名)

DAMENG(根据需求设置)

INSTANCE_NAME(实例名)

DMSERVER(根据需求设置)

PORT_NUM(端口)

5236(正式移植环境下,为保证数据库安全,不建议使用默认端口 5236)

管理员、审计员、安全员密码(安全版本特有)

不推荐使用默认密码

EXTENT_SIZE(簇大小)

16

PAGE_SIZE(页大小)

32

LOG_SIZE (日志大小)

2048M

CHARSET(字符集)

UTF-8(一般是 UTF8,根据实际要求设置)

CASE_SENSITIVE(大小写敏感)

不敏感(一般是不敏感,根据实际要求设置)

BLANK_PAD_MODE(尾部空格填充)

其中页大小(page_size)、簇大小(extent_size)、大小写敏感(case_sensitive)、字符集(charset)、结尾空格填充(BLANK_PAD_MODE)一旦确定无法修改,需谨慎设置。

(1)CASE_SENSITIVE 大小写是否敏感设置。CASE_SENSITIVE=1 大小写敏感,包含 2 层意思:

  ① 表中数据:区分大小写。

  ② 对象名:对象名区分大小写。

兼容性参数设置

参数名

含义

建议值

COMPATIBLE_MODE

是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准 2:兼容 ORACLE 3:兼容 MS SQL SERVER 4:兼容 MYSQL 5:兼容 DM6 6:兼容 TERADATA。

4(表示部分语法兼容 MYSQL),重启数据库生效。

ORDER_BY_NULLS_FLAG

控制排序时 NULL 值返回的位置,取值 0、 1、2。 0 表示 NULL 值始终在最前面返回; 1 表示 ASC 升序排序时 NULL 值在最后返回, DESC 降序排序时 NULL 值在最前面返回, 在参数等于 1 的情况下, NULL 值的返回与 ORACLE 保持一致; 2 表示 ASC 升序排序时 NULL 值在最前面返回, DESC 降序排序时 NULL 值在最后返回,在参数等于 2 的情况下, NULL 值的返回与 MYSQL 保持一致。

2(兼容 MYSQL)。

MY_STRICT_TABLES

是否开启 STRICT 模式(严格模式),仅在 COMPATIBLE_MODE=4 时有效。0:不开启,数据超长时自动截断;字符类型转换数值类型(包括 INT、SMALLINT、TINYINT、BIGINT、DEC、FLOAT、DOUBLE)失败时,转换为 0;1:开启,数据超长或计算错误时报错。

建议值:1。

创建迁移用户和表空间

针对 MySQL 中的每一个库在达梦里面创建一个用户和表空间来对应。例如 MySQL 中有一个库 dbtest,达梦里面先创建一个表空间 dbtest,然后创建一个用户 DBTEST,指定默认表空间为 dbtest。

create tablespace eyoucms datafile '/dm/data/DAMENG/eyoucms01.dbf' size 128 autoextend on next 32 maxsize 1024;

create user eyoucms identified by "eyoucms123" default tablespace eyoucms;

grant public,resource,soi,svi,vti to eyoucms;

4.3迁移步骤

创建迁移

新建迁移工程

选择迁移方式为 “MySQL ==> DM”

配置数据源

配置迁移对象及策略

迁移对象方式及迁移策略中勾选“保持对象名大小写”

在这里勾选了“使用默认数据类型映射关系”,如果后面又自定义了数据类型映射关系,DTS 会优先选择使用自定义的数据映射关系

注意修改字符长度,字符集CHARSET=0代表使用GB18030,即一个中文两个字节。CHARSET=1代表使用UTF-8,即一个中文3个字节,查看字符集select UNICODE ();

默认映射关系:

勾选源端待迁移的数据库

这里不再勾选“创建模式”

勾选源端数据库中需要迁移的对象

在 SQL 评估阶段不兼容的对象不需要勾选,待其它对象迁移完成后,再手动修改和导入这些不兼容的对象

右上角“分析源对象”,可查看源端对象统计:

可点击转换进行自定义对象迁移策略

迁移策略

在迁移策略中可根据需要设置表及数据迁移的策略

一般先迁移表,再迁移主键、索引和约束

部分选项说明:

① 压缩:指定迁移的目的表是否按照压缩方式存储。

② 强制聚集索引:即使源表的主键为非聚集主键,创建目的表时也会被转换为聚集主键。

③ 强制非聚集索引:即使源表的主键为聚集主键,创建目的表时也会被转换为非聚集主键。

④ 启用标志列插入:如果表上有标志列,则迁移数据时会强制向标志列插入值,以保证源和目的数据完全一致。

⑤ 显示行数:将在迁移任务过程中,显示数据的行数。

⑥ 拷贝记录:如果目的表已存在,直接拷贝记录,不需要创建表。

⑦ 删除后拷贝记录:迁移过程中先删除已存在的目的表,再重新创建新目的表。

⑧ 源一次读取行数:设置从数据源中读取数据时每次读取数据的行数,该参数决定内存中缓存结果集的大小,对于数据量很大的数据源,设置该参数,可以控制内存的使用。

⑨ 目的一次提交行数:设置向目的数据库中每次写入数据的行数。当数据量比较大时,减小该参数的值可以减少内存的使用。但会影响迁移的速度。

⑩ 缓存批数:设置缓存队列的长度。调整该参数可以调整迁移过程中内存的使用。

列映射选项

可根据需求修改映射信息,根据需要勾选“应用当前选择项到其他同类对象”

开始迁移

检查迁移任务,确认迁移对象是否正确

有迁移失败,和因为失败取消的任务。

对象补迁

通过“查看详细信息”,记录每一个失败的表。

例以上第一个失败:

由于达梦中文字符集char类型存放一个中文字符是2个字节,这里需要在“配置对象及策略”里,修改字符字符长度为2。

可以重新建一个迁移,选择刚才失败的表,重新做一次迁移。

5.数据校验

统计 MySQL 端对象及数据

见“Mysql源端信息”章节

统计 DM 端对象及及数据

统计达梦数据库中相关用户的对象数

SELECT OBJECT_TYPE,COUNT(*) FROM ALL_OBJECTS WHERE OWNER='EYOUCMS' GROUP BY OBJECT_TYPE;

统计表数据

CREATE TABLE DM_TABLES

(

TAB_OWNER VARCHAR(100),

TAB_NAME  VARCHAR(100),

TAB_COUNT INT

);

declare

v_owner VARCHAR2(100);

v_tabname VARCHAR2(100);

stmt  VARCHAR2(200);

num_rows number;

         begin

         for rec in (SELECT OWNER,OBJECT_NAME FROM ALL_OBJECTS WHERE OWNER='EYOUCMS' AND OBJECT_TYPE='TABLE')---owner根据实际情况调整

            loop

            select rec.owner,rec.OBJECT_NAME into v_owner,v_tabname from dual;

            stmt := 'select count(*) from "' || v_owner || '"."' || v_tabname || '"';

            EXECUTE IMMEDIATE stmt INTO num_rows;  

            EXECUTE IMMEDIATE 'insert into dm_tables values('''||v_owner||''','''||v_tabname||''','''||to_number(num_rows)||''')';

EXECUTE IMMEDIATE 'commit';

           end loop;

           end;

6.统计信息与备份

更新统计信息

按模式更新统计信息:

DBMS_STATS.GATHER_SCHEMA_STATS('DBTEST',100,FALSE,'FOR ALL COLUMNS SIZE AUTO');

 --DBTEST 为模式名,需要根据实际情况修改为自己的模式名。

如果数据量较大,该过程执行较慢,需要等待一段时间。

按表进行统计信息的收集:

DBMS_STATS.GATHER_TABLE_STATS('username','table_name',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

备份

7.应用迁移

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1948061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BUG与测试用例设计

一.软件测试的生命周期 需求分析→测试计划→测试设计,测试开发→测试执行→测试评估→上线→运行维护 二.BUG 1.bug的概念 (1)当且仅当规格说明(需求文档)是存在的并且正确,程序与规格说明之间的不匹配才是错误. (2)当需求规格说明书没有提到的功能,判断标准以最终用户为准…

vscode调试nextjs前端后端程序、nextjs api接口

最近有一个项目使用了nextjs框架,并且使用nextjs同时实现了前后端,由于之前前后端都是分离的,前端的调试可以通过在代码种添加debugger或者直接在浏览器中打断点实现,现在想调试后端接口,前面的方式就不适用了。故研究…

【RaspberryPi】树莓派Matlab/Simulink支持包安装与使用

官网支持与兼容性 Raspberry Pi Support from MATLAB - Hardware Support - MATLAB & Simulink Raspberry Pi Support from Simulink - Hardware Support - MATLAB & Simulink Matlab与树莓派兼容性 Simulink与树莓派兼容性 树莓派Matlab&Simulink RaspberryPi支…

项目实战1(30小时精通C++和外挂实战)

项目实战1(30小时精通C和外挂实战) 01-MFC1-图标02-MFC2-按钮、调试、打开网页05-MFC5-checkbox及按钮绑定对象06--文件格式、OD序列号08-暴力破解09-CE10-秒杀僵尸 01-MFC1-图标 这个外挂只针对植物大战僵尸游戏 开发这个外挂,首先要将界面…

RK3399 Linux 系统,接i2c外设,时好时坏(三)其中一个解决问题方法

在 RK3399 平台上,连接 I2C 设备时,有时可能会遇到时好时坏的问题。这种情况往往与引脚的配置有关。在本文中,我们将讨论如何通过调整引脚的上下拉配置来解决这个问题。 目前瑞芯微芯片,需要调节i2c驱动电流能力的,有以下芯片: 具体来说,我们将把 I2C1 的引脚配置中的…

SpringSecurity专题

目录 一:认证授权 什么是认证授权: 二:权限数据模型 RBAC权限数据模型 2.1基于角色访问权限控制 2.2基于资源访问权限控制 常见的认证方式 1.Cookie-Session 2.jwt令牌无状态认证 三:JWT 1.JWT的组成 2.JWT的使用 四&…

【STC32G12K128开发板】第3-7讲:声音探测传感器

第3-7讲:声音探测传感器 学习目的了解声音探测传感器模块的作用。掌握单片机编程读取声音探测传感器模块引脚输出状态,从而判断周围环境声音强度有没有达到设置的阈值。 声音探测传感器简介 声音探测传感器模块对环境声音强度敏感,常用来检测…

解决Linux桌面初始化问题

问题 启动vnc桌面,提示问题 定位 从[t]csh手册 可以看到,其初始化流程 经定位,是.cshrc的这段代码存在,导致桌面初始化异常。 [wanlin.wangicinfra-cn-172-16-0-115 ~]$ cat .cshrc ...部分省略... # Environment for anac…

模拟电子技术-实验五 单管放大电路仿真实验

实验五 单管放大电路仿真实验 一.实验类型 二.实验目的 1、熟悉multisim的仿真实验法,熟悉multisim中双踪示波器和信号发生器的设置和使用方法。学习电压表的使用方法。 2、熟悉放大电路的基本测量方法,了解使放大电路不失真地…

Spring中@PostConstruct注解的使用

1.描述 1.1 背景 最近在做一个系统交互日志模块,要监控一个http请求,并记录请求与响应日志。项目中使用RestTemplate来发送http请求,所以打算给RestTemplate设置拦截器,来进行自定义操作。但是,只对当前类生效&#x…

《昇思25天学习打卡营第23天|RNN实现情感分类》

使用RNN进行情感分类:基于IMDB数据集的LSTM应用 引言 情感分析是自然语言处理(NLP)中的一个重要应用,广泛用于电影评论、社交媒体等文本数据的情感分类任务。本文将介绍如何使用递归神经网络(RNN)实现情感…

InternLM学习笔记

入门岛 1. Linux基础知识 2. Python 基础知识 from collections import Countertext """ Got this panda plush toy for my daughters birthday, who loves it and takes it everywhere. Its soft and super cute, and its face has a friendly look. Its a …

[linux] seqeval安装报错

新建一个新的环境 然后安装: # 不能拷贝别人的环境再安mebert_wash的环境。有冲突。我需要重新安一个空的conda环境,再安装。 # conda create -n wash python3.10 ipykernel python -m pip install --upgrade setuptools python -m pip install --upgr…

函数-递归调用

目录 一、基本介绍 二、递归能解决什么问题? 三、递归案例 1、打印问题 2、阶乘问题 四、递归重要规则 五、课堂练习 1、斐波那契数 2、猴子吃桃问题 3、汉诺塔 一、基本介绍 1、简单地说:递归就是函数自己调用自己,每次调用时传入…

利用python自动化运维i脚本实现远程连接服务器并实现相应命令

目录 前言: 一.调用的python库介绍 二.在主机上安装好相应的库 2.1激活虚拟环境 三.代码实现以及解析 四.效果的实现 五.致谢 前言: 在当今快速发展的技术环境中,自动化运维已成为 IT 基础设施管理的关键组成部分。它不仅可以显著提…

SPSS个人版是什么软件

SPSS是一款数据统计、分析软件,它由IBM公司出品,这款软件平台提供了文本分析、大量的机器学习算法、数据分析模型、高级统计分析功能等,软件易学且功能非常强大,可以使用SPSS制作图表,例如柱状、饼状、折线等图表&…

CasaOS设备使用Docker安装SyncThing文件同步神器并实现远程管理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

基于 HTML+ECharts 实现智慧景区数据可视化大屏(含源码)

构建智慧景区数据可视化大屏:基于 HTML 和 ECharts 的实现 随着旅游业的蓬勃发展,智慧景区的概念逐渐深入人心。通过数据可视化,景区管理者可以实时监控游客流量、设施使用情况以及环境状况,从而提升游客体验和管理效率。本文将详…

昇思学习打卡-22-生成式/DCGAN生成漫画头像

文章目录 DCGAN网络数据处理构造网络生成器判别器损失函数优化器 结果展示 我们将学习DCGAN网络如何数据处理、设置网络,包括生成器、判别器、损失函数、优化器等。 DCGAN网络 DCGAN(深度卷积对抗生成网络,Deep Convolutional Generative Ad…

数据结构之《队列》

在数据结构之《栈》章节中学习了线性表中除了顺序表和链表外的另一种结构——栈,在本篇中我们将继续学习另一种线性表的结构——队列,在通过本篇的学习后,你将会对栈的结构有充足的了解,在了解完结构后我们还将进行栈的实现。一起…