华为云用户手册

  • 解决方案 通过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添加或修改成功后,选择一个非业务时间段,重启源数据库即可。
  • 解决方案 查看目标库是否存在错误信息中的database。 不存在,手工在目标库重新创建database,结构和源库保持一致,完成后在任务列表中,单击任务对应操作列的“续传”,重新提交任务。 存在,执行2。 请确认源库中是否存在错误信息中的database。 存在,请在对象选择中重新选中该database。 不存在,可能是对象依赖的database已经被删除或drs无权限读该database,该对象无法迁移,请重建任务,不要选择依赖被删除的数据库对象。
  • 场景描述 全量迁移或同步期间DRS任务报错,日志提示信息:service DATAMOVE failed, cause by: retry structures failed events=the fail structures are [type=constraint_data, index=106, schema_name=%s, object_name=%s]reason:[Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys]
  • 场景描述 全量迁移或同步期间DRS任务报错,日志提示信息:service DATAMOVE failed, cause by: retry structures failed events=the fail structures are [type=constraint_data, index=0, schema_name=%s, object_name=%s]reason:[The MySQL server is running with the --super-read-only option so it cannot execute this statement]
  • 场景描述 全量迁移或同步期间DRS任务报错,日志提示信息:service DATAMOVE failed, cause by: retry structures failed events=the fail structures are [type=account, index=0, schema_name=mysql, object_name='***']reason:[CANNOT UPDATE USER WITH NULL PASSWORD]。
  • 场景描述 全量迁移或同步期间DRS任务报错,日志提示信息:service DATAMOVE failed, cause by: com.continuent.tungsten.replicator.ReplicatorException: Unable to connect to DBMS: url=jdbc:mysql://*** user=***, Caused by: failed to create new session。
  • 场景描述 全量迁移或同步期间DRS任务报错,日志提示信息:service DATAMOVE failed, cause by: apply event=[type=table_data, batch_index_in_shard=***, table_schema=%s, table_name=%s, record_num=***] occur error, msg=apply data of table=`%s `.`%s ` failed: Java heap space。
  • 场景描述 全量迁移或同步期间DRS任务报错,日志提示信息:service DATAMOVE failed, cause by: apply event=[type=table_data, batch_index_in_shard=***, table_schema=%s, table_name=%s, record_num=***] occur error, msg=apply data of table=`%s `.`%s ` failed: Lock wait timeout exceeded; try restarting transaction。
  • 场景描述 全量迁移或同步期间DRS任务报错,日志提示信息:service DATAMOVE failed, cause by: Unable to connect to DBMS: url=jdbc:mysql://*** user=root, Caused by: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server。
  • PostgreSQL、 GaussDB 为源同步场景 表1 所选表是否包含延迟约束 预检查项 所选表是否包含延迟约束。 描述 所选表是否包含延迟约束,包含延迟约束的表有同步失败的风险 不通过提示及处理建议 不通过原因:包含延迟约束的表有同步失败的风险。 处理建议:重建约束去除延迟属性。 删除约束SQL为: alter table 模式名.表名 drop CONSTRAINT 约束名; 添加约束SQL为: alter table 模式名.表名 add CONSTRAINT 约束名 约束类型(字段列表) NOT DEFERRABLE;
  • MySQL、TaurusDB、DDM为源的全量+增量或增量迁移、同步场景,以及MySQL、TaurusDB、DDM为源灾备场景 表1 源端存在不支持的外键引用操作 预检查项 源端存在不支持的外键引用操作。 描述 同步对象中存在包含CASCADE、SET NULL、SET DEFAULT之类引用操作的外键。这些关联操作会导致更新或删除父表中的行会影响子表对应的记录,并且子表的相关操作并不记录binlog。导致DRS无法同步,子表数据存在不一致。 不通过提示及处理建议 不通过原因:同步对象中存在包含CASCADE、SET NULL、SET DEFAULT之类引用操作的外键。这些关联操作会导致更新或删除父表中的行会影响子表对应的记录,并且子表的相关操作并不记录binlog。导致DRS无法同步,子表数据存在不一致。 处理建议:建议删除子表中包含CASCADE、SET NULL、SET DEFAULT之类引用操作的外键约束,或者不同步相关子表。 删除外键约束的参考语句: ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
  • MySQL为源同步场景 表1 同步对象中是否存在包含longtext或longblob类型字段的表 预检查项 同步对象中是否存在包含longtext或longblob类型字段的表。 描述 longtext、longblob类型的字段在同步过程中,可能会导致较低规格的DRS任务失败。 不通过提示及处理建议 不通过原因:同步对象中存在如下表,这些表包含longtext、longblob类型的字段。 处理建议:同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步。
  • 处理建议 目标数据库是RDS for MySQ L实例 时,GTID默认为开启状态且不支持关闭。如果GTID未开启,需要联系RDS for MySQL运维人员进行处理。 目标数据库为MySQL 5.5版本,则不支持设置GTID,无法使用DRS进行灾备,请创建迁移任务或联系运维人员进行处理。 目标数据库为MySQL 5.6及以上版本,通过修改数据库配置文件中如下参数开启GTID,然后重启数据库。 参考命令如下: gtid_mode = on log_slave_updates = true enforce_gtid_consistency = on
  • Oracle为源库的迁移、同步场景 表1 源库约束完整性检查 预检查项 源库约束完整性检查。 描述 源库约束完整性检查,若不符合迁移要求,则导致迁移失败。 待确认提示及处理建议 不通过原因:需要迁移的表中含有依赖,但是被依赖的表没有被迁移。 处理建议:在对象选择中添加这些表。 不通过原因:迁移列表中含有不允许迁移的视图。 处理建议:检查迁移列表中视图所包含的依赖,并将这些依赖添加到对象选择中。 不通过原因:迁移对象中包含仅大小写不同的重名视图。 处理建议:建议修改视图名或者不迁移这些重名视图。 不通过原因:部分约束无法迁移,这些约束的特征为:约束名称的字母相同但大小写不同。 处理建议:建议修改约束名或者不迁移这些重名约束。
  • MongoDB迁移场景 表1 源库和目标库数据库固定集合一致性检查 预检查项 源库和目标库数据库固定集合一致性检查。 描述 检查源库和目标库数据库固定集合是否一致,若不一致,则导致迁移失败。 不通过提示及处理建议 不通过原因:源数据库的集合是固定集合,但是目标数据库存在和源库固定集合名称相同的集合。 处理建议:为了保证数据的一致性,可以删除目标库已经存在的和源数据库选择的固定集合的同名集合,或者选择不迁移这些冲突的固定集合。 不通过原因:用户选择迁移集合在目标库已经存在,并且是固定集合。 处理建议:为了保证数据的一致性,可以删除目标库已经存在的和用户选择迁移的同名集合,或者选择不迁移这些冲突的集合。
  • 处理建议 返回对象选择页面,重新选择要同步的对象后再进行预检查。 预检查阶段,源数据库连接中断,导致检查失败。请确认源数据库连接正常后再重新进行预检查。 Oracle为源的任务,由于Oracle Logminer组件限制,增量阶段源库所选表的schema名、表名及其包含的列名不能超过30个字符。请修改不符合要求的schema名、表名及其中的列名,使其长度不超过30个字符,然后重新再进行预检查。 Microsoft SQL Server为源的任务,单个任务同步的表数量不能超过1000张。请减少单个任务同步的表数量,取消勾选不需要同步的表,或者拆分成多个同步任务执行,然后重新再进行预检查。 请检查源或者目标数据库引擎是否属于特殊版本,特殊版本可能存在某些语法不支持,导致预检查不通过,请重新更换源或者目标数据库后重新进行预检查。
  • MongoDB迁移场景 表1 源数据库分片键配置检查 预检查项 源数据库分片键配置检查。 描述 检查用户提供的目标数据库账号权限是否符合迁移要求,若权限不够,会导致迁移失败。 不通过提示及处理建议 待确认原因:源数据库是副本集,没有分片键配置。 处理建议:如果无法获取源数据库的分片键信息在目标库进行配置,源数据库的数据都会迁移到目标库分片集群的主shard节点,无法充分发挥集群的读写性能,存储能力和高可用特性,建议先在目标库对要迁移的集合进行分片配置,如何设置分片键请参考常见问题。 待确认原因:源数据库实例类型未知,没有分片键配置。 处理建议:如果无法获取源数据库的分片键信息在目标库进行配置,源数据库的数据都会迁移到目标库分片集群的主shard节点,无法充分发挥集群的读写性能,存储能力和高可用特性,建议先在目标库对要迁移的集合进行分片配置,如何设置分片键请参考常见问题。 待确认原因:源数据库存在未配置分片键的集合。 处理建议:如果无法获取源数据库的分片键信息在目标库进行配置,源数据库的数据都会迁移到目标库分片集群的主shard节点,无法充分发挥集群的读写性能,存储能力和高可用特性,建议先在目标库对未设置分片键的集合进行分片配置,如何设置分片键请参考常见问题。
  • 处理建议 修改源数据库或者目标数据库的sql_mode参数,使其保持一致。 如果为自建的MySQL数据库,可通过命令行方式修改。 SET sql_mode = '修改后的值'; 如果为RDS for MySQL实例,可通过修改数据库sql_mode参数实现,详情请参考修改实例参数章节。 如果涉及MyISAM表的迁移,目标数据库sql_mode参数取值中不能包含no_engine_substitution。 更多其他类型数据库修改sql_mode的方法,可参考对应数据库的使用说明。
  • MongoDB迁移场景 表1 源数据库的实例类型检查 预检查项 源数据库的实例类型检查。 描述 源数据库的实例类型需要和目标数据库的实例类型一致,若不一致,会导致迁移失败。 不通过提示及处理建议 不通过原因:目标数据库是集群但是源数据库是副本集。 处理建议:建议更换源数据库实例类型或者目标数据库实例类型。 不通过原因:目标数据库是副本集但是源数据库是集群。 处理建议:建议更换源数据库实例类型或者目标数据库实例类型。
  • PostgreSQL同步场景 表1 扩展插件合法性检查 预检查项 扩展插件合法性检查。 描述 检查目标数据库是否缺少源数据库所安装的插件。 不通过提示及处理建议 不通过原因:源数据库中已安装的扩展插件,在目标数据库中不支持。 处理建议: 如果源数据库中没有业务这些插件,请在源数据库中删除该插件。参考如下SQL(plugin_name替换为待删除插件名称): drop extension plugin_name; 或使用支持这些插件的目标库,并重新创建同步任务。 不通过原因:源库中存在包含成员表的插件。 处理建议:请确认源库插件是否存在创建后新增的元数据信息,如果存在,请在迁移结束后使用该插件专用的语法重建相关元数据信息。 不通过原因:目标库同步账户没有创建插件的权限。 处理建议:请在目标库中使用root用户给同步账户授权。可参考如下SQL(将username替换为同步账户): alter user username inherit; grant root to username; 不通过原因:目标数据库中支持的扩展插件版本小于源库中安装的版本。 处理建议:请使用支持更高版本插件(不低于源库插件版本)的目标库数据库,并重新创建同步任务。
  • 处理建议 修改源数据库或者目标数据库的collation_server参数,使其保持一致。 如果为自建的MySQL数据库,可通过命令行方式修改。 通过以下命令查看数据库的字符集。 SHOW VARIABLES LIKE "collation_server"; 使用命令修改服务器的字符集。 SET collation_server='utf8_unicode_ci'; 如果为RDS for MySQL实例,可通过修改数据库collation_server参数实现,详情请参考修改实例参数章节。 更多其他类型数据库修改collation_server的方法,可参考对应数据库的使用说明。
  • 处理建议 如果数据库为云上RDS for MySQL实例,可参考RDS for MySQL大小写参数敏感类问题内容,修改lower_case_table_names参数值。 如果数据库为本地自建MySQL,请参考如下步骤修复。 登录源数据库MySQL所在服务器。 手动修改my.cnf配置文件,在MySQL配置文件my.cnf中的[mysqld]标签下增加一行lower_case_table_names=n。 修改完成后,需选择一个非业务时间段,重启源数据库即可。
  • 处理建议 登录源数据库MySQL所在服务器。 执行以下SQL语句,查看server_id值。 show variables like '%server_id%'; 如果server_id不满足要求,执行如下命令,修改server_id: set global server_id=n n表示源数据库的server_id,如果源数据库版本为MySQL5.6,n的取值范围在2-4294967296之间;如果源数据库版本为MySQL5.5和MySQL5.7,n的取值范围在1-4294967296之间。 修改完成后,重新执行预检查。
  • 处理建议 如果源数据库为云上RDS for MySQL实例,可参考设置RDS for MySQL本地Binlog日志清理内容,将expire_logs_days设置在合理的范围内。 如果源数据库为本地自建MySQL,请参考如下步骤修复。 登录源数据库MySQL所在服务器。 执行以下命令,查看设置的Binlog保留时间。 show variables like 'expire_logs_days'; 或 show variables like 'binlog_expire_logs_seconds'; 手动修改my.cnf配置文件,设置Binlog保留时间,以3天为例。 expire_logs_days=3 或 binlog_expire_logs_seconds=259200; 修改完成后,需选择一个非业务时间段,重启源数据库即可。
  • 处理建议 如果源数据库为本地自建MySQL库,建议参考如下操作开启Binlog日志。 查看binlog日志是否开启。 show variables like "log_bin"; 如果是关闭状态,在MySQL配置文件my.cnf或my.ini中的[mysqld]标签下增加一行log-bin = mysql-bin。 重启数据库。 如果源数据库为云上RDS for MySQL实例,则默认开启Binlog,无需额外配置,binlog_format格式为row,详细说明可参考设置RDS for MySQL本地Binlog日志清理。 如果源库TiDB,建议在数据库配置文件的[binlog]标签下增加一行enable=true,然后重启数据库使设置生效。
  • 处理建议 修改源数据库或者目标数据库字符集。 数据库为MySQL时,可通过以下方式进行修改: 如果为自建的数据库,可通过命令行方式修改。 通过以下命令查看数据库的字符集。 SHOW VARIABLES LIKE "character_set_server"\G; 使用命令修改服务器的字符集。 SET character_set_server='utf8'; 如果为RDS for MySQL实例,可通过修改数据库“character_set_server”参数实现,详情请参考“修改实例参数”章节。 数据库为PostgreSQL时,可通过以下方式修改: 如果为自建的数据库,可通过命令行方式修改。 通过以下命令查看数据库的字符集。 show server_encoding; 使用命令修改服务器的字符集。 set server_encoding='utf8'; 如果为RDS for PostgreSQL实例,可通过修改数据库“server_encoding”参数实现,详情请参考“修改实例参数”章节。 更多其他类型数据库修改字符集参数的方法,可参考对应数据库的使用说明。
  • 处理建议 在使用DRS进行迁移或同步时,连接源数据库的账号需要满足一定的权限要求,才能启动任务。不同引擎、不同模式的任务,需要的账号权限也不同。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 以MySQL的迁移为例,源数据用户权限要求如下: 全量迁移权限要求: SELECT、SHOW VIEW、EVENT。 参考语句:GRANT SELECT, SHOW VIEW, EVENT ON *.* TO 'user1'; 全量+增量迁移权限要求: SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 其中,REPLICATION SLAVE、REPLICATION CLIENT是全局权限,必须单独开启。参考语句如下: GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user1'; SELECT、SHOW VIEW、EVENT、LOCK TABLES是非全局权限,参考语句如下: GRANT SELECT, SHOW VIEW, EVENT, LOCK TABLES ON [待迁移数据库].* TO 'user1';
  • 处理建议 建议议在启动同步前,将目标数据库参数“session_replication_role”设置为replica。同步结束后,将该参数的值改为origin。 自建PostgreSQL可参考以下SQL命令: SET session_replication_role TO 'replica'; 云数据RDS for PostgreSQL,可参考“修改RDS for PostgreSQL实例参数”章节进行修改。
  • 实例管理 在使用LakeFormation之前,首先需要创建一个实例,后续的操作,如管理元数据、设置元数据权限等,都是基于您创建的实例进行的。详情请参考创建LakeFormation实例章节。 LakeFormation提供实例的配置、扩容、删除等基本功能,帮助您便捷地进行实例管理,加速实现 数据湖 承载的业务的规划和部署。详情请参考管理LakeFormation实例章节。 LakeFormation提供了不同实例类别,满足不同场景下客户对性能和成本的不同诉求。具体介绍请参考共享型与独享型实例对比。
  • 共享型与独享型实例对比 LakeFormation提供了不同实例类别,满足不同场景下用户对性能和成本的不同诉求。 独享型特性当前仅针对白名单用户开放。 计费对比 共享型与独享型实例的计费项及计费说明详细介绍请参考计费说明章节中表1。 性能对比 表1 性能对比 类型 共享型实例 独享型实例 部署模式 物理资源共享,实例间逻辑隔离。 物理资源独占,实例的性能不受其他实例的影响。 每秒请求数(QPS) 保证2000每秒请求数。 按照用户创建实例时的选择不同。 功能对比 表2 功能对比 类型 描述 共享型实例 独享型实例 Catalog管理 LakeFormation提供数据湖中Catalog的元数据创建、修改、删除、查看等功能。 √ √ 数据库管理 LakeFormation提供数据湖中数据库的元数据创建、修改、删除、查看等功能。 √ √ 表管理 LakeFormation提供数据湖中数据表的元数据创建、修改、删除、查看等功能。 √ √ 函数管理 LakeFormation提供数据湖中函数的元数据创建、修改、删除、查看等功能。 √ √ 元数据生命周期管理 LakeFormation支持配置数据的删除策略,节省空间及成本,提升系统的灵活性。 √ √ 元数据权限管理 提供针对元数据的授权、取消、查看等功能。 √ √ 元数据迁移管理 支持将外部服务的元数据全量或增量迁移至当前LakeFormation实例中,对元数据进行统一管理。 √ √ 权限迁移管理 支持将外部服务的元数据权限全量或增量迁移至当前LakeFormation实例中,对元数据的权限进行统一管理。 √ √ 接入客户端管理 提供统一的接入管理能力,用户可以通过创建接入客户端的方式为指定的客户端环境建立网络连接通道,用于其他云服务接入LakeFormation实例。 √ √
共93093条