华为云用户手册

  • 数据复制服务 是否采用了压缩技术 压缩技术是提升性能和解决数据膨胀的关键技术,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 查看库名修改结果 配置完成后,等待任务启动并完成同步。
  • 什么是区域、可用区? 我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 如何选择区域? 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。不过,在基础设施、BGP网络品质、资源的操作与配置等方面,中国大陆各个区域间区别不大,如果您或者您的目标用户在中国大陆,可以不用考虑不同区域造成的网络时延问题。 在除中国大陆以外的亚太地区有业务的用户,可以选择“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“南非-约翰内斯堡”区域。 在欧洲地区有业务的用户,可以选择“欧洲-巴黎”区域。 在拉丁美洲地区有业务的用户,可以选择“拉美-圣地亚哥”区域。 “拉美-圣地亚哥”区域位于智利。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 设置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 父主题: 实时灾备
  • RDS for MySQL不支持MyISAM引擎表,迁移时MyISAM如何处理 基于以下原因,RDS for MySQL目前不支持MyISAM引擎。 MyISAM引擎表不支持事务,仅支持表级别锁,导致读写操作相互冲突。 MyISAM对数据完整性的保护存在缺陷,且这些缺陷会导致数据库数据的损坏甚至丢失。 MyISAM在出现数据损害情况下,很多都需要手动修复,无法通过产品服务提供的恢复功能进行数据恢复。 MyISAM向InnoDB的迁移透明,大多数情况不需要改动建表的代码,云数据库自动转换InnoDB即可完成迁移。 DRS在迁移过程中,会自动将MyISAM转换为InnoDB。针对MyISAM引擎表不支持事务这一特点,为了确保MyISAM表的数据一致性, DRS会借助主键来实现最终数据的一致。如果需要迁移没有主键的MyISAM表,建议选择无业务期启动迁移任务,以确保数据的一致性。 父主题: 实时迁移
  • DRS支持断点续传吗 针对数据库的迁移、同步场景,在迁移、同步过程中由于不可抗拒因素(例如网络波动)导致的任务失败,DRS通过记录当前解析和回放的位点(该位点同时也是数据库内部一致性的依据),下次从该位点开始回放的方式来实现断点续传,以确保数据的完整性。 增量阶段的迁移、同步,DRS会自动进行多次断点续传的重试,全量阶段的MySQL迁移,系统默认进行三次自动续传,无需人工干预。 当自动重试失败累计一定次数后,任务会显示异常,需要人为根据日志来分析无法继续的原因,并尝试解决阻塞点(例如数据库修改了密码),如果环境无法修复,如所需日志已经淘汰,则使用重置功能可以完全重新开始任务。 父主题: 产品咨询
  • Oracle等异构数据库迁移到MySQL后的数据库排序规则为什么是utf8mb4_bin 由于不同的数据库支持的字符集有差异,Oracle等数据库迁移到MySQL后,会转换成支持字符相对全面的UTF8MB4字符集。此字符集对应的默认排序字符集为utf8_general_ci,是大小写不敏感的,即认为"abc"和"ABC"是相同数据。为了避免Oracle等大小写敏感的数据库到MySQL迁移失败(主键冲突等),或者迁移后对业务有影响(查询结果和Oracle有区别),请参考以下建议。 1. 使用DRS做目标端为MySQL的异构迁移/同步时,DRS自动将数据库(仅涉及迁移的库)字符集排序为utf8mb4_bin默认字符集,可以后续确保同库内新增表、列与迁移表、列的排序规格一致,从而避免因表、列的排序规则不一致时进行关联查询,执行计划中因索引数据排序不同而无法利用索引的情况。 2. 可在实例级设置参数collation_server = utf8mb4_bin,该设定可以确保全实例默认字符集(有别于建议1,建议1是仅迁移的库,这里是全局)一致,均为utf8mb4_bin,需要用户根据业务情况决策是否应用于全实例。 父主题: 实时迁移
  • 如何设置最小化权限且独立的使用DRS的Oracle账号 源数据库为Oracle的全量迁移至少需要CREATE SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY权限(当目标库为PostgreSQL时,还需要SELECT ANY SEQUENCE权限),源数据库为Oracle的增量迁移还需要日志解析权限。本小节主要介绍如何使用DRS设置最小化权限且独立的Oracle账号的具体操作。 全量迁移模式。 创建一个用户用于迁移,此处以User1为例。 参考命令:CREATE USER User1 IDENTIFIED BY pwd 其中User1为用户名,pwd为密码。 使用sys用户或者具有DBA权限的用户执行以下语句对User1用户赋予需要的权限。 参考命令:GRANT CREATE SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO User1 全量+增量迁移模式。 创建一个用户用于迁移,此处以User1为例。 参考命令:CREATE USER User1 IDENTIFIED BY pwd 使用sys用户或者具有DBA权限的用户执行以下语句对User1用户赋予需要的权限。 参考命令:GRANT CREATE SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO User1 使用sys用户或者具有DBA权限的用户执行以下语句对User1用户赋予日志解析权限。 Oracle版本小于12C。 参考命令:GRANT EXECUTE_CATA LOG _ROLE TO User1 Oracle版本大于等于12C。 参考命令:GRANT EXECUTE_CATALOG_ROLE TO User1 参考命令:GRANT LOGMINING TO User1 父主题: 权限管理
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全