阿里云数据管理DMS对接使用全流程:从零搭建企业级数据管控平台
1. DMS:企业数据全生命周期管理的核心枢纽
在数字化转型的浪潮中,数据已成为企业最核心的资产之一。然而,随着业务系统的复杂化,数据库实例的数量和类型急剧增加——既有云原生的RDS、PolarDB,也有自建的MySQL、PostgreSQL,甚至还有NoSQL数据库如Redis、MongoDB以及表格存储Tablestore等。如何在同一平台上统一管理这些异构数据源,同时保障数据安全、提升研发效率,是每个企业都面临的现实挑战。
阿里云数据管理DMS(Data Management)正是为解决这一系列问题而生。DMS是一款支撑数据全生命周期的一站式数据管理平台,提供全域数据资产管理、数据治理、数据库设计开发、数据集成、数据开发和数据消费等功能。同时,DMS内置的数据灾备(DBS)还提供了低成本、高可靠的备份恢复能力。简而言之,DMS不仅是一个数据库客户端工具,更是一套覆盖“管、研、治、用”全链路的数据管控体系。
与传统的数据库管理工具相比,DMS的核心优势体现在多个层面。在全域数据资产管理方面,DMS支持企业全域数据资产的统一纳管,提供贯穿数据生命周期的质量治理与安全治理,帮助企业快速地查找数据、高效地使用数据。在数据集成方面,DMS支持常见数据源的实时、离线数据集成,数据集成过程中支持灵活自定义数据的处理逻辑,帮助解决企业数据孤岛的痛点。在易用性方面,DMS提供覆盖数据全生命周期的数据流转及处理能力,通过图形化、向导式的开发模式,智能预警及自主诊断修复等能力,降低企业数据价值挖掘门槛。此外,DMS还提供覆盖数据全生命周期的DevOps能力,内置阿里巴巴大规模实践的数据管控体系,在保障数据安全的同时提升企业研发效率。
需要先登录阿里云控制台,点击:阿里云控制台
2. 前期准备:账号体系与权限规划
在使用DMS之前,首要任务是完成身份认证体系的准备。DMS基于阿里云统一的RAM(Resource Access Management)账号体系进行身份认证。
2.1 主账号与RAM用户的合理划分
阿里云官方明确建议:如非必要,应避免直接使用阿里云主账号来访问数据管理DMS。推荐的做法是使用RAM身份(即RAM用户和RAM角色)来访问数据管理DMS和数据灾备。这一建议的核心在于最小权限原则——即授予用户执行某项任务所需的权限,不授予其他无需用到的权限。最小授权可以避免用户操作权限过大,提高数据安全性,减少因权限滥用导致的安全风险。
对于RAM用户的创建和管理,建议遵循以下最佳实践:使用阿里云账号创建一个RAM用户并授予管理员权限,后续使用有管理员权限的RAM用户创建并管理其他RAM用户;将人员用户和程序用户分离,控制台用户使用账号和密码访问云产品控制台,API用户使用访问密钥AK(AccessKey)调用API访问云资源;对于通过控制台访问的用户,推荐为其开启MFA多因素认证;不要把RAM用户的AccessKey泄露给任何人。
2.2 系统角色体系
DMS内置了完善的系统角色体系,主要包括管理员、DBA(数据库管理员)、普通用户等角色。管理员拥有最高的管理权限,可以录入实例、管理用户、配置安全规则等;DBA负责数据库的日常运维和性能优化;普通用户则根据被授予的权限进行数据查询和开发工作。合理的角色划分是保障企业数据安全的基础。
3. 实例录入:将数据库接入DMS
录入数据库实例至DMS后,您才可以使用DMS功能对数据库进行管理。DMS支持多种类型的数据库接入,包括阿里云数据库(RDS、PolarDB、Redis等)、自建数据库以及第三方云数据库。
3.1 云数据库录入
对于阿里云数据库实例,录入过程相对简便。前提条件包括:待录入的云数据库类型为DMS支持的数据库类型;您的系统角色为DBA或管理员。操作时,登录DMS控制台,在左侧的数据库实例面板中单击“新增实例”按钮,选择对应的数据库类型,然后按照指引选择或输入实例信息即可完成录入。需要注意的是,阿里云数据库实例不支持通过公网连接地址进行录入。
3.2 自建数据库与第三方云数据库录入
对于自建数据库或第三方云数据库,DMS提供了多种接入方式。最推荐的方式是使用数据库网关DG(Database Gateway)。数据库网关支持在不暴露公网IP的前提下,将本地自建或第三方云厂商的数据库与阿里云服务连接起来,避免使用公网IP连接的安全风险。您可以通过数据库网关将本地或第三方云数据库录入DMS进行管理。
使用数据库网关的步骤如下:登录数据库网关控制台,单击左上角选择数据库所处的地域,然后单击新建网关按钮;在弹出对话框中填写网关的名称和备注信息;完成网关创建后,在网关中添加数据库实例,配置数据库的连接信息;最后在DMS中通过该网关录入数据库实例。数据库网关不仅免去了防火墙配置的繁琐工作,还能对数据传输进行安全加密,大大降低了使用门槛。
此外,对于已经建立了VPN连接的场景,DMS也支持通过VPN网关录入IDC自建数据库。您需要在VPC和IDC自建数据库之间建立VPN连接,然后通过VPN网关将数据库录入DMS。
3.3 管控模式的选择
DMS为实例提供了三种管控模式:自由操作、稳定变更和安全协同。自由操作模式免费,适用于个人开发测试等无需严格管控的场景;稳定变更模式适用于需要对数据变更进行规范管理的生产环境;安全协同模式是DMS提供的最高产品规格,您可以在该模式下体验自定义研发规范、细粒度权限管控及可靠平稳的数据变更等DMS的所有产品功能。安全协同模式会产生费用,可通过按量付费或包年包月的方式购买。
企业在选择管控模式时,应根据实例的环境类型和业务重要性进行合理配置。开发测试环境可以使用自由操作模式以降低成本,而生产环境则建议使用稳定变更或安全协同模式以确保数据安全与操作规范。
4. 权限管理:精细化管控数据访问
权限管理是DMS安全体系的核心组成部分。DMS支持在实例、数据库、表、列乃至行级别进行精细化的权限管控。
4.1 权限类型与授权方式
DMS中的权限主要分为查询权限、导出权限和变更权限三种类型。管理员或数据库Owner可以通过DMS控制台为用户授予或回收这些权限。授权粒度可以从实例级别细化到数据库级别、表级别,甚至列级别和行级别。
4.2 自定义权限策略
除了DMS内置的权限管理功能外,企业还可以通过RAM自定义权限策略实现更精细化的管控。自定义权限策略是指在系统权限策略之外,您可以自主创建、更新和删除的权限策略。
以下是一个典型的自定义权限策略示例,用于授予RAM用户通过DMS登录指定RDS实例的权限:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": ["dms:LoginDatabase"],
"Resource": ["acs:rds:*:*:dbinstance/[$RDS_ID]"]
}
]
}其中[$RDS_ID]需要替换为实际的RDS实例ID。如果需要授予RAM用户登录账号下所有RDS实例的权限,可以将Resource配置为["acs:rds:*:*:*"]。
4.3 行级管控
对于需要更细粒度权限控制的场景,DMS提供了行级管控功能。行级管控可实现所有已接入DMS的非NoSQL数据库类型的统一行级权限管控,可以解决不同人员只允许访问不同数据行的问题。例如,在销售管理系统中,不同区域的管理员只能查看各自区域的数据,就可以通过行级管控来实现。
5. SQL开发与数据操作
DMS提供了强大的SQL开发与数据操作能力,覆盖了从数据查询、数据变更到结构变更的完整场景。
5.1 SQL窗口
DMS的SQL窗口可以非常便捷地执行各类SQL语句,同时支持以可视化的方式对目标数据库进行增、删、改、查等操作,适用于数据查询、数据开发等场景。在SQL窗口中,您可以直接输入SQL语句并执行,DMS会在页面上方返回执行的SQL语句与执行结果。
SQL窗口的核心功能包括:智能SQL提示与自动补全、执行计划分析、结果集导出、以及操作审计日志记录。DMS的操作日志中保存了所有数据查询和变更记录,方便事后审计与问题追溯。
5.2 数据变更
DMS的普通数据变更功能支持直接执行或定时执行SQL语句来修改数据库中的数据,例如INSERT、UPDATE、DELETE、TRUNCATE等SQL。数据变更通过工单流程进行管理,确保每一次变更都经过审核与审批。
数据变更工单的完整流程包括以下几个步骤:
- 配置并提交工单:选择需要变更的数据库或实例,填入变更SQL或上传SQL附件。
- 预检查:DMS会主动校验您提交的SQL是否符合普通数据变更的类型、是否有执行该变更SQL的权限等。
- 审批工单:在审批阶段DMS会检查待执行的SQL是否会影响数据库性能,以及是否允许提交工单者执行此SQL。
- 执行数据变更:执行提交的变更SQL。如果变更有误或业务需要回滚,DMS支持在变更完成后快速创建回滚工单以恢复原数据。
DMS还可以将单个SQL拆分成多个批次执行,能更好地满足业务方变更大量表数据且不锁表的需求,例如历史数据清理、全表更新字段等,保证执行效率,减小对数据库性能、数据库空间等的影响。
5.3 结构变更
DMS可以实现对目标库、表进行符合研发规范的表结构设计。支持对比不同数据库、指定表之间的表结构;支持将源数据库的表结构同步至空数据库,实现快速同步数据库表结构,适用部署多区域、多单元的数据库环境。此外,DMS能够有效解决结构变更时锁表的问题,较好地规避了因锁表导致业务阻塞的问题,避免了数据库原生Online DDL带来的主备延迟现象。
5.4 数据库管理
您可在DMS控制台可视化创建、修改或删除数据库,无需执行SQL命令。目前DMS支持管理MySQL、PostgreSQL、MongoDB三种引擎的数据库。在DMS左侧的实例列表中,右键单击目标实例,从弹出的列表中选择“数据库管理”,即可进行创建数据库、编辑数据库、删除数据库等操作。创建数据库时需要配置数据库名、字符集与校验规则等参数。
6. 数据导入与导出
DMS提供了完善的数据导入导出功能,支持将外部数据加载到数据库中,或从数据库中导出数据到外部系统。
6.1 数据导出
当您需要进行数据库备份、导出数据库表进行数据分析等操作时,可使用DMS的数据导出功能。操作步骤通常为:在DMS中选择“数据库开发” > “数据导出” > “数据库导出”,勾选需要导出的表,设置好文件类型、字符集等,单击提交申请。导出格式支持SQL、CSV和EXCEL三种。导出内容可以选择仅导出数据、仅导出结构或同时导出数据和结构。
6.2 数据导入
数据导入功能支持将外部数据文件(如CSV、SQL脚本等)导入到目标数据库中。DMS会对上传的SQL语句进行审核并提供优化建议,避免无索引或不规范的SQL语句影响线上服务,降低SQL注入风险。
7. 任务编排:自动化数据开发与调度
DMS的任务编排功能主要用于编排各类任务节点并进行周期或事件调度执行。您可以通过创建一个或多个任务节点组成的任务流,实现复杂的任务调度,提高数据开发效率。
7.1 任务流创建
登录DMS 5.0控制台,在顶部导航栏中选择“Data+AI” > “数据开发” > “任务编排”。如果您使用的是极简模式的控制台,请单击控制台左上角的图标,选择“全部功能” > “Data+AI” > “数据开发” > “任务编排”。
在任务编排页面,从左侧选择任务节点类型(如单实例SQL、Spark、XIHE SQL等),将其拖拽到右侧空白画布中。然后配置节点的具体参数,如SQL语句、数据源等。
7.2 调度配置
在任务流画布下方的调度配置区域,打开“开启调度”开关,并配置相关参数。您可以设置调度周期(如每日、每周、每月等)、具体执行时间、调度有效期等。DMS的任务编排并不依赖数据库内核的事件调度能力,而是一个外部独立的任务编排与调度系统。
7.3 典型应用场景
任务编排功能在多个场景中发挥着重要作用。例如,可以使用任务编排的单实例SQL节点,将源表中6个月前的历史数据迁移(归档)至目标表中,并删除源表中已迁移的数据。还可以实现T+1报表的自动生成——从RDS中周期迁移数据到ADB中并生成汇总报表。这些自动化流程能够定期自动执行,提高了数据的使用效率,节省了用户的时间。
8. 数据库网关DG:打通云上云下数据壁垒
数据库网关DG是DMS生态中的重要组件,它让您可安全、零成本地将本地数据库或其它云端数据库接入阿里云DMS,帮助用户打通云上云下资源,使用一套工具即可轻松实现数据库统一管理。
8.1 核心价值
数据库网关的核心价值在于:无需开放数据库的公网地址即可完成连接,对数据传输进行安全加密,同时免防火墙配置,大大降低使用门槛。借助数据库网关,您可以使用云产品(DMS、DTS、DBS等)访问本地机房或者其他云厂商的数据库。此外,DG还提供数据库访问点功能,您部署在阿里云ECS上的应用程序,通过该访问点,也可以直接访问本地或第三方云数据库。
8.2 使用流程
使用数据库网关接入数据库的流程如下:首先在数据库网关控制台创建网关实例;然后在网关中添加目标数据库,配置数据库的连接地址、端口、账号等信息;最后在DMS中通过该网关录入数据库实例。完成接入后,在创建数据传输服务DTS任务时,您可以直接将数据库网关中接入的数据库作为源库或目标库。
9. API与SDK集成:实现自动化运维
DMS提供可视化操作控制台,同时还提供OpenAPI在线调试、阿里云SDK、CLI等多种调用方式。为提升您使用DMS的开发效率,建议您按需选择合适的操作和集成方式。
9.1 OpenAPI概述
DMS的OpenAPI采用RPC签名风格。阿里云为开发者提供了多种编程语言(Java、C#、Go、Python、Node.js/TypeScript、PHP、C++等)的SDK。开发者只需集成SDK,通过SDK暴露的方法直接调用OpenAPI。SDK统一封装了签名逻辑、超时机制、重试机制,并根据文档返回结构化Response对象,易于开发。
在使用API前,您需要准备好身份账号及访问密钥(AccessKey),才能有效通过客户端工具(SDK、CLI等)访问API。强烈建议您创建并使用RAM用户进行API访问或日常运维,请根据业务的实际情况按需分配权限后进行接口调用。
9.2 Python SDK调用示例
以下是一个使用Python SDK调用DMS OpenAPI的完整示例,演示如何获取实例信息列表:
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkdms_enterprise.request.v20181101 import ListInstancesRequest
# 初始化客户端
client = AcsClient(
os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
'cn-hangzhou'
)
# 构建请求
request = ListInstancesRequest.ListInstancesRequest()
request.set_accept_format('json')
request.set_Tid(12345) # 租户ID
request.set_SearchKey('test') # 搜索关键字
request.set_DbType('mysql') # 数据库类型
request.set_PageNumber(1)
request.set_PageSize(10)
# 发起调用
response = client.do_action_with_exception(request)
print(response.decode('utf-8'))代码中需要替换的关键参数包括:AccessKey ID和AccessKey Secret(建议通过环境变量获取)、租户ID(Tid)、搜索关键字、数据库类型等。
9.3 数据服务:将数据快速输出为API
DMS提供的数据服务,能够将您在DMS中管理的数据以API的形式快速对外输出。在服务开发页签,您可新建、编辑、测试API。API发布后,您可以通过HTTPS和SSE协议调用该API。这为数据中台建设、数据服务化提供了极大的便利。
10. 最佳实践与成本优化
10.1 安全最佳实践
基于上述内容,我们总结出以下DMS安全最佳实践:使用RAM用户而非主账号进行操作;遵循最小权限原则授予权限;为敏感操作开启MFA多因素认证;利用DMS的行级管控实现细粒度数据访问控制;开启操作审计日志以便事后追溯;定期审查和回收过期权限。
10.2 效率最佳实践
在提升研发效率方面,建议充分利用DMS的任务编排功能实现数据处理的自动化;通过工单流程规范数据变更,减少人为失误;使用逻辑库和逻辑表功能统一管理分库分表;开启无锁结构变更避免锁表影响业务。
10.3 成本优化
在成本控制方面,建议根据实例环境合理选择管控模式——开发测试环境使用免费的自由操作模式,生产环境按需选择稳定变更或安全协同模式。同时,合理规划实例的规格和使用时长,避免资源浪费。
11. 常见问题解答
Q1:DMS支持管理哪些类型的数据库?
DMS支持管理关系型数据库(如MySQL、PostgreSQL、Oracle、SQL Server等)、NoSQL数据库(如Redis、MongoDB)以及表格存储Tablestore等多种数据源。具体支持的数据库类型会持续更新,建议查阅官方文档获取最新列表。
Q2:如何将自建数据库接入DMS?
推荐使用数据库网关DG接入自建数据库。在数据库网关控制台创建网关实例,添加数据库,然后在DMS中通过该网关录入实例即可。此方式无需开放公网地址,安全便捷。
Q3:DMS的三种管控模式有什么区别?
自由操作模式免费,适用于个人开发测试;稳定变更模式适用于需要对数据变更进行规范管理的场景;安全协同模式是最高规格,提供自定义研发规范、细粒度权限管控等全部功能。安全协同和稳定变更模式会产生费用。
Q4:如何通过API调用DMS的功能?
您可以使用阿里云提供的多语言SDK调用DMS OpenAPI。需要提前准备AccessKey,并基于最小权限原则配置RAM策略。代码示例可参考本文第9章的内容。
Q5:DMS的数据变更工单流程是怎样的?
数据变更工单流程包括:配置并提交工单(填写变更SQL)→预检查(校验SQL合法性与权限)→审批(检查性能影响)→执行变更。变更完成后如需回滚,DMS支持快速创建回滚工单。
Q6:如何实现数据库的自动化运维?
您可以利用DMS的任务编排功能创建自动化任务流,配置周期或事件调度。典型场景包括历史数据自动归档、T+1报表自动生成等。此外,还可以通过SDK调用OpenAPI实现更复杂的自动化运维场景。



