背景信息
AnalyticDB for MySQL 2.0随后会下线,不再做功能迭代,以维护为主。
数仓版具有以下优势:
版本完全基于ECS部署,采用云原生架构,集群更加弹性、轻量级和灵活。
高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,通过标准SQL和常用BI工具、以及ETL工具平台即可轻松使用。
在计算引擎和优化器上做了大量的改进和优化,性能更高。
完全部署在阿里云数据库管控平台上,更加稳定、安全。
准备工作
了解AnalyticDB for MySQL 2.0和数仓版的产品架构、功能特征和使用方法的相同之处和不同之处。数仓版的产品介绍,请参见什么是云原生数据仓库AnalyticDB MySQL版。
根据AnalyticDB for MySQL 2.0集群已分配的资源,按照CPU数、内存、磁盘空间等维度的最短板向下或者向上一档选择对应的资源规格和数量,创建数仓版集群。具体操作,请参见创建集群。
在数仓版上床集群中创建数据库和账号。具体操作,请参见创建数据库和创建数据库账号。
数据迁移
方式二:使用AnalyticDB for MySQL 2.0的工具迁移数据
重要 部分较低内核版本的集群,使用此方式迁移数据可能出现报错,建议优先使用方式一进行数据迁移。
如果AnalyticDB for MySQL 2.0中使用了多值列类型,多值列的数据未在MaxCompute中,那么这些多值列的数据无法迁移。
如果业务存在实时写入流量,则需要在同步数据之前启动业务双写(即同时写入AnalyticDB for MySQL 2.0和数仓版),以保证不会丢失数据同步期间产生的增量数据。
点击查看迁移步骤
通过MySQL客户端连接AnalyticDB for MySQL 2.0集群。
mysql -h host -P port -u username -p password -D dbname;
参数 | 说明 |
host
| AnalyticDB for MySQL 2.0集群的公网IP地址。 |
port
| AnalyticDB for MySQL 2.0集群的端口号。 |
username
| AnalyticDB for MySQL 2.0集群的账号(AccessKey ID)。 |
password
| AnalyticDB for MySQL 2.0集群的账号密码(AccessKey Secret)。 |
dbname
| AnalyticDB for MySQL 2.0集群的数据库名称。 |
执行以下命令,查询外部数据库目录。
执行以下命令,创建数仓版的外部数据目录(External Catalog)。
CREATE EXTERNAL CATALOG catalog_name
properties(
'connector.name'='mysql'
'connection-url'='jdbc:mysql://mapping_ip:mapping_port/database_name'
'connection-user'='$user'
'connection-password'='$password'
);
如果AnalyticDB for MySQL 2.0集群的Meta表存有导入数据到MaxCompute的记录,可以将MaxCompute数据导入到数仓版的外部数据目录。执行以下命令创建部数据目录:
CREATE EXTERNAL CATALOG catalog_name
properties(
'connector.name' = 'mysql'
'connection-url' = 'jdbc:mysql://mapping_ip:mapping_port/database_name'
'connection-user' = '$user'
'connection-password' = '$password'
'odps-access-id' = '$access_id'
'odps-access-key' = '$access_key'
);
参数 | 说明 |
connector.name
| 创建数仓版集群的外部数据目录,固定取值为MySQL。 |
connection-url
| mapping_ip:mapping_port 为反向代理平台的IP和端口号,请联系AnalyticDB for MySQL官方支持获取。database_name 数仓版集群的数据库名称。
|
connection-user
| 数仓版集群数据库的账号。 |
connection-password
| 数仓版集群数据库账号对应的密码。 |
odps-access-id
| 阿里云账号或者具备MaxCompute访问权限的RAM用户的AccessKey ID。 如何获取AccessKey ID和AccessKey Secret,请参见账号与权限。
说明 如果MaxCompute中已经没有AnalyticDB for MySQL 2.0集群的原始数据,无需配置此参数。 |
odps-access-key
| 阿里云账号或者具备MaxCompute访问权限的RAM用户的AccessKey Secret。 如何获取AccessKey ID和AccessKey Secret,请参见账号与权限。
说明 如果MaxCompute中已经没有AnalyticDB for MySQL 2.0集群的原始数据,无需配置此参数。 |
同步数据。
同步整个库。数据同步到数仓版外部数据目录定义中的数据库。
data-sync database database_name to catalog_name [by pangu];
参数 | 说明 |
database_name
| AnalyticDB for MySQL 2.0集群的数据库名称。 |
catalog_name
| 数仓版外部数据目录的名称。 |
by pangu
| 对于MaxCompute中已经没有原始数据的场景,从AnalyticDB for MySQL 2.0本地同步数据, 需要在命令最后指定by pangu 。
说明 如果不指定by pangu ,且在第二步未定义odps-access-id 和odps-access-key 参数,数据同步会报错。 |
同步单个表结构和数据。
data-sync table table_name to catalog_name [by pangu];
参数 | 说明 |
table_name
| AnalyticDB for MySQL 2.0集群的表名称。 |
catalog_name
| 数仓版外部数据目录的名称。 |
by pangu
| 对于MaxCompute中已经没有原始数据的场景,从AnalyticDB for MySQL 2.0本地同步数据, 需要在命令最后指定by pangu 。
说明 如果不指定by pangu ,且在第二步未定义odps-access-id 和odps-access-key 参数,数据同步会报错。 |
同步单个表的某个二级分区数据。
data-sync table table_name to catalog_name on partition;
参数 | 说明 |
table_name
| AnalyticDB for MySQL 2.0集群的表名称。 |
catalog_name
| 数仓版外部数据目录的名称。 |
partition
| AnalyticDB for MySQL 2.0集群中表的二级分区名称。 例如AnalyticDB for MySQL 2.0集群中表的二级分区定义为PARTITION BY VALUE(202207) ,partition 填写202207即可。 |
按查询条件查询出单个表的部分数据同步到外部数据目录中。
data-sync tabletable_name to catalog_name
options(mode=replace)
where column_name < $value1 and column_name > $value2;
参数 | 说明 |
table_name
| AnalyticDB for MySQL 2.0集群的表名称。 |
catalog_name
| 数仓版外部数据目录的名称。 |
mode=replace
| 指定数据写入方式,取值: |
column_name
| AnalyticDB for MySQL 2.0集群中表的列名。 |
同步整个库的元数据(Meta)。
meta-sync database database_name to catalog_name;
参数 | 说明 |
database_name
| AnalyticDB for MySQL 2.0集群的数据库名称。 |
catalog_name
| 数仓版外部数据目录的名称。 |
同步单个表的元数据(Meta)。
meta-sync table table_name to catalog_name;
参数 | 说明 |
table_name
| AnalyticDB for MySQL 2.0集群的数据库名称。 |
catalog_name
| 数仓版外部数据目录的名称。 |
查看数据同步进度。
SQL回归测试
由于数仓版全面兼容MySQL,摒弃了AnalyticDB for MySQL 2.0的部分函数,如果AnalyticDB for MySQL 2.0的SQL语句使用了这些函数,则数仓版无法兼容这些SQL语句。因此,需要把AnalyticDB for MySQL 2.0的SQL在数仓版进行全部回归测试,以防止正式迁移后部分函数报错。
由于SQL回归测试后期属于内部操作,无需用户执行,若用户有SQL回归测试的需求,请联系AnalyticDB for MySQL官方支持。
测试验证
需要根据业务要求在数仓版进行功能验证和性能验证。
应用迁移
当数据迁移完成,且SQL回归测试通过后,可以将应用迁移到数仓版。
在应用中替换以下信息,完成应用迁移。
将AnalyticDB for MySQL 2.0集群的连接地址更换为数仓版集群的连接地址。
通过控制台集群信息页面中的网络信息区域获取连接地址。
将AnalyticDB for MySQL 2.0集群的数据库账号(AccessKey ID)和密码(AccessKey Secrect)更换为数仓版集群的数据库账号和密码。查看数仓版数据库账号和密码的操作,请参见创建AccessKey。
常见问题
如何将AnalyticDB for MySQL 2.0的数据导出到对象存储(OSS)
请参见分析型数据库MySQL版2.0的8.12. DUMP TO OSS(2.0版)章节。