华为云用户手册

  • DDM灾备任务源库填写说明 DRS支持DDM灾备任务的源端通过输入IP方式进行连接,如图1。DDM灾备的原理是源端和目标端DDM中的DN一一对应灾备,因此需要正确填写源端和目标端的DN的对应关系。关于DDM逻辑库和逻辑库下的DN实例说明可参考DDM产品文档。 在创建DDM灾备任务前,建议在DDM实例目标端的控制台上,导入源端DDM的逻辑库信息,详细操作可参“导入逻辑库”。 DRS页面上“数据库实例”中按照DN对应关系填写DDM的DN信息,也就是挂载在DDM中的RDS for MySQL信息。例如源端DDM1有一个DN节点,挂载的RDS for MySQ L实例 1,IP为192.168.1.10;目标端DDM2中有一个DN节点,挂载RDS for MySQL实例2 , IP为192.168.6.150,则填写方式如图1,建立DN数据灾备的对应关系。 如果DDM下有多个DN,需要用户确保每个目标端的DN都和源端DN正确对应。 图1 源库信息 父主题: 实时灾备
  • 可能原因 原因1:全量阶段刚结束,增量迁移延迟高。全量迁移过程中,源库增量数据还在不断地写入,DRS需要在全量结束之后,将这部分增量数据同步到目标端去,因此时延较高。 原因2:源库有大批量数据变更(导入、更新、删除)。大事务写入在源库执行时间本来就很长,而DRS把数据同步到目标库也需要一段时间,所以此时延迟会慢慢增加,如果此大事务的表没有主键或者索引,恢复时间会相应拉长。 原因3:源库存在大批量DDL操作,DDL执行比较慢,同步到目标导致时延增高。 原因4:DRS任务规格限制。DRS不同规格对应的性能上限不同,详细可参考规格说明,当源库数据写入量过大达到瓶颈时,就会导致任务出现延迟。 原因5:目标库规格受限,达到写入瓶颈。以目标实例为RDS for MySQL为例,用户可以在RDS控制台查看数据库性能指标。 原因6:可能存在热点更新。无主键表的写入会导致热点更新,源库对单一表或单一行的高频更新也会导致热点更新,从而导致时延增大。以RDS for MySQL为例,可以通过RDS的审计日志进行确认,详情可参考RDS审计日志。 原因7:网络不稳定导致的时延增大。
  • 解决方法 解决方法1:针对这种情况,DRS会自动追平时延,无需处理,用户可观察增量时延是否降低。 解决方法2:存在大事务写入的情况时,等待更新完毕,或者从业务上考虑尽量避免大事务写入的情况。用户可查看源库执行历史,看是否有大事务的写入,同时可以在目标库查看DRS数据回放情况。以MySQL为例,可执行show processlist查看。 解决方法3:源库应尽量避免执行批量DDL,如果必须执行DDL,请尽量在业务低峰期执行。 解决方法4:重新创建任务,选择较大规格提升同步性能(目前,DRS同步仅支持任务类型为单AZ的同步任务升级实例规格,不支持降低规格,具体操作及约束限制可参考同步规格变更)。 解决方法5:升级目标库的实例规格,提高目标库实例写入性能。以目标实例为RDS for MySQL为例,参考变更规格,升级实例配置。 解决方法6:如果存在热点更新,需要等待热点更新完毕,或者从业务上尽量避免热点更新。 解决方法7:网络延迟无法避免,用户可以通过专线网络接入源库和目标库实例减少延迟。
  • DRS支持断点续传吗 针对数据库的迁移、同步场景,在迁移、同步过程中由于不可抗拒因素(例如网络波动)导致的任务失败,DRS通过记录当前解析和回放的位点(该位点同时也是数据库内部一致性的依据),下次从该位点开始回放的方式来实现断点续传,以确保数据的完整性。 增量阶段的迁移、同步,DRS会自动进行多次断点续传的重试,全量阶段的MySQL迁移,系统默认进行三次自动续传,无需人工干预。 当自动重试失败累计一定次数后,任务会显示异常,需要人为根据日志来分析无法继续的原因,并尝试解决阻塞点(例如数据库修改了密码),如果环境无法修复,如所需日志已经淘汰,则使用重置功能可以完全重新开始任务。 父主题: 产品咨询
  • MySQL或MariaDB不同版本之间的语法差异 对于源数据库和目标数据库的版本有差异的迁移和同步链路,由于不同版本之间的部分特性差异,可能会出现语法兼容性问题。 DRS接收到的源数据库Binlog日志中里保存的是原始的执行SQL语句,这些SQL语句将会直接在目标数据库中执行,如果目标数据库对于源数据库中执行SQL中有不支持的语法约束,那么DRS任务将会报错并失败。 例如以下几种源数据库和目标数据库的语法不兼容的场景(非全部场景): 源数据库MySQL 5.7.34版本中执行create table t1 (id int, c1 varchar(16), FULLTEXT INDEX (c1 ASC)) ENGINE = INNODB创建表结构的DDL,该DDL在源数据库Binlog保存的为以上原生SQL,增量过程中在目标数据库MySQL 8.0.27版本中执行会报错,错误信息为“1221 - Incorrect usage of spatial/fulltext/hash index and explicit index order”, 错误原因为目标数据库MySQL 8.0.27版本不支持在全文索引上加排序语法规则。 源数据库MariaDB 10.5.8版本执行create table t1(id INT, c1 VARCHAR(32)) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_nopad_bin创建表结构的DDL,该DDL在源数据库Binlog保存的为以上原生SQL,增量过程中在目标数据库MySQL 8.0.27版本中执行会报错,错误信息为“1273 - Unknown collation: 'utf8mb4_nopad_bin'”,错误原因为目标数据库MySQL 8.0.27版本不支持utf8mb4_nopad_bin排序字符集。 源数据库MariaDB 10.5.8版本执行 create table t1(c1 INT, c2 VARCHAR(32) NOT NULL DEFAULT UUID()) ENGINE = INNODB创建表结构的DDL,该DDL在源数据库Binlog保存的为以上原生SQL,增量过程中在目标数据库MySQL 8.0.27版本中执行会报错,错误信息为“1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near UUID()”,错误原因为目标数据库MySQL 8.0.27版本不支持默认值为UUID()函数。 源数据库MariaDB 10.5.8版本执行 create table t1(c1 int, c2 inet6) ENGINE = INNODB 创建表结构的DDL,该DDL在源数据库Binlog保存的为以上原生SQL,增量过程中在目标数据库MySQL 8.0.27版本中执行会报错,错误信息为“1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near inet6”,错误原因为目标数据库MySQL 8.0.27版本不支持inet6类型。 父主题: 实时同步
  • DRS支持跨账号云数据库迁移吗 图1 DRS产品架构 目前,DRS支持的网络类型有公网网络、VPC网络、VPN网络和专线网络,不同场景下,用户可根据情况进行选择。 原理上DRS采用JDBC连接,无需在用户的源数据库、目标数据库节点部署程序,只需用户的源数据库和目标数据库允许DRS实例节点通过所选择的网络访问和连接即可。 例如,用户需要将A账号的RDS-A实例迁移到B账号的RDS-B,可选择为RDS-A实例申请弹性公网IP并绑定,在B账号创建入云的DRS任务,选择通过公网网络进行迁移。 父主题: 网络及安全
  • 什么是孤儿文档 MongoDB负载均衡器(Balancer)会根据集合的分片键(Shard key)均衡数据。Balancer的工作原理是:需要Balancer的数据块(Chunk)先复制到目标Shard,成功后再删除原Shard上的Chunk,来完成一次Chunk迁移,通过多次Chunk迁移来实现均衡。在Chunk迁移时,如果发生网络闪断等不可预知的场景,完成了复制但没有完成删除,那么对同一条文档会同时存在于两个Shard上。因为Chunk迁移在MongoDB上是感知的,config会更新这条文档应该在哪个Shard上,那么另一个Shard上的文档会存在但不会被感知,后续的update、delete操作都不会作用于这个错误的Shard上的文档,那么这条文档被称为孤儿文档(Orphaned Document)。
  • 操作步骤 下载用于清除孤儿文档的cleanupOrphaned.js脚本文件。 修改cleanupOrphaned.js脚本文件,将test替换为待清理孤儿文档的数据库名。 执行以下命令,清理Shard节点下指定的数据库中所有集合的孤儿文档。 mongo --host ShardIP --port Primaryport --authenticationDatabase database -u username -p password cleanupOrphaned.js ShardIP:Shard节点的IP地址。 Primaryport:Shard节点中的Primary节点的服务端口。 database:鉴权数据库名,即数据库账号所属的数据库。 username:登录数据库的账号。 password:登录数据库的密码。 如果您有多个数据库,您需要重复执行步骤2和步骤3,分别为每个数据库的每个Shard节点清理孤立文档。
  • 包年包月到期说明 “包年/包月”任务到期后,如果没有及时的进行续费或充值,将进入宽限期。如宽限期满仍未续费或充值,将进入保留期。在保留期内,无法在DRS管理控制台进行该任务的操作,相关接口也无法调用,自动化监控或告警等运维也会停止。如果在保留期结束时您没有续费,实例将终止服务,系统中的数据也将被永久删除。 关于宽限期和保留期的时长限制说明,可参考这里。若您购买的任务已到期,请参见费用中心用户指南中资源停止服务或逾期释放说明章节进行处理。 父主题: 计费相关
  • 影响因素 源库的读取吞吐能力 读取吞吐能力越高,迁移速度越快,耗时越少。影响吞吐的因素包括但不限于服务器规格、负载、磁盘IO性能、数据库限流等。 目标库的写入吞吐能力 写入吞吐能力越高,迁移速度越快,耗时越少。影响吞吐的因素包括但不限于服务器规格、负载、磁盘IO性能、数据库限流等。 可用的网络吞吐量 可用的网络吞吐越高,迁移速度越快,耗时越少。影响网络吞吐量的因素包括但不限于可用带宽、防火墙、网络设备限流设置等。 网络质量和网络延迟 网络延迟越小(影响因素包括但不限于源库目标库和DRS实例地理位置的远近程度),迁移速度越快,耗时越少。网络质量差(比如丢包率高)会降低迁移速度。 DRS实例规格 DRS实例规格越大,迁移速度越快,耗时越少。 源数据的模型和分布 此类因素包括是否有主键、是否分区表、是否堆表、平均单行数据量大小、表的数量、索引数量等。 目标库是否已有数据 目标库已有数据可能导致迁移时数据冲突,导致性能下降。 目标库是否有触发器 目标库有触发器可能导致迁移时写入性能下降。 目标库备份和日志等相关设置 如无必要可在迁移期间关闭目标库备份和事务日志,可提升迁移性能。 源库增量数据产生速度 源库增量数据产生速度越快,增量数据追平的耗时越长。 DRS任务数 不考虑其他因素导致的性能瓶颈,通过按表拆分成多个DRS任务,可提升总体迁移性能。
  • MySQL迁移中Definer强制转化后如何维持原业务用户权限体系 Definer的使用主要应用在视图、存储过程、触发器、事件等对象里,Definer并不会限制对象被调用的权限,但会限制对象访问数据库的权限。本场景下,用户在MySQL迁移过程中选择了“所有Definer迁移到该用户下”,则源库用户体系下其他用户账号在完成用户迁移后,如果用户迁移和权限授权都执行成功,则无需授权便可继续使用原业务(使用DRS用户迁移功能可以实现用户、权限、密码迁移),否则如果想在原来的用户权限体系下沿用原业务,则需要进行授权后才具有Definer相关数据库对象的访问使用权限,从而保证原业务正常。 本章节主要介绍如何通过数据库命令行对用户账号进行授权的方法。 确保新用户(Definer统一使用指定账号)具备足够的权限执行视图、存储过程等相关SQL。 通过MySQL官方客户端或者其它工具登录目标数据库。 通过如下命令查看需要授权的用户user当前权限详情。 show grants for 'user'@'host'; 为了保证原业务不报错,使用如下命令给用户user授予涉及的数据库对象缺失的操作权限。 grant select,insert,update,delete on db_name.* to 'user'@'host'; 一般情况下,访问数据库的权限包括:SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、EXECUTE。您需要根据具体的数据库对象查看缺少哪些权限,再进行授权操作。 对于存储过程和函数,必须保证用户user对其有拥有EXECUTE权限,授权SQL命令如下: grant execute on db_name.function_name to 'user'@'host'; 使用授权后的用户账号访问目标库对象,无异常报错表示授权成功。需要注意:在java项目工程中调用存储过程、函数如果出现 Java.sql.SQLException: User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted, configure connection with "noAccessToProcedureBodies=true" to have driver generate parameters that represent INOUT strings irregardless of actual parametertypes,则需要单独执行用户user对mysql.proc库的授权: grant select on mysql.proc to 'user'@'host'; 父主题: 实时迁移
  • 如何选择区域? 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。不过,在基础设施、BGP网络品质、资源的操作与配置等方面,中国大陆各个区域间区别不大,如果您或者您的目标用户在中国大陆,可以不用考虑不同区域造成的网络时延问题。 在除中国大陆以外的亚太地区有业务的用户,可以选择“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“南非-约翰内斯堡”区域。 在欧洲地区有业务的用户,可以选择“欧洲-巴黎”区域。 在拉丁美洲地区有业务的用户,可以选择“拉美-圣地亚哥”区域。 “拉美-圣地亚哥”区域位于智利。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 什么是区域、可用区? 我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 内容对比不支持哪些数据类型 DRS提供的数据比对功能可以清晰反馈出源数据库和目标数据库的数据是否存在差异。 目前对于以下数据类型,DRS不支持内容对比,进行内容对比时会自动跳过。 表1 不支持内容对比的数据类型 源数据库类型 数据类型 MySQL TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT GaussDB TEXT、CLOB、BLOB、BYTEA、INTERVAL DAY TO SECOND、INTERVAL Oracle BLOB、NCLOB、CLOB、LONG RAW、LONG、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH、UROWID、BFILE、XMLTYPE、SDO_GEOMETRY MongoDB _id为BINDATA类型。 Microsoft SQL Server TEXT、NTEXT、IMAGE、BINARY、VARBINARY、HIERARCHYID、XML、TIMESTAMP 对于以下数据类型作为主键,DRS也不支持内容对比,进行内容对比时会归到无法比对的表中。 表2 不支持内容对比的主键类型 源数据库类型 数据类型 MySQL TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、FLOAT、TIMESTAMP、DATE、DATETIME、BINARY、VARBINARY GaussDB TEXT、CLOB、BLOB、BYTEA、INTERVAL DAY TO SECOND、INTERVAL、REAL、DOUBLE PRECISION、BOOL、TIME、TIMETZ、TIMESTAMP、TIMESTAMPTZ、DATE Oracle BLOB、NCLOB、CLOB、LONG RAW、LONG、INTERVAL DAY TO SECOND、INTERVAL YEAR TO MONTH、UROWID、BFILE、XMLTYPE、SDO_GEOMETRY、BINARY_FLOAT、BINARY_DOUBLE、FLOAT、RAW、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE、DATE PostgreSQL REAL、DOUBLE PRECISION、MONEY、TEXT、BYTEA、TIMESTAMP WITHOUT TIME ZONE、TIMESTAMP WITH TIME ZONE、DATE、TIME WITHOUT TIME ZONE、TIME WITH TIME ZONE、INTERVAL、BOOLEAN、ENUMERATED TYPES、POINT、LINE、LSEG、BOX、PATH、POLYGON、CIRCLE、CIDR、INET、MACADDR、MACADDR8、BIT、BIT VARYING、TSVECTOR、TSQUERY、XML、JSON、ARRAY、COMPOSITE TYPES、INT4RANGE、INT8RANGE、NUMRANGE、TSRANGE、TSTZRANGE、DATERANGE Microsoft SQL Server FLOAT、REAL、DATE、DATETIME、DATETIME2、DATETIMEOFFSET、TIME、TIMESTAMP、TEXT、NTEXT、IMAGE、BINARY、VARBINARY、HIERARCHYID、XML、BIT 父主题: 数据对比
  • DRS对比任务对数据库有什么影响 对象对比:会查询源库及目标库的系统表,占用10个左右的session的连接数,正常情况不会对数据库产生影响。但是如果对象数量巨大(比如几十万张表),可能会对数据库产生一定的查询压力。 行数对比:会查询源库及目标库的表行数,占用10个左右的session的连接数,正常的select count语句基本不会对数据库产生影响。但是如果表数据量巨大(亿级)会对数据库产生一定的查询压力,返回查询结果会比较慢。 内容对比:会查询源库及目标库的全部数据,涉及每个字段都会对比,所以会对数据库产生一定的查询压力,主要体现在IO上,查询速度受限于源库和目标库的IO和网络带宽。占用1-2个CPU,占用10个左右的session的连接数。 用户对比:会查询源库及目标库的账户和权限,基本不会对数据库产生影响。 父主题: 数据对比
  • 关键配置项 用户将数据库还原到RDS for SQL Server实例上之后,本地的一些重要配置项也需要进行同步确认,避免影响业务的正常使用。 tempdb:临时数据库的文件配置需要进行同步。 推荐配置为8个临时文件,注意路径一定要确保在D:\RDSDBDATA\Temp\ 通过在目标数据库端执行如下脚本添加临时数据库的文件配置: USE [master] GO ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb1', FILENAME = N'D:\RDSDBDATA\Temp\tempdb1.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB ) GO ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb2', FILENAME = N'D:\RDSDBDATA\Temp\tempdb2.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB ) GO ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb3', FILENAME = N'D:\RDSDBDATA\Temp\tempdb3.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB ) GO ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb4', FILENAME = N'D:\RDSDBDATA\Temp\tempdb4.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB ) GO ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb5', FILENAME = N'D:\RDSDBDATA\Temp\tempdb5.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB ) GO ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb6', FILENAME = N'D:\RDSDBDATA\Temp\tempdb6.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB ) GO ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdb7', FILENAME = N'D:\RDSDBDATA\Temp\tempdb7.ndf' , SIZE = 65536KB , FILEGROWTH = 65536KB ) GO 图6 检查临时文件 数据库隔离级别:请确认原实例上数据库的隔离级别是否开启,并同步到RDS SQL Server实例,快照隔离参数有2个,分别是: 读提交快照(Is Read Committed Snapshot On) 允许快照隔离(Allow Snapshot Isolation) 若原实例上数据库的隔离级别是开启的,您可以通过在目标数据库端执行如下脚本开启数据库的隔离级别: USE [DBName] GO ALTER DATABASE [DBName] SET READ_COMMITTED_SNAPSHOT ON WITH NO_WAIT GO ALTER DATABASE [DBName] SET ALLOW_SNAPSHOT_ISOLATION ON GO 实例最大并行度:实例最大并行度在RDS for SQL Server实例上默认设置为0,用户也可以根据自己本地原来的设置项进行同步设置,避免不同环境下业务场景出现异常。 右击本地实例选择属性,在服务器属性弹出框中选择高级,然后在右侧找到最大并行度(max degree of parallelism)设置项,确认本地实例设置值,并同步在目标RDS for SQL Server实例管理的参数组中进行修改。 图7 查看本地实例最大并行度值 登录本云实例控制台,在实例管理页,单击目标实例名称,进入基本信息页签,切换至“参数修改”,搜索最大并行度(max degree of parallelism)并进行修改。 图8 修改目标RDS for SQL Server实例的最大并行度 迁移上云的数据库恢复模式是否为完整(FULL)模式,如果不是需要进行修改。 右击数据库选择属性,在弹出数据库属性框中选择选项,并在右侧确认该数据库恢复模式为完整(FULL),保证该数据库高可用和备份策略可执行。 图9 检查数据库恢复模式
  • 暂停任务计费说明 数据复制服务 支持“按需计费”和“包年/包月”两种计费模式,两种方式均针对DRS实例从以下方面收取费用: 表1 计费项 计费项 计费项说明 计费规则 配置费(必选) 指计算和存储资源及数据处理的费用。 “按需计费”配置费用是按照实际使用时长计费,以自然小时为单位整点计费,不足一小时按照实际使用时长计费。 “包年/包月”配置费用是一次性计费。 弹性公网IP费用(可选) 指公网访问产生的数据处理和数据流量费用。如果创建公网网络任务,您需要购买弹性公网IP。 详细说明请参考弹性公网IP计费说明。 所以已暂停的“按需计费”任务仍然会收取配置费用。 父主题: 计费相关
  • DRS对目标数据库的压力及影响 全量(初始化)阶段,DRS需要将源数据库结构、索引以及存量数据全部写入到目标数据库,顺序为先迁移结构,再迁移数据,最后迁移索引,不同过程不会并行,一般活跃总连接数小于8个,其中: 有小于8个连接在批量创建结构。 有小于8个连接在批量写数据,类似如下语句: insert into *** (id,name,msg) values (***); 有小于8个连接在批量创建索引,类似如下语句: alter table *** add index ***; 增量阶段,DRS会把源数据库日志中的增量数据解析成SQL在目标数据库中执行,一般总连接数小于64个,其中: DDL会单连接串行执行,执行DDL时,不会有其他DML执行。 DML最多会有64个连接(短连接,默认超时时间30秒),其中DML只是简单的insert、update、delete、replace语句。 如果需要评估对源数据库的影响,可选择创建测试任务,再通过限速功能或业务低峰期动等来调整迁移策略。
  • 可能原因 原因1:DRS在全量迁移阶段,为了保证迁移性能和传输的稳定性,采用了行级并行的迁移方式。当源数据库数据紧凑的情况下,通过DRS迁移到上云后,可能会出现数据膨胀现象,导致目标数据库磁盘空间使用量大于源数据库磁盘空间使用量。 并行时顺序插入原理可参考图1。 图1 顺序插入 当并行后有非顺序插入数据时,如图2,当最后数据4插入时,会导致数据3、5叶子节点分裂,分裂后的叶子节点存在磁盘空余空间。 图2 并行非顺序插入 原因2:目标库开启Binlog日志时,全量阶段数据的写入会在目标端产生Binlog日志文件,占用部分磁盘空间,导致目标数据库磁盘空间使用量大于源数据库磁盘空间使用量。
  • 如何判断数据迁移任务可以停止 您可参考以下方法,确认任务是否可以结束。结束之前您需要确认完成以下几点: 请您确认至少在业务低峰期有过一次完整的数据对比。 完成业务割接。 先中断业务(如果业务负载非常轻,也可以尝试不中断业务)。 在源数据库端执行如下语句(此处以MySQL为例),并观察在1-5分钟内若无任何新会话执行SQL ,则可认为业务已经完全停止。 show processlist; 上述语句查询到的进程列表中,包括DRS迁移实例的连接,您需要确认除DRS迁移实例的连接外无任何新会话执行SQL,即可认为业务已经完全停止。 同步时延为0,并稳定保持一段时间;同时,您可以使用数据级对比功能,进行割接前的最后一次数据级对比,耗时可参考之前的对比记录。 如果时间允许,则选择全部对比。 如果时间不允许,则推荐对比活跃表,关键业务表,第二步对比多次存在差异的表等。 确定系统割接时机,业务系统指向目标数据库,业务对外恢复使用。 结束迁移任务,该操作仅删除了迁移实例,迁移任务仍显示在任务列表中,您可以进行查看或删除。 父主题: 实时迁移
  • 操作建议 为避免创建任务过程中出现空间不足问题,建议提前计算源数据库的数据量总和,根据该总和一次性规划目标实例的磁盘空间,剩余磁盘空间需大于源库实际数据量大小的总和(例如“源系统1”数据量大小为1GB,“源系统2”数据量大小为3GB,“源系统3”数据量大小为6GB,则目标实例的剩余磁盘空间应该大于10GB)。 对于MySQL引擎,目标端参数的设置需要考虑整体资源的提升,建议使用第一个任务的参数对比功能中“常规参数”的“一键修改”(其中max_connections除外),而“性能参数”应该结合目标端实际规格做相应的手工设置。 对于多对一同步任务场景,由于该场景是一个一个任务逐步创建的,后面创建任务时可能会造成已创建任务的同步阻塞,为了避免这个情况发生,请注意创建技巧。 每个同步任务都会涉及创建索引步骤,而创建索引时数据库可能会导致Schema锁进而阻塞Schema下的其他表的数据同步,从而导致后创建的任务可能在索引创建阶段对已经同步中的任务阻塞一段时间,我们可以选择在创建同步任务最后设置为“稍后启动”,这样设定在业务低峰期后创建任务,从而避免后创建任务的索引创建对已有任务的同步阻塞。 对于多对一同步任务场景,不建议使用内容对比,因为内容对比无法保证一致性。 如果涉及表级汇集的多对一同步任务,则不支持DDL,否则会导致同步全部失败。 图1 参数对比
  • 库表级多对一任务操作流程 实时同步过程中,可以使用对象名映射功能修改库、表名称,实现库表级多对一。 以库级多对一为例: 在“设定同步”页面,同步对象右侧已选对象框中,选择需要进行映射的数据库,单击“编辑”按钮。 在“编辑库名”的弹出框中,填写新的数据库名,修改后的名称即为保存在目标数据库中的库名。 例如,将源库中的库A和库B,修改为同样的库C后,即可实现库A、库B到库C的同步。 库名修改成功后,您会看到修改前的库名和修改后的新数据库名,至此,表示完成库映射的配置。 图5 查看库名修改结果 配置完成后,等待任务启动并完成同步。
  • DDM为源链路源库分片数量和信息怎么填写 DRS支持DDM为源的迁移和同步,在创建任务时,需要先按照源端DDM绑定的实例个数选择分片数量,以实时同步为例,如图1。例如源端DDM有两个DN节点,挂载的RDS for MySQL实例1和实例2,则“源端实例数据库实例个数”设置为“2”。关于DDM逻辑库和逻辑库下的DN实例说明可参考DDM产品文档。 图1 同步实例信息 任务创建完成后,需要在“测试连接”页面填写源库信息,如图2,假设源端DDM实例IP地址为192.168.5.11,挂载的RDS for MySQL实例1,其IP地址为192.168.1.10;挂载的RDS for MySQL实例2 , 其IP地址为192.168.6.150,则填写方式如表1。 图2 源库信息 表1 源库信息 参数 描述 中间件IP地址或 域名 填写源数据库DDM中间件的IP地址或域名,本示例中为192.168.5.11。 端口 源数据库DDM中间件服务端口,可输入范围为1~65535间的整数,一般DDM端口默认为5066,请根据实际情况填写。 中间件用户名 源数据库DDM中间件的用户名,可参考《DDM快速入门》。 数据库密码 源数据库DDM中间件用户名所对应的密码。 SSL安全连接 通过该功能,用户可以选择是否开启对迁移链路的加密。如果开启该功能,需要用户上传SSL CA根证书。 数据库实例 根据DDM实际的DN分片数据库,填写对应的数据库信息。 本示例中两个分片数据库IP地址分别填写192.168.1.10和192.168.6.150。 父主题: 通用操作
  • 操作步骤 停止SDK消费进程。 在修改消费位点之前,需要先确保连接这个订阅通道的所有SDK下游都停掉。 在“数据订阅管理”页面,选择需要修改消费时间点的订阅任务,单击“消费时间点”操作列的“修改”按钮。 图1 修改消费时间点 在弹出框中,设置指定的消费时间点,单击“确认”。 图2 编辑消费时间点 选择的时间消费点必须在订阅任务的时间范围内。 重启SDK消费进程。 当修改完消费位点后,即可重启本地的SDK消费进程,此时SDK会从修改的消费位点开始订阅增量数据。
  • 任务状态说明 数据订阅提供了多种任务状态,以便区分不同阶段的订阅任务。 数据订阅任务的状态和说明,请参见表1。 表1 数据订阅任务状态和说明 状态 说明 创建中 正在创建数据复制服务需要用到的数据订阅实例。 创建失败 创建数据订阅任务失败。 配置 数据订阅实例创建成功,但还没有启动任务,可以继续配置任务。 冻结 账户余额小于或等于0元,系统对该用户下的实例进行冻结。 启动中 正在启动数据订阅任务。 启动失败 数据订阅任务启动失败。 正常 数据订阅任务创建成功。 异常 数据订阅任务创建失败。 故障恢复 数据订阅实例发生故障,系统自动恢复订阅任务。 对于创建失败的任务,DRS默认保留3天,超过3天将会自动结束任务。 对于未启动、状态为配置中的任务,DRS默认保留3天,超过3天DRS会自动删除后台资源,当前任务状态不变。当用户再次配置时,DRS会重新申请资源。 对于是失败状态的订阅任务,DRS默认保留14天,超过14天DRS会自动删除后台资源,当前任务状态不变。当用户再次配置时,DRS会重新申请资源。 已删除的订阅任务在状态列表中不显示。 父主题: 任务管理
  • 参数配置 数据订阅过程中,部分参数会影响拉取数据的速度和间隔。 在启动SDK之前,您可以根据需要在“subscribe.properties”的配置文件中,对以下参数进行设置: # 获取订阅数据初始延时 MESSAGE_DELAY_TIME = 1500000 # 获取订阅数据间隔时间 MESSAGE_PERIOD_TIME = 2000000 # 通知用户订阅数据到达初始延时 NOTIFY_DELAY_TIME = 2000 # 通知用户订阅数据间隔 NOTIFY_PERIOD_TIME = 1000 # 返回服务端ack消息初始延时 ACK_DELAY_TIME = 3000 # 返回服务端ack消息时间间隔 ACK_PERIOD_TIME = 5000 以上参数值为默认配置,您可以使用默认值,也可以根据实际情况自定义参数值。 以上涉及到时间的单位均为微秒。
  • 操作步骤 在“数据订阅管理”页面,可查看订阅任务的数据范围。 图1 任务列表 选择指定的订阅任务,单击任务名称,页面跳转至“基本信息”页签。 单击“订阅数据”页签,查看订阅数据列表。 当前数据列表默认显示前5分钟的增量订阅数据。若需要查看指定时间段的订阅数据,您可以在页面右上角,根据需求选择显示订阅数据的时间段,设置的时间段必须在订阅任务的数据范围内。 图2 查看订阅数据 订阅数据展示的数据格式为数据复制服务内部的数据格式,数据记录的各个字段含义如表1所示: 表1 数据字段含义 数据字段名称 说明 服务ID RDS实例的IP:PORT。 库名 这条变更记录对应表所在的数据库的库名。 表名 这条变更记录对应的表的表名。 变更类型 这条变更记录的变更类型,包括:UPDATE、DELETE、INSERT、REPLACE、BEGIN、COMMIT、DDL、DML。 位点 这条变更记录在binlog中的位点,格式为binlog_file_offset@binlog_file_id,其中binlog_file_id为binlog文件名的后缀,binlog_file_offset为这条binlog记录在binlog文件中的偏移量。 时间戳 这条变更记录写入到binlog文件中时的时间戳。 如果您想查看指定数据库下指定表的数据详情,可以单击指定表操作列的“查看数据详情”。 图3 字段详情 数据详情可参考表2: 表2 字段详情 字段详情 说明 字段名称 这条变更记录对应的每个字段的名称。 字段类型 这条变更记录对应的每个字段的数据类型。 字段编码 这条变更记录对应的字符集编码。 前镜像 这条变更记录变更之前的各个字段的值。对于insert操作,没有前镜像值。 后镜像 这条变更记录变更之后的各个字段的值。对于delete操作,没有后镜像值。 update操作的前镜像和后镜像都有值。 对于操作类型为DDL的记录,只有字段详情,没有字段名称、字段类型、字段编码、前镜像及后镜像几个字段。
  • 添加标签 在“数据订阅管理”页面,选择指定的数据订阅任务,单击任务名称进入“基本信息”页签。 在左侧导航栏,单击“标签”。 在“标签”页签单击“编辑标签”,在“编辑标签”弹出框中,单击“添加新标签”,输入标签的键和值,,然后单击“确定”。 输入标签的键和值时,系统会自动联想当前用户的所有实例(除当前实例外)的所有关联的预定义标签。 标签的键不能为空且必须唯一,长度为1~128个字符,可以包含任意语种的字母、数字和空格,以及_.:=+-@字符,但首尾不能包含空格,且不能以_sys_开头。 标签的值可以为空字符串,长度为0~255个字符,可以包含任意语种的字母、数字和空格,以及_.:=+-@字符,但首尾不能包含空格。 添加成功后,您可在当前任务的所有关联的标签集合中,查询并管理自己的标签。
  • 操作场景 标签管理服务(Tag Management Service,TMS)用于用户在云平台,通过统一的tag标签管理各种资源。TMS服务与各服务共同实现标签管理能力,TMS提供全局标签管理能力,各服务维护自身标签管理 。当用户资源较多时,可通过不同的标签标识和查找任务。 建议您先在TMS系统中设置预定义标签。 标签由“键”和“值”组成,每个标签中的一个“键”只能对应一个“值”。 每个实例最多支持20个标签配额。
  • 使用须知 数据订阅功能通过创建订阅任务来获取数据库中关键业务的数据变化信息,这类信息常常是下游业务所需要的。数据订阅将其缓存并提供统一的SDK接口,实现下游业务订阅、获取、并消费。 一个完整的数据订阅过程需要通过如下两个阶段来实现: 使用数据复制服务控制台创建数据订阅任务。 数据订阅任务成功后,使用数据复制服务提供的SDK接口,访问数据订阅通道,订阅并消费增量数据。 数据复制服务提供的数据订阅功能在使用上有一些固定的限制,在进行正式的数据订阅之前,请先阅读以确保各存储引擎已满足使用限制条件。 表2 使用须知 类型名称 使用和操作限制 订阅对象约束 只支持RDS For MySQL实例。 数据订阅的对象目前只支持表级订阅。 binlog的binlog_row_image格式必须为full。 MySQL存储引擎只支持MyISAM,InnoDB。 MySQL字符集只支持LATIN1、GBK、UTF8、UTF8MB4、BINARY。 按事务维度提供订阅数据,只支持单个事务小于10MB数据量的场景。 数据订阅过程中,不允许源数据库MySQL跨大版本升级,否则可能导致数据不一致或者订阅任务失败(跨版本升级后数据、表结构、关键字等信息均可能会产生兼容性改变),建议在该场景下重建订阅任务。 操作须知 数据订阅过程中,不允许删除订阅对象。 一个订阅任务同时只能被一个下游SDK订阅消费,如果用户有多个下游需要订阅同一个RDS实例时,需要创建多个订阅通道。这些订阅任务订阅的RDS实例均为同一个实例ID。 一个下游SDK不可以订阅消费多个订阅任务。 目前支持VPC网络,但是不支持VPC内的容器网络。 由于源库异常、网络中断等造成的DRS订阅任务异常,需要在数据订阅界面续传订阅任务,详细参考续传订阅任务。 由于订阅任务当前存在较多订阅对象和操作约束,推荐使用性能、稳定性更高的MySQL到Kafka同步链路进行数据订阅。数据订阅与MySQL到Kafka同步的区别可参考这里。 勾选结构更新和数据更新后,DRS将展示整个实例(非所选库)的DDL和DCL更新操作,不进行过滤。如有需要,可使用SDK过滤所需的数据。
共100000条