使用DTS将自建MySQL迁移至PolarDB MySQL引擎,探索DTS全量数据校验

2023-12-19

1. 领取免费的ECS和PolarDB资源

一旦您注册了阿里云账号并填写了您的账号和支付信息,您就可以申请免费试用我们的产品(如ECS、PolarDB、RDS等服务)。

1.1. 申请 ECS 免费试用

1. 在
阿里云免费试用中心,找到ECS,单击“立即试用”>

1

2. 选择部署新ECS实例的地域,选择操作系统类型(如CentOS 7.8 x64),完成免费试用订单的所有配置:

2

3

4

5

6

7

3. 稍等片刻,然后检查刚刚启动的实例的状态。您还可以在实例状态变为 Running (运行 中) 时自定义实例的名称。

8

1.2. 申请PolarDB免费试用

1.​在阿里云免费试用中心,找到PolarDB,单击立即申请>

9

2. 填写表格并提交

10

3. 单击 “开始免费试用” ,启动PolarDB实例

11

4. 在表单中选择区域,完成免费试用订单的所有配置

12

13

14

5. 稍等片刻,检查刚刚启动的实例的状态

15

16

2. 准备自建MySQL并在ECS上生成测试数据

在实验室页面右侧,单击图标

17

以切换到 Web 终端。请输入用户名和密码登录ECS实例。

18

2.1. 在ECS上安装MySQL 8.0

执行以下命令,在ECS上安装MySQL 8.0及其扩展包。启动服务,检查服务状态,并在重新启动时启用自动启动。

注意:此实验基于 CentOS 7.8 x64 操作系统。如果您使用的是其他操作系统,则安装可能会有所不同,本实验中不对此进行讨论。

sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
sudo yum install -y mysql-community-server mysql-community-client

sudo systemctl start mysqld
sudo systemctl enable mysqld
systemctl status mysqld

19

运行以下命令以获取默认密码,该密码将在运行安全安装命令以初始化数据库时使用。在此过程中,您还可以设置自己的密码。之后,登录。

grep "password" /var/log/mysqld.log
sudo mysql_secure_installation

要保护您的MySQL安装,请在重置MySQL密码后输入“是”以解决所有问题。

20

21

之后,访问MySQL数据库。

sudo mysql -u root -p

22

当您看到上面的MySQL版本和SQL输入提示时,您已经成功安装了自建的MySQL并进入了数据库。

2.2. 在自建MySQL上准备测试数据

登录MySQL后,执行以下命令,创建数据库,创建表,并在迁移前将数据插入MySQL。然后,检查表的架构并选择生成的数据量。

create database testdb;
use testdb;

