华为云用户手册

  • 内容对比不支持哪些数据类型 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实例从以下方面收取费用: 表1 计费项 计费项 计费项说明 计费规则 配置费(必选) 指计算和存储资源及数据处理的费用。 “按需计费”配置费用是按照实际使用时长计费,以自然小时为单位整点计费,不足一小时按照实际使用时长计费。 “包年/包月”配置费用是一次性计费。 弹性公网IP费用(可选) 指公网访问产生的数据处理和数据流量费用。如果创建公网网络任务,您需要购买弹性公网IP。 详细说明请参考弹性公网IP计费说明。 所以已暂停的“按需计费”任务仍然会收取配置费用。 父主题: 计费相关
  • 使用场景 MySQL为源的迁移或同步任务,在增量阶段使用第三方拷表方式实现的Online DDL工具(如PT-OSC、GH-OST)在源库执行DDL,会先创建临时表,通过临时表做DDL,针对这个情况,使用DRS进行迁移或同步时,可分为以下三种场景: 对于库级和实例级迁移、同步任务,由于Online DDL使用的临时表在同步列表中,DRS会自动同步DDL操作,因此不需要特殊处理。 对于表级迁移或同步任务,如果创建DRS任务时,迁移或同步对象列表中已经提前添加了第三方Online DDL涉及的临时表的场景,DRS也会自动同步DDL操作,不需要特殊处理。 对于表级迁移或同步任务,如果创建DRS任务时,只选中表的数据,由于Online DDL使用的临时表不在选中的列表中,因此不会被DRS同步。可以参考以下使用限制和操作步骤,通过手动在目标库执行DDL的方式,避免源库Online DDL操作导致的源库和目标库表结构不一致,引起的DRS任务失败。
  • 操作步骤 查看DRS任务状态,确认任务状态为增量中且增量时延在10秒以内。 确认需要执行的DDL操作,不同操作在源库和目标库执行的顺序不同。 加列:先在目标库执行,执行成功后在源库执行。 删列:先在源库执行,执行成功后在目标库执行。 增加、修改、删除列默认值:跟操作顺序无关。 修改列类型:先在目标库执行,执行成功后在源库执行。 修改字符集:先在目标库执行,执行成功后在源库执行。 修改列名:先在源库执行,执行成功后等待DRS任务因列不存在失败,然后在目标库执行,续传DRS任务。 加分区:先在目标库执行,执行成功后在源库执行。 删分区:先在源库执行,执行成功后在目标库执行。 加索引:跟操作顺序无关。 删索引:跟操作顺序无关。 加约束(主键、唯一键、check等):先在源库执行,执行成功后在目标库执行。 删约束(主键、唯一键、check等):先在目标库执行,执行成功后在源库执行。 增加字段长度:先在目标库执行,执行成功后在源库执行。 减少字段长度:先在源库执行,执行成功后在目标库执行。 如果一条DDL中包含多个操作的,所有操作除去跟操作顺序无关的操作外(比如修改默认值),剩余操作的要求顺序一样,则按要求顺序操作;否则需要拆成多条DDL操作。如加列的同时修改默认值,先在目标库执行,执行成功后在源库执行。 表1 总结 DDL操作 操作顺序 加列,修改列类型,修改字符集,加分区,删约束,增加字段长度 先在目标库执行,执行成功后在源库执行。 删列,删分区,加约束,减少字段长度 先在源库执行,执行成功后在目标库执行。 增加、修改、删除列默认值,加索引,删索引 跟操作顺序无关。 修改列名 先在源库执行,执行成功后等待DRS任务因列不存在失败,然后在目标库执行,续传DRS任务。 根据2顺序中完成DDL操作后,查看DRS任务状态是否正常。
  • 数据复制服务是否采用了压缩技术 压缩技术是提升性能和解决数据膨胀的关键技术,DRS在数据传输和增量数据存储两大环节采用了压缩技术。 数据传输压缩:在网络带宽不理想的环境中,进行数据同步与传输,DRS可以开启压缩开关,以减少数据传输对带宽的占用量。 增量数据存储压缩:增量数据转储成逻辑文件后,将会出现膨胀现象,DRS针对该场景做了存储压缩技术,使得本地逻辑文件缓存在DRS时占用磁盘空间大大降低。 父主题: 产品咨询
  • 对等连接限制 有重叠子网网段的VPC建立的对等连接,可能不生效。 两个VPC之间不能同时建立多个VPC对等连接。 不同区域的VPC不能创建对等连接。 如果两个VPC的CIDR有重叠,建立对等连接时,只能针对子网建立对等关系。如果两个VPC下的子网网段有重叠,那么该对等关系不生效。建立对等连接时,请确保两个VPC之间没有重叠的子网。 对等连接建立后,需要在本端VPC、对端VPC分别添加对方子网的路由才能通信。 VPC A与B、C分别建立对等连接,如果B、C两个VPC的网段有重叠,A中无法添加具有相同目的网段的路由。 为了安全起见,请不要接受来自未知账号的对等连接申请。 对等连接双方账号都有权限删除对等连接,一方删除对等连接后,对等连接的所有信息会被立刻删除,包括对等连接关联的路由信息。 VPC对等连接路由存在时,VPC无法被删除。 支持在华为云中国站和国际站同一区域创建对等连接。 VPC1与VPC2创建对等连接,默认情况下VPC2不能通过VPC1的EIP访问公网。您可以通过使用NAT网关服务或配置SNAT服务器,使得VPC2下的弹性云服务器可以通过VPC1下绑定了EIP的弹性云服务器访问Internet。具体实现方式请参见无公网IP的弹性云服务器访问Internet。 具体设置VPC对等连接的方法,可参考《虚拟私有云用户指南》。 对等连接建立后,需要在本端VPC、对端VPC分别添加对方子网的路由才能通信,详细操作可参考添加VPC对等连接路由。 在添加对等路由时,建议添加网段路由信息。如果添加点对点路由,DRS任务重建后实例IP会发生改变,此时需要重新添加路由,否则会导致网络不通。
  • 策略一 在测试连接页面的目标库信息中填写数据库用户名user1,所有Definer迁移到该用户下选“是”。 图1 策略一 这种策略下,源库所有存储过程和方法的Definer迁移到目标库后账号都会自动修改为user1,host改为% 。若在目标库上出现调用存储过程失败的情况,可执行如下操作: 使用uesr1账号登录到目标库RDS for MySQ L实例 。 如果需要使用其他账号调用存储过程,则该账号需要具有execute权限。 通过如下语句,使用user1授予其他账号执行存储过程的权限。 其中user表示需要调用存储过程的其他账号: GRANT EXECUTE ON db.* TO user; 如果需要通过Java调用存储过程,则需要通过如下语句,使用user1授予其他账号查询mysql.proc表的权限。 授权语句可参考如下语句,user表示需要调用存储过程的账号: GRANT SELECT ON mysql.proc TO 'user'@'%';
  • 策略二 在测试连接页面的目标库信息中填写数据库用户名user1,所有Definer迁移到该用户下选“否”。 图2 策略二 这种策略下,源库所有存储过程和方法的Definer迁移到目标库后账号和host保持不变,选择此选项,需要配合用户权限迁移功能,将源数据库的用户全部迁移,这样才能保持源数据库的权限体系完全不变。 如果您未选择用户权限迁移或者用户权限迁移时存在不支持迁移的账号,建议选择策略一来处理。
  • 操作建议 为避免创建任务过程中出现空间不足问题,建议提前计算源数据库的数据量总和,根据该总和一次性规划目标实例的磁盘空间,剩余磁盘空间需大于源库实际数据量大小的总和(例如“源系统1”数据量大小为1GB,“源系统2”数据量大小为3GB,“源系统3”数据量大小为6GB,则目标实例的剩余磁盘空间应该大于10GB)。 对于MySQL引擎,目标端参数的设置需要考虑整体资源的提升,建议使用第一个任务的参数对比功能中“常规参数”的“一键修改”(其中max_connections除外),而“性能参数”应该结合目标端实际规格做相应的手工设置。 对于多对一同步任务场景,由于该场景是一个一个任务逐步创建的,后面创建任务时可能会造成已创建任务的同步阻塞,为了避免这个情况发生,请注意创建技巧。 每个同步任务都会涉及创建索引步骤,而创建索引时数据库可能会导致Schema锁进而阻塞Schema下的其他表的数据同步,从而导致后创建的任务可能在索引创建阶段对已经同步中的任务阻塞一段时间,我们可以选择在创建同步任务最后设置为“稍后启动”,这样设定在业务低峰期后创建任务,从而避免后创建任务的索引创建对已有任务的同步阻塞。 对于多对一同步任务场景,不建议使用内容对比,因为内容对比无法保证一致性。 如果涉及表级汇集的多对一同步任务,则不支持DDL,否则会导致同步全部失败。 图1 参数对比
  • 库表级多对一任务操作流程 实时同步过程中,可以使用对象名映射功能修改库、表名称,实现库表级多对一。 以库级多对一为例: 在“设定同步”页面,同步对象右侧已选对象框中,选择需要进行映射的数据库,单击“编辑”按钮。 在“编辑库名”的弹出框中,填写新的数据库名,修改后的名称即为保存在目标数据库中的库名。 例如,将源库中的库A和库B,修改为同样的库C后,即可实现库A、库B到库C的同步。 库名修改成功后,您会看到修改前的库名和修改后的新数据库名,至此,表示完成库映射的配置。 图5 查看库名修改结果 配置完成后,等待任务启动并完成同步。
  • 如何选择区域? 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。不过,在基础设施、BGP网络品质、资源的操作与配置等方面,中国大陆各个区域间区别不大,如果您或者您的目标用户在中国大陆,可以不用考虑不同区域造成的网络时延问题。 在除中国大陆以外的亚太地区有业务的用户,可以选择“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“南非-约翰内斯堡”区域。 在欧洲地区有业务的用户,可以选择“欧洲-巴黎”区域。 在拉丁美洲地区有业务的用户,可以选择“拉美-圣地亚哥”区域。 “拉美-圣地亚哥”区域位于智利。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 什么是区域、可用区? 我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 设置binlog_row_image为FULL步骤 如果源数据库为云上RDS实例,可通过RDS管理界面的参数配置,将binlog_row_image修改为FULL,完成修改后重启源数据库并重置任务即可。 云数据库RDS for MySQL 8.0版本的binlog_row_image参数默认值为FULL,您无需进行设置。 如果源数据库为本地自建库,请参考如下步骤修复。 登录MySQL源数据库所在服务器。 手动修改my.cnf配置文件,将binlog_row_image参数值修改为FULL后保存。 binlog_row_image=full 为了关闭旧的session,需选择一个非业务时间段,重启源数据库并重置任务。
  • 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'; 父主题: 实时迁移
  • 安全设置global级binlog_format=ROW的步骤 通过MySQL官方客户端或者其它工具登录源数据库。 在源数据库上执行全局参数设置命令。 set global binlog_format = ROW; 在源数据库上执行如下命令确认上面操作已执行成功。 select @@global.binlog_format; 您可以通过如下两种方式确保修改后的源库binlog_format格式立即生效。 方法一: 选择一个非业务的时间段,中断当前数据库上的所有业务连接。 通过如下命令查询当前数据库上的所有业务连接(所有的binlog Dump连接及当前连接除外)。 show processlist; 中断上面查出的所有业务连接。 在上述操作未结束之前,请不要创建或者启动迁移任务,否则会导致数据不一致。 为了避免源库binlog_format格式因为数据库重启失效,请在源库的启动配置文件(my.ini或my.cnf等)中添加或修改配置参数binlog_format并保存。 binlog_format=ROW 方法二: 为了避免源库binlog_format格式因为数据库重启失效,请在源库的启动配置文件(my.ini或my.cnf等)中添加或修改配置参数binlog_format并保存。 binlog_format=ROW 确保上述配置参数binlog_format添加或修改成功后,选择一个非业务时间段,重启源数据库即可。
  • 关闭Balancer的步骤 通过Mongo Shell 登录数据库。 在mongos节点命令窗口中,使用如下命令,切换至config数据库。 use config 执行如下命令,判断是否可以关闭Balancer。 while( sh.isBalancerRunning() ) { print("waiting..."); sleep(1000); } 如果返回结果是waiting,则表示当前Balancer正在执行块(chunk)迁移,此时不能执行关闭Balancer的命令,否则可能引起数据不一致。 图1 查看输出结果 如果返回结果是空,则表示当前Balancer没有在进行块(chunk)迁移,此时可以执行下一步的关闭Balancer的命令。 关闭Balancer。 如果是整个实例的迁移,则执行如下命令,可以关闭整个实例的Balancer。 sh.stopBalancer() 如果要关闭待迁移且已经开启了分片的集合的Balancer,则执行如下命令: sh.disableBalancing("database.collection") 其中database.collection表示要关闭的集合的namespace。
  • 问题分析 出现上述内存溢出可能存在如下原因: 源数据库的mongod服务单独部署在一台机器上,如果这种情况下在迁移过程中出现内存溢出,一般就是因为在迁移过程中源库在执行会大量消耗内存的操作,比如:创建索引,排序查询等。 源数据库的mongod服务和其他服务同时部署在一台机器上,而且没有设置cacheSizeGB的大小,这种情况下,如果因为其他服务消耗掉内存导致不能给wiredTiger引擎保证的内存,则会出现内存溢出的情况。 一般默认情况下,mongod的wiredTiger引擎可以使用整个机器内存减一的50%(3.2的版本)或者60%(3.4以后的版本)。
  • 如何批量导出、导入事件(event)和触发器(trigger) 在进行MySQL到MySQL的迁移时,若任务结束后发现迁移日志中提示迁移事件和触发器失败,可手动迁移。 本小节主要介绍批量导出导入事件和触发器的具体操作。 从源库批量导出触发器。 在源库执行以下语句,获取TRIGGER_SCHEMA和TRIGGER_NAME。 SELECT TRIGGER_SCHEMA,TRIGGER_NAME FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA in ('DB1','DB2','DB3') order by TRIGGER_NAME; 上述语句中,DB1,DB2,DB3分别表示从源库待迁移到目标库的数据库。 在源库执行如下语句,从字段SQL Original Statement中获取源库创建触发器的语句。 SHOW CREATE TRIGGER TRIGGER_SCHEMA.TRIGGER_NAME \G; 上述语句中,TRIGGER_SCHEMA.TRIGGER_NAME填写的为1.a中查询到的TRIGGER_SCHEMA和TRIGGER_NAME具体值。 从源库批量导出事件。 在源库执行以下语句,获取EVENT_SCHEMA和EVENT_NAME。 SELECT EVENT_SCHEMA,EVENT_NAME FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA in ('DB1','DB2','DB3') order by EVENT_NAME; 上述语句中,DB1,DB2,DB3分别表示从源库待迁移到目标库的数据库。 在源库执行如下语句,从字段SQL Original Statement中获取源库创建事件的语句。 SHOW CREATE EVENT EVENT_SCHEMA.EVENT_NAME \G; 上述语句中,EVENT_SCHEMA.EVENT_NAME填写的为2.a中查询到的EVENT_SCHEMA和EVENT_NAME具体值。 导入触发器和事件。 在目标库重新执行从源库导出的创建触发器和创建事件语句。 父主题: 实时迁移
  • 操作步骤 以下操作适用于目标数据库为RDS实例的情况。 登录关系型数据库服务控制台。 选择指定目标数据库实例。 单击实例名称。 页面跳转至“基本信息”页签,切换至“参数修改”页面。 在页面右上角搜索框,输入关键字“password”,查看搜索结果。 图1 修改密码 在5的搜索结果中,对于表1 密码参数列举的参数,需要根据密码复杂度要求进行修改,确保各参数在密码复杂度允许的范围内。 表1 密码参数 参数 允许值 说明 validate_password_length 0~2,147,483,647 validate_password插件校验的密码的最小字符数。 validate_password_mixed_case_count 0~2,147,483,647 指定当密码策略为MEDIUM(中)或更高时,为通过validate_password校验,密码至少需包含多少个大小写字符。 validate_password_number_count 0~2,147,483,647 指定当密码策略为MEDIUM(中)或更高时,为通过validate_password校验,密码至少需包含多少个数字。 validate_password_policy LOW, MEDIUM, STRONG validate_password插件执行的密码策略。 validate_password_special_char_count 0~2,147,483,647 指定当密码策略为MEDIUM(中)或更高时,为通过validate_password校验,密码至少需包含多少个非字母数字字符。 密码复杂度修改完成后,保存修改结果。 图2 保存修改结果 返回数据复制服务的“迁移模式”页面,继续执行下一步操作即可。
  • 什么是孤儿文档 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对比任务取消后,数据库有对比任务的查询进程未结束 以源库Mysql数据库为例,进行行数对比,取消对比任务,在源库有对比任务的查询进程未及时结束,清理残留进程,按照如下步骤操作: 使用管理员权限用户登录Mysql数据库,执行show processlist; 按照Host和Command获取Id,其中Host是drs任务节点IP,Command是select count(1)开头的查询语句. 步骤2获取到的id是112773,执行kill 112773; 执行show processlist;再次确认残留进程是否删掉. 父主题: 数据对比
  • 关键配置项 用户将数据库还原到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 检查数据库恢复模式
  • 实时迁移、实时同步和实时灾备有什么区别 对比项 实时迁移 实时同步 实时灾备 适用场景 跨云平台数据库迁移、云下数据库迁移上云或云上跨区域的数据库迁移等多种业务场景迁移。 实时分析,报表系统,数仓环境等。 实现云下数据库到云上的灾备、跨云平台的数据库灾备。 特点 同构数据库间以整体数据库搬迁为目的。 支持包括:表、数据、索引、视图、存储过程、函数、数据库账号、数据库参数等。 可选择表级、库级或全部迁移维度。 支持同构、异构数据库间的数据同步,维持不同业务之间的数据持续性流动。 聚焦于表和数据,并满足多种灵活性的需求。 可选择表级、库级同步维度。 支持同构数据库间的数据灾备。 实现异地数据库主备倒换的效果。 实例级灾备,不支持表级、库级对象选择。 支持的数据库 详情请参见迁移方案概览。 详情请参见同步方案概览。 详情请参见灾备方案概览。 功能特性 支持迁移用户。 不支持迁移用户。 默认迁移所有用户,不支持选择。 支持参数对比。 不支持参数对比。 支持参数对比。 不支持增量阶段编辑迁移对象。 支持增量阶段编辑同步对象,动态增减同步对象。 不支持增量阶段编辑灾备对象。 不支持对象名映射。 支持对象名映射,使同步的库表在源数据库和目标数据库中存储名称不同。 不支持对象名映射。 不支持数据加工能力。 支持数据加工能力,可对选择的对象添加规则,如数据过滤、列加工等。 不支持数据加工能力。 不支持主备倒换。 不支持主备倒换。 支持主备倒换。 计费方式 仅支持按需计费。 支持按需计费和包年/包月。 支持按需计费和包年/包月。 更多特性 不同链路支持的功能特性也不相同,详情请参见对应链路使用须知。 不同链路支持的功能特性也不相同,详情请参见对应链路使用须知。 不同链路支持的功能特性也不相同,详情请参见对应链路使用须知。 父主题: 产品咨询
  • 备份迁移场景的是否最后一个备份文件选择错误该如何处理 备份迁移过程中,根据选择“最后一个备份文件”来判断是否为最后一次备份,对于人工操作中不可控的误选择,有以下两种情况及处理方法: 选择“是”,但期望为否,即仍然希望继续做增量备份迁移。但由于SQL Server本身的设计,数据库一旦收到还原已完成的信号,便会做一系列的内部工作并把数据库置为可用,已无法继续增量备份迁移。此时,只能删除备份数据库重新进行全量+增量的备份还原。 选择“否”,但期望为是,即不希望继续恢复增量备份迁移。其实SQL Server没有严格意义上的的最后一个备份文件,此时可以再做一个增量备份(即使没有数据改变也可以备份),在该次增量备份时选择“是”即可完成迁移,相关数据库将会变为可用。 父主题: 备份迁移
  • 场景一:双主灾备,双边同时操作同一行操作,导致多数据 初始数据如下图所示(seqno为主键,column1为非主键)。 图1 dr1、dr2库初始数据 双方数据库同时分别执行如下操作: dr1库:update dr1 set seqno=5 where column1=8; dr2库:update dr2 set seqno=6 where column1=8; 执行操作后,双方数据库数据一致,并且多数据。 图2 dr1、dr2库数据
  • 场景二:双主灾备,同时操作双边数据库,导致数据不一致 初始数据如下图所示(seqno为主键,column1为非主键)。 图3 初始数据 双方数据库同时分别执行如下操作: dr1库:insert into dr1 values(101,100); dr2库:insert into dr2 values(101,102); 执行操作后,双方数据库数据如下图所示。 图4 dr1库数据 图5 dr2库数据
  • 双主灾备的主1、主2如何选择 双主灾备要求灾备双方至少有一方为本云RDS实例,另一方可以为本云RDS实例、其他云数据库、E CS 自建库或本地自建数据库。为了明确本云(本区)RDS在灾备中所扮演的角色,DRS使用主1、主2来区分角色。选择了本云RDS角色后,也意味着确定了另一方的角色。 主1:一般具有业务数据,创建任务时选择主1则表示本云RDS具有初始数据。 主2:必须为空数据库,创建任务时选择主2则表示本云RDS为空库,等待接收数据。 创建灾备任务时,选择主1、主2应遵循以下原则 灾备双方均为本云RDS实例。 有一方为空实例,空实例作为主2,非空实例作为主1。 双方均为空实例,主1、主2角色无差别,推荐选主2。 灾备双方一方为本云RDS实例,另一方为其他云数据库、ECS自建库或本地自建数据库。 一方数据库存在初始数据,另一方为空库。 本云RDS实例为空库,则选择主2。 本云RDS实例有初始数据,另一方为空库,则选择主1。 双方均为空库,主1、主2角色无差别,推荐选主2。 父主题: 实时灾备
  • 双主灾备 双主灾备多用于灾备双方互为主备,共同承担业务流量的场景。其角色分为主1、主2,使用之前需要首先确立本云(本区)RDS的角色,才可以更好的完成实时灾备的搭建。完整的双主灾备是由正、反两条链路构成的,其创建顺序有着严格的要求。开始时,主1为可读写状态、主2为只读状态,正向灾备将初始化数据全量同步到主2后,方可启动反向灾备。此时,主1、主2均为可读写状态,正/反向灾备分别向主2、主1持续同步增量数据。 图2 双主灾备 特点及使用约束 重要! 双主灾备是对环境要求比较高的架构,实施部署双主灾备前请务必阅读约束和设计思考。 双主灾备的搭建过程对步骤是有严格要求的,请按照以下步骤进行部署,以确保双主任务顺利部署。 创建正向灾备任务,具体操作步骤请参见创建灾备任务。创建完成后,会生成两个子任务,即正向灾备和反向灾备任务,此时反向灾备任务为配置状态。 当正向灾备任务进入“灾备中”状态时(反向任务操作列出现编辑),配置并启动反向任务。 在“实时灾备管理”页面,选择该灾备任务的反向任务,单击操作列的编辑,进入“创建灾备任务”页面,继续完成创建反向任务。 建议您在主2进行验证,满足预期后,启动反向任务。 图3 双向灾备任务
  • DRS灾备的RPO、RTO是什么 RPO(Recovery Point Objective)指当前业务数据库一个事务的提交时间,与该事务送达DRS的时间差(该事务通常也是DRS收到的最新的一个事务)。 是主实例与DRS实例数据差的一种度量方式,RPO=0时,意味着业务数据库的最新数据已经全部到达DRS实例。 RTO(Recovery Time Objective)指当前DRS实例上事务,传输至灾备实例且执行成功的时间差(该事务通常也是DRS收到的最新的一个事务)。RTO是处在传输中数据量的一种度量方式,RTO=0时,意味着DRS实例上的事务已经全部在灾备数据库上执行完毕。 图1 RPO和RTO 父主题: 实时灾备
共100000条