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

目录

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.mzph.cn/news/874041.shtml

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

相关文章

Unity: TextMeshPro生成中文字体(附3.5k,7k,2w常用字集)

免费常用3千5,7千字,2万字中文字体包 1.选择Window/TextMeshPro/Font Asset Creator 注:准备字体:从字体库或其他来源获取中文字体文件,通常为.ttf、.otf或.ttc格式。最简单的方式是从Windows系统文件的Font文件夹里…

应用层自定义协议与序列化

个人主页:Lei宝啊 愿所有美好如期而遇 协议 简单来说,就是通信双方约定好的结构化的数据。 序列化与反序列化 我们通过一个问题引入这个概念,假如我们要实现一个网络版的计算器,那么现在有两种方案,第一种&#x…

C语言超市管理系统UI界面

以下是部分代码。需要源码的私信 #include<easyx.h> #include<stdio.h> #include<stdlib.h>#define width 1280 #define height 840 #define font_w 35 //字体宽度 #define font_h 90 //字体高度typedef struct node {char name[100];//名字char number[1…

Modbus转Ethernet/IP网关模块与汇川PLC通讯案例

Modbus转Ethernet/IP网关模块&#xff08;XD-MDEP100&#xff09;是一种用于将Modbus协议转换为Ethernet/IP协议的设备。它可以将Modbus RTU和Modbus TCP两种不同格式的Modbus数据包转换为Ethernet/IP协议的数据包&#xff0c;实现不同厂家的设备之间的数据交换和共享。在汇川P…

软件测试----概念篇(笔试相关,一般考察开发模型和测试模型的特点及适用场景)

文章目录 前言一、需求二、开发模型1.什么是“模型”2.软件的生命周期3.常见开发模型瀑布模型螺旋模型增量模型、迭代模型敏捷模型 三、测试模型V模型W模型(双V模型&#xff09; 前言 在当今软件行业飞速发展的时代&#xff0c;软件测试已成为软件质量保障的重要环节。它贯穿于…

WhisperX

文章目录 一、关于 WhisperX新闻 &#x1f6a8; 二、设置⚙️1、创建Python3.10环境2、安装PyTorch&#xff0c;例如Linux和Windows CUDA11.8&#xff1a;3、安装此repo4、Speaker Diarization 三、使用&#x1f4ac;&#xff08;命令行&#xff09;1、English2、他语言例如德语…

Cyber Weekly #16

赛博新闻 1、OpenAI 发布 GPT-4o mini OpenAI 本周官宣推出 GPT-4o mini&#xff0c;这是 GPT-4o 更小参数量的简化版本。ChatGPT 的免费用户、Plus 用户和 Team 用户能使用 GPT-4o mini 而并非 GPT-3.5 Turbo&#xff0c;企业用户在下周也将获得 GPT-4o mini 的权限。GPT-4o…

少儿编程启蒙宝典:Scratch动画游戏108变

一、编程教育的时代价值与意义 随着数字时代的深入发展&#xff0c;社会对人才的需求正发生深刻变革&#xff0c;计算思维与编程能力已成为衡量个人竞争力的重要指标。在此背景下&#xff0c;培养孩子们运用计算思维解决实际问题的能力&#xff0c;成为教育领域的重要任务。编…

UE4-获得角色控制权的两种方法

方法一&#xff1a; 方法二&#xff1a; 注意此方法不能有多个玩家出生点&#xff0c;如果有多个玩家出生点&#xff0c;会随机的选择一个玩家出生点进行生成。

IP5306移动电源DIY

最近制作一款移动电源&#xff0c;芯片采用的是IP5306

UDP详细总结

UDP协议特点 UDP是无连接的传输层协议&#xff1b; UDP使用尽最大努力交付&#xff0c;不保证可靠交付&#xff1b; UDP是面向报文的&#xff0c;对应用层交下来的报文&#xff0c;不合并&#xff0c;不拆分&#xff0c;保留原报文的边界&#xff1b; UDP没有拥塞控制&#…

python实现图像对比度增强算法

python实现直方图均衡化、自适应直方图均衡化、连接组件标记算法 1.直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 2.自适应直方图均衡化算法详解算法步骤公式Python 实现详细解释优缺点 3.连接组件标记算法详解算法步骤8连通与4连通公式Python 实现详细解释优缺…

微服务实现全链路灰度发布

一、实现步骤 再请求 Header 中打上标签&#xff0c;例如再 Header 中添加 "gray-tag: true" &#xff0c;其表示要进行灰度测试&#xff08;访问灰度服务&#xff09;&#xff0c;而其他则访问正式服务。在负载均衡器 Spring Cloud LoadBalancer 中&#xff0c;拿到…

Deepin系统,中盛科技温湿度模块读温度纯c程序(备份)

#include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <termios.h>int main() {int fd;struct termios options;// 打开串口设备fd open("/dev/ttyMP0", O_RDWR | O_NOCTTY|O_NDELAY); //O_NDELAY:打开设备不阻塞//O_NOCTT…

Qt Creator配置以及使用Valgrind - 检测内存泄露

Qt Creator配置以及使用Valgrind - 检测内存泄露 引言一、下载安装1.1 下载源码1.2 安装 二、配置使用2.1 Qt Creator配置2.2 使用2.3 更多详细信息可参考官方文档&#xff1a; 三、参考链接 引言 Valgrind是一个在Linux平台下广泛使用的开源动态分析工具&#xff0c;它提供了一…

任务2:python+InternStudio 关卡

任务地址 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Python/task.md 文档 https://github.com/InternLM/Tutorial/tree/camp3/docs/L0/Python 任务 Python实现wordcount import re import collectionstext """ Got this panda plush to…

【机器学习】智能驱动未来:机器学习在能源效率提升与环境管理中的创新应用

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习能源环境领域的应用潜力&#x1f304;能源效率提升&#x1f3de;️环境管理⛰️具体案例…

Linux之旅:常用的指令,热键和权限管理

目录 前言 1. Linux指令 &#xff08;1&#xff09; ls &#xff08;2&#xff09; pwd 和 cd &#xff08;3&#xff09;touch 和 mkdir &#xff08;4&#xff09; rmdir 和 rm &#xff08;5&#xff09;cp &#xff08;6&#xff09;mv &#xff08;7&#xff09;…

开发工具推荐:await-to-js

目录 前言&#xff1a; 1. .then().catch() 2. async await 3. await-to-js 前言&#xff1a; 今天给大家推荐一块我觉得用着还不错的工具&#xff0c;await-to-js&#xff1b; await-to-js - npm GitHub - scopsy/await-to-js: Async await wrapper for easy error ha…

HTML+CSS+JS精美气泡提示框

源代码在效果图后面 点赞❤️关注&#x1f49b;收藏⭐️ 主要实现&#xff1a;提示框出现和消失两种丝滑动画 弹出气泡提示框后延迟2秒自动消失 效果图 错误框 正确 警告 提示 源代码 <!DOCTYPE html> <html lang"en"> <head><meta cha…