CREATE TABLE `customer` (
  `customer_id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`customer_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `product` (
  `product_id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `price` int(11) DEFAULT NULL,
  PRIMARY KEY (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `customer` VALUES ('1', 'Marty1'), ('2', 'Marty2'),('3', 'Marty3'),('4', 'Marty4'),('5', 'Marty5'),('6', 'Marty6'),('7', 'Marty7'),('8', 'Marty8'),('9', 'Marty9'),('10', 'Marty10'),('11', 'Marty11'),('12', 'Marty12'),('13', 'Marty13'),('14', 'Marty14'),('15', 'Marty15'),('16', 'Marty16'),('17', 'Marty17'),('18', 'Marty18'),('19', 'Marty19'),('20', 'Marty20');

INSERT INTO `product` VALUES ('1', 'Bread-1','4'), ('2','Bread-2','7'),('3', 'Bread-3','2'),('4', 'Bread-4','10'),('5', 'Bread-5','5'),('6', 'Bread-6','7'),('7', 'Bread-7','6'),('8', 'Bread-8','3');

show tables;
show columns from customer;
show columns from product; 
select * from customer;
select * from product;

23

24

25

26

27

28

请通过执行以下示例代码来查找创作摘要:

1 个数据库 :testdb
2 个 表:customer、product• 数据 :customer 表中有 20 条记录,product
中有 8 条记录

2.3. 在自建MySQL上创建用户进行迁移

登录MySQL后,执行以下命令,新建用户进行迁移。

CREATE USER 'dtsmigration'@'%' IDENTIFIED BY 'Dts123456@';
GRANT ALL ON *.* TO 'dtsmigration'@'%';
flush privileges;
exit;

29

因此,将创建用户 dtsmigration

3. 设置目标数据库实例

3.1. 在目标数据库实例上创建数据库帐户

源数据库数据准备好后,进入PolarDB控制台,切换到PolarDB所在地域,在目标数据库上创建用户进行迁移。请注意, 需要特权帐户 。请遵循以下指南,以确保您不会错过任何要点。

30

31

32

33

34

当状态变为“活动”时,表示数据库用户创建成功。

4.检查网络状况

你快到了!让我们完成准备工作并进入下一阶段。请进行最终环境检查,确认源端和目标端的网络条件完全满足要求。

4.1. 检查源数据库访问权限

4.1.1. 检查要迁移的用户帐户的远程访问

要访问刚刚创建的MySQL数据库,您需要重新登录ECS实例。在实验室页面右侧,单击图标

17

并切换到 Web 终端。输入用户名和密码登录ECS实例。如果您仍通过上述步骤登录,则可以在 Web 终端上使用相同的会话选项卡。

_35

如果您退出了云服务器的MySQL数据库,您可以执行以下命令重新登录。

mysql -u root -p

然后,执行以下命令,查看自建MySQL是否允许远程访问。

SELECT user, host FROM mysql.user;
exit;

35

如上所示,带有 % 的行表示允许为迁移创建的用户从任何位置访问数据库服务器。

如果用于迁移的用户的主机值改为 本地主机 ,则应努力执行本实验中未讨论的其他配置。否则,您可能会在迁移过程中遇到失败。

4.1.2. 检查系统防火墙状态

执行以下命令,查看弹性云服务器的防火墙状态。如果它处于打开状态,则可以暂时为实验室将其关闭,但如果使用的是生产环境,则不要直接禁用防火墙服务。在生产环境中,我们建议保持防火墙开启状态,并根据实际情况配置相关的入站和出站策略。

systemctl status firewalld

36

如上所示,在实验室中,防火墙处于关闭状态。

4.1.3. 查看弹性云服务器的安全规则

进入ECS控制台​,切换到ECS实例所在的地域,编辑安全规则,允许目标RDS和DTS服务器连接MySQL服务端口。由于这是一个测试环境,为了方便起见,您可以直接参考以下示例,允许所有 IP 访问弹性云服务器上的所有端口。

与防火墙配置类似,如果是生产环境,则不应允许从任何地方访问任何端口。

37

38

39

4.2. 检查目标数据库访问权限

4.2.1. 配置目标数据库实例的白名单

进入PolarDB控制台​,设置实例白名单,确定谁可以与实例建立连接。在本实验中,您可以参考以下示例来接受所有 IP。但是,如果您在生产环境中操作,则需要谨慎使用配置 0.0.0.0/0,因为它不安全。

40

41

5. 配置DTS迁移任务

5.1. 配置DTS迁移任务并预检查

进入DTS控制台​,切换到目标数据库所在地域,创建迁移任务。您需要根据实际环境配置源数据库和目标数据库的信息,并指定迁移对象,如以下示例所示。

需要注意的是,对于迁移类型,在任务配置时只需要勾选全量数据迁移和Schema迁移。增量迁移可能会产生额外费用,因此请谨慎配置。

此外,DTS 还提供了按行或哈希验证数据的功能。您可以选择通过配置数据验证设置来探索此功能。本实验中用到了这个功能,如果想试用,可以参考以下配置。如果您不感兴趣,也可以跳过这部分配置。

42

43

44

45

46

47

48

49

50

51

52

53

5.2. 启动DTS迁移任务

预检查后,在控制台上单击“启动任务”。您可以见证任务的以下状态更改:

架构迁移 -> 完整迁移 -> 已完成

54

55

56

57

58

59

60

当任务变为“已完成”时,表示迁移已完成。

6. 验证数据

迁移后,需要检查源数据库和目标数据库的数据一致性。如果数据不是太多,很容易做到这一点。例如,在本实验中,您可以登录到目标数据库并运行一些基本的 SQL 语句,因此您可以通过比较记录计数或从表中选择所有数据来轻松了解一致性。但是,如果迁移的数据量很大,尤其是表库较多时,DTS的全量数据校验功能会非常有用。

6.1. 在DTS控制台查看全量数据校验详情

由于本实验中配置了 DTS 全量数据验证功能,因此您可以在下面看到此功能如何节省时间:

61

62

如图所示,该功能为您提供了双方数据的清晰摘要,以帮助您轻松区分并找到不一致的项目。

6.2. 检查目标数据库的数据

如果您没有配置 DTS 全量数据校验功能,您仍可以通过运行 SQL 语句手动进行数据校验,以获取表上的行和数据。迁移后,您最终会知道数据是否有效。

63

64

65

66

67

68

69

70

7. 可选 - 清理资源

至此,实验室已完成。您可以选择保留资源以供进一步使用,也可以立即清理它。对于通过申请免费试用进行探索的参与者,如果您不打算继续使用这些资源并且不想清理它,那没关系,您不会为此付费。但是,如果您不打算继续使用它,我们强烈建议您释放实例。您可以通过两个步骤释放所有资源:

  1. 将资源从包年包月转换为即用即付
  2. 点击释放清理

7.1. 释放ECS实例

进入ECS控制台​,按照以下示例逐步释放实例:

71

72

73

74

75

7.2. 释放PolarDB实例

进入PolarDB控制台​,按照以下示例逐步释放实例:

76

77

78

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用DTS将自建MySQL迁移至PolarDB MySQL引擎,探索DTS全量数据校验 的相关文章

  • 如何使用wireshark清晰捕获mysql查询sql

    因为我们使用远程开发Mysql服务器 所以不能轻易检查查询sql 如果使用本地服务器可以tail f general log file查看调用某个http接口时执行了哪些sql 所以我安装了一个wireshark捕获这些从本地发送的查询sq
  • oursql 中的参数化查询

    如果有人能告诉我是否可以使用命名占位符进行参数化查询 我将不胜感激oursql 一个用于与 MySQL 数据库交互的 python 模块 例如 我尝试了一种可以与 sqlite3 一起使用的查询 c execute select from
  • 日期时间与时间戳字段

    我是 MySQL 数据库的新手 您是否建议在表创建中使用日期时间或时间戳字段以及原因 我正在使用 MySQL 5 7 和 innodb 引擎 Thanks 我会用TIMESTAMP对于任何需要自动管理的事情 因为它支持诸如ON UPDATE
  • mysql表中的数据非常大。即使 select 语句也需要很多时间

    我正在开发一个数据库 它是一个相当大的数据库 有 13 亿行和大约 35 列 这是我检查表状态后得到的结果 Name Table Name Engine InnoDB Version 10 Row format Compact Rows 1
  • MySQL 可选的带有 MATCH 的 LEFT JOIN

    我有以下查询 它对 MySQL Innodb 数据库中同一搜索词的两个不同表中的两列执行全文搜索 SELECT Id MATCH tb1 comment tb2 comment AGAINST search term IN BOOLEAN
  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何
  • 更改mysql数据库表中的日期格式

    大家早上好 只是一个简单的问题 在我现有的 MySql 数据库中 我几乎没有包含日期 的列 目前这些是年 月 日格式 但现在我需要将其全部更改为年 月 日格式 我试过了select date format curdate d m Y 但它不
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013
  • 如何在查询语句之外从mysql查询中获取值?

    这是下面的函数console log function quo value value connection query SELECT role from roles where id 1 function error results fi
  • NHibernate - 无法执行查询 - 输入字符串的格式不正确

    我已经为此摸不着头脑有一段时间了 我不知道出了什么问题 概述 我的 MySQL 数据库中有两个表 两者都正确映射到数据库 我可以加载数据 并且我能够查询一个表 但不能查询另一个表 我研究过的解决方案 表和 C 代码之间的类型转换问题 映射问
  • JDBC 错误:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我在 Java Eclipse 中收到错误消息 我在 MySql 中有一个数据库 它有列 String user name int id time int id desk int user password 我想
  • 显示和随机化 php 数组

    我有一个显示结果的数组 如下所示 Array 0 gt 71 1 gt 56 2 gt 64 3 gt 82 4 gt 90 5 gt 80 6 gt 65 7 gt 62 8 gt 14 9 gt 3 我的代码是 while row my
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • 如何从表中检索特定列 --- JPA 或 CrudRepository?我只想从用户表中检索电子邮件列

    用户模型 Entity Table name user uniqueConstraints UniqueConstraint columnNames email public class User implements Serializab
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 如何为 MySQL 中的字段或列添加别名?

    我正在尝试做这样的事情 但我收到未知的列错误 SELECT SUM field1 field2 AS col1 col1 field3 AS col3 from core 基本上 我只想使用别名 这样我就不需要执行之前执行的操作 这在mys
  • MySQL InnoDB 约束不起作用

    我偶然发现 innoDB 约束的奇怪行为 但找不到原因 我有包含数据的表格 下面列出了它们的结构 CREATE TABLE contents id int 10 unsigned NOT NULL AUTO INCREMENT title
  • 拥有更多列或更多行会更高效吗?

    我目前正在重新设计一个可能包含大量数据的数据库 我可以选择在数据库中包含许多不同的列或使用大量行 如果我在下面做一些大纲 可能会更容易 item id user id title description content category t
  • 研究MySQL、SQLite源码了解RDBMS实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道实现数据库是一个很大的话题 但我想通过研究数据库系统的源代码来基本了解数据库系统的工作原理 例如
  • 奇怪的 MySQL Python mod_wsgi 无法连接到 'localhost' (49) 上的 MySQL 服务器问题

    StackOverflow上也有类似的问题 但我还没有发现完全相同的情况 这是在使用 MySQL 的 OS X Leopard 机器上 一些起始信息 MySQL Server version 5 1 30 Apache 2 2 13 Uni

随机推荐

  • Python环境搭建

    一 Python运行环境 PATH添加环境变量 方便添加后续工具 后续自定义安装即可 交互式解释器 二 开发环境 PyCharm
  • SSM框架实现学生信息管理系统

    这个管理系统是我学完SSM后的一个练手小项目 感兴趣的小伙伴可以在B站搜下SSM实战 这是雷神讲的一套课程 他用得是JSP进行前端页面渲染 前端方面的湘学习占了 但是JSP技术太老了 我把JSP改成Thymeleaf 有关Thymeleaf
  • 使用C语言设计并实现一个成绩管理系统

    使用C语言设计并实现一个成绩管理系统 该系统用于教师管理一门课程的成绩 系统功能 成绩录入 打印成绩单 修改成绩 统计分数段 统计平均分 统计不及格学生 相关要求 1 系统要有主菜单界面 让教师了解系统的功能 以及如何选择系统功能 2 系统
  • .h5文件简介

    一 简介 HDF5 Hierarchical Data Format version 5 是一种用于存储和组织大量数据的文件格式 它支持高效地存储和处理大规模科学数据的能力 HDF5 是一种灵活的数据模型 可以存储多种数据类型 包括数值数据
  • 如何使用 C++ 开发 Redis 模块

    在本文中 我将总结 Tair 在使用 C 开发 Redis 模块时遇到的一些问题 并将其提炼为最佳实践 目的是为 Redis 模块的用户和开发人员提供帮助 其中一些最佳实践也可以应用于 C 编程语言和其他编程语言 介绍 从 Redis 5
  • 刚入行的嵌入式新人是否值得坚持嵌入式方向?

    今日话题 刚入行的嵌入式新人是否值得坚持嵌入式方向 如果你正在学习C语言或者嵌入式方向 坚持下去是一个明智的选择 嵌入式行业涉及硬件 技术更新相对较慢 但这为你积累宝贵的经验提供了机会 与纯软件相比 具有独特的优势 我提供了一套全面的嵌入式
  • Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻、直播带货及免 费小程序商城搭建

    1 涉及平台 平台管理 商家端 pc端 手机端 买家平台 h5 公众号 小程序 app端 ios android 微服务平台 业务服务 2 核心架构 spring cloud spring boot mybatis redis 3 前端框架
  • 【Spring】SpringMVC项目升级成SpringBoot实践

    将Spring MVC项目升级为Spring Boot项目需要一系列详细的步骤 以下是一个更详细的步骤指南 项目初始化 创建一个新的Spring Boot项目 您可以使用Spring Initializr或Spring Boot的Maven
  • 读论文:(Style GAN)A Style-Based Generator Architecture for Generative Adversarial Networks

    2018年NVIDIA首次使用ProGAN应对这一挑战时 研究人员都无法生成高质量的大图像 如 1024 1024 ProGAN的关键创新点是渐进式训练 它首先使用非常低分辨率的图像 如 4 4 开始训练生成器和识别器 并且每次都增加一个更
  • 智能家居管制是怎么回事,智能家居出现了新赛道?

    为增进大家对智能家居的认识 本文将对智能家居 智能家居的管制以及智能家居新赛道予以介绍 智能家居 是现在的发展主流之一 也可以说 智能家居是这个时代的主题 为增进大家对智能家居的认识 本文将对智能家居 智能家居的管制以及智能家居新赛道予以介
  • 【Lidar】Open3D点云DBSCAN聚类算法:基于密度的点云聚类(单木分割)附Python代码

    1 DBSCAN算法介绍 DBSCAN聚类算法是一种基于密度的聚类算法 全称为 基于密度的带有噪声的空间聚类应用 英文名称为Density Based Spatial Clustering of Applications with Nois
  • Java语言真的跌落神坛了吗?

    Java语言真的跌落神坛了吗 在开始前我有一些资料 是我根据自己从业十年经验 熬夜搞了几个通宵 精心整理了一份 Java的资料从专业入门到高级教程 工具包 点个关注 全部无偿共享给大家 在评论区回复 888 之后私信回复 888 即可拿走
  • 一封来自北京软协的感谢信

    日前 北京软件和信息服务业协会 以下简称北软协 向酷雷曼 北京同创蓝天云科技有限公司 发来感谢信 以 表彰和感谢 同创蓝天对北软协及行业的 全方位支持和卓越贡献 作为北软协理事会会员单位 酷雷曼积极参与各类论坛交流活动 为 行业调研建言献策
  • Netty火热平时却接触不多?1515页Netty学习进阶笔记真香

    Netty 的介绍 Netty 是由 JBOSS 提供的一个 Java 开源框架 现为 Github 上的独立项目 Netty 是一个异步的 基于事件驱动的网络应用框架 用以快速开发高性能 高可靠性的网络IO 程序 Netty 是一个异步的
  • vscode 内置(自带)功能使用

    vscode 搜索 功能 使用正则表达式 参考文章 Justice23 参考文章 熟悉的新风景 转义字符 匹配内容 t tab r 回车符号 r n 换行符号 n 特殊符号转义 如
  • JMeter —— 如何循环使用接口返回的多个值!

    在用JMeter做接口测试的时候 经常会遇到这样一种情况 一个接口请求返回了多个值 然后下一个接口想循环使用前一个接口的返回值 第二种情况 只想循环请求前一个接口返回值中的随机不定长度的某一些值 并不想用全部的 今天 我就和大家讲解一下这两
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证

    public Task InvokeAsync HttpContext context 获取终点路由特性 var endpointFeature context Features Get
  • Web自动化测试流程:从入门到精通,帮你成为测试专家

    摘要 Web应用程序在今天的软件开发中占据着越来越重要的地位 保证Web应用程序的质量和稳定性是非常必要的 而自动化测试是一种有效的方法 本文将介绍Web自动化测试流程 并提供代码示例 步骤一 选取测试工具 选择适合自己团队的自动化测试工具
  • 滚动条样式

    webkit scrollbar 滚动条整体样式 width 10px 高宽分别对应横竖滚动条的尺寸 height 10px webkit scrollbar thumb 滚动条里面小方块 border radius 10px box sh
  • 使用DTS将自建MySQL迁移至PolarDB MySQL引擎,探索DTS全量数据校验

    1 领取免费的ECS和PolarDB资源 一旦您注册了阿里云账号并填写了您的账号和支付信息 您就可以申请免费试用我们的产品 如ECS PolarDB RDS等服务 1 1 申请 ECS 免费试用 1 在 阿里云免费试用中心 找到ECS 单击