华为云用户手册

  • 处理建议 在使用DRS进行迁移或同步时,连接目标数据库的账号需要满足一定的权限要求,才能启动任务。不同引擎的任务,需要的账号权限也不同。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 以MySQL的迁移为例,目标数据用户权限要求如下: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFEREN CES 、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 参考语句:GRANT SELECT, CREATE, ALTER, DROP, DELETE, INSERT, UPDATE, INDEX, EVENT, CREATE VIEW, CREATE ROUTINE, TRIGGER, REFERENCES ON [待迁移数据库].* TO 'user1' WITH GRANT OPTION;
  • MySQL迁移场景 表1 目标数据库是否存在和源数据库同名的数据库 预检查项 目标数据库是否存在和源数据库同名的数据库 描述 校验用户提供的目标数据库是否存在与源数据库相同的数据库。 不通过提示及处理建议 不通过原因:源数据库连接失败,导致该项检查无法进行。 处理建议:查看源数据库连接是否成功。 不通过原因:目标数据库连接失败,导致该项检查无法进行。 处理建议:查看目标数据库连接是否成功。 不通过原因:用户基本权限不足。 处理建议:查看对应数据库账号权限是否符合迁移要求。 处理建议: 如果您进行的是入云操作,请根据实际情况判断是否需要删除目标数据库中与源数据库同名的库、或指定一个新的RDS实例进行迁移。 如果您进行的是出云操作,根据实际情况判断是否要保留这些目标端用户数据库、或者指定一个新的目标库。 不通过原因:增量迁移场景下, 目标数据库中不允许存在与源数据库中的库同名的库。 处理建议:根据实际情况判断是否需要删除目标数据库中与源数据库同名的库、或指定一个新的RDS实例进行迁移。
  • 处理建议 检查DRS测试连接时输入的用户名和密码是否正确,填入正确的数据库用户名和密码后重新执行预检查。 测试连接时输入的端口号无法访问,请检查端口是否存在。如果端口正确,需检查防火墙是否放开。 目标数据库为PostgreSQL,数据库配置文件pg_hba.conf缺少对数据库账号的配置,建议配置该账号的远程连接权限。 打开配置文件pg_hba.conf,添加如下配置,重启数据库生效。 host all xxx(dbuser) 0.0.0.0/0 method 完成DRS任务之后删除这条配置,重启数据库生效。 目标数据库为Kafka,可能存在以下原因,请进行排查: 检查Kafka brokers是否正常状态。 检查Kafka端是否开启了安全认证。如果开启了,请选择对应的安全连接方式,详细配置说明可参考这里。 进行数据迁移前需确保完成网络准备和安全规则设置,如果连接失败,请按照以下方法排查网络配置是否正确。 公网网络 请确保数据库已开放公网访问。 请确保数据库的安全规则设置正确。 数据库需要将DRS实例的弹性公网IP添加到其网络白名单中,确保DRS实例可以访问数据库。DRS实例创建成功后,可在“源库及目标库”页面获取DRS实例的弹性公网IP。 请确保防火墙设置正确。 数据中心防火墙需要放通DRS实例弹性公网IP的访问,使得DRS可以正常访问数据库。 入方向放行:放通DRS实例弹性公网IP到数据库监听端口的访问。 出方向放行:放通数据库监听端口到实例弹性公网IP的数据传输。 VPC网络 确保数据库安全组设置正确。 查看数据库安全组入方向规则,放通DRS私网IP作为源地址可以访问云数据库监听端口。DRS实例创建成功后,可在“源库及目标库”页面获取DRS实例的私网IP。 确保数据库网络ACL设置正确。 VPC默认没有网络ACL,如果您设置过网络ACL,需要增加入方向规则。 VPN、专线网络 请确保数据库VPN或专线网络配置正确。 请确保数据库的安全规则设置正确。 数据库需要将DRS实例的私有IP添加到其网络白名单中,确保DRS实例可以访问数据库。DRS实例创建成功后,可在“源库及目标库”页面获取DRS实例的私有IP。 更多关于DRS网络设置可参考准备工作概览内容。
  • 处理建议 建议议在启动同步前,将目标数据库参数“session_replication_role”设置为replica。同步结束后,将该参数的值改为origin。 自建PostgreSQL可参考以下SQL命令: SET session_replication_role TO 'replica'; 云数据RDS for PostgreSQL,可参考“修改RDS for PostgreSQ L实例 参数”章节进行修改。
  • 处理建议 源库中,执行以下操作中的任意一项: 开启库级ALL级别的补充日志:alter database add supplemental log data (all) columns 在Oracle源库中开启最小补充日志:alter database add supplemental log data,并为每张待同步表开启表级all级别的补充日志:alter table TABLE_NAME add supplemental log data(all) columns
  • Microsoft SQL Server为源同步场景 表4 目标数据库是否存在与源数据库同名的对象 预检查项 目标数据库是否存在与源数据库同名的对象。 描述 校验用户提供的目标数据库是否存在与源数据库同名的对象。 选择同步表结构的情况下,目标库不能存在与源数据库同名的。 不选择同步表结构的情况下,目标库需提前创建对应的表结构。 不通过提示及处理建议 不通过原因:目标库表不存在,无法进行同步。 处理建议:不同步表结构时,目标库上需提前创建表或者选择同步表结构。 目标库建表语句参考: CREATE TABLE table_name (column_name data_type); 不通过原因:需要同步的表在目标库的映射已存在。 处理建议:返回同步设置中,重新选择其他表进行同步,或者修改表映射名称 不通过原因:需要同步的映射表在目标库中不存在。 处理建议:勾选同步表结构以创建库表,或者在目标库中创建对应的表结构,若已创建,请检查规定的映射名称是否正确。
  • DRS任务创建后支持修改源或目标数据库吗? DRS在任务创建后、启动前的配置状态时,支持修改源或者目标数据库。 入云链路:支持修改源数据库,不支持修改目标数据库。目标数据库为创建任务时选择的实例,不支持更换,仅支持修改数据库连接信息(用户名和密码)。 出云链路:支持修改目标数据库信息,不支持修改源数据库。源数据库为创建任务时选择的实例,不支持更换,仅支持修改数据库连接信息(用户名和密码)。 自建-自建链路:支持修改源和目标数据库信息。 DRS在任务提交启动后,源和目标数据库均不支持更换,仅支持修改数据库连接密码。 父主题: 通用操作
  • 授权操作说明 创建用户 操作方式: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; · username:待创建的账号。 · host:允许该账号登录的主机,如果允许该账号从任意主机登录数据库,可以使用%。 · password:账号的密码。 例如:授予drsmigration账号具备所有数据库和表的所有权限,并允许从任意主机登录数据库,命令如下。 CREATE USER 'drsmigration'@'%' IDENTIFIED BY 'Drs123456'; 授予相应权限 操作方式: GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; flush privileges; · privileges:授予该账号的操作权限,如SELECT、INSERT、UPDATE等,如果要授予该账号所有权限,则使用ALL · databasename:数据库名。如果要授予该账号具备所有数据库的操作权限,则使用*。 · tablename:表名。如果要授予该账号具备所有表的操作权限,则使用*。 · username:待授权的账号。 · host:允许该账号登录的主机,如果允许该账号从任意主机登录,则使用%。 · WITH GRANT OPTION:授予该账号使用GRANT命令的权限,该参数为可选。 例如:创建一个账号,账号名为drsmigration,密码为Drs123456,并允许从任意主机登录数据库,命令如下。 GRANT ALL ON *.* TO 'drsmigration'@'%';
  • 权限要求 源和目标库的连接账号需要具有登录权限,如果没有该账号,可以通过如下方式创建,以user1为例。 参考语句:CREATE USER 'user1'@'host' IDENTIFIED BY 'password'; DRS的实时迁移、实时同步、实时灾备功能的权限要求,表1 权限要求中以user1为例提供参考语句。 表1 权限要求及参考语句 功能模块 源/业务数据库 目标/灾备数据库 实时迁移 全量迁移权限要求: 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'; 当业务数据库为8.0.2以上版本时,还需要有XA_RECOVER_ADMIN权限。 全量迁移权限要求: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 参考语句:GRANT SELECT, CREATE, ALTER, DROP, DELETE, INSERT, UPDATE, INDEX, EVENT, CREATE VIEW, CREATE ROUTINE, TRIGGER ON *.* TO 'user1' WITH GRANT OPTION; 全量+增量迁移权限要求: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 参考语句:GRANT SELECT, CREATE, ALTER, DROP, DELETE, INSERT, UPDATE, INDEX, EVENT, CREATE VIEW, CREATE ROUTINE, TRIGGER, REFERENCES ON [待迁移数据库].* TO 'user1' WITH GRANT OPTION; 实时同步 SELECT、SHOW VIEW、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。全量+增量任务,当源数据库为8.0.2及以上版本时,还需要授予XA_RECOVER_ADMIN权限,以防启动或编辑时未提交的XA事务导致数据有损。 其中,REPLICATION SLAVE、REPLICATION CLIENT是全局权限,必须单独开启。参考语句如下: GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user1'; SELECT、SHOW VIEW、LOCK TABLES是非全局权限,参考语句如下: GRANT SELECT, SHOW VIEW, EVENT, LOCK TABLES ON [待同步数据库].* TO 'user1'; 当业务数据库为8.0.2以上版本时,还需要有XA_RECOVER_ADMIN权限。 SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES。 参考语句:GRANT SELECT, CREATE, DROP, DELETE, INSERT, UPDATE, ALTER, REFERENCES ON [待同步数据库].* TO 'user1'; 实时灾备 SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当业务数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。当业务数据库为8.0.2及以上版本时,还需要授予XA_RECOVER_ADMIN权限,以防启动时未提交的XA事务导致数据有损。RDS for MySQL实例的root账户默认已具备上述权限。 当业务数据库为8.0.2以上版本时,还需要有XA_RECOVER_ADMIN权限。 参考语句:GRANT SELECT,CREATE,ALTER,DROP,DELETE,INSERT,UPDATE,TRIGGER,SHOW VIEW,EVENT,INDEX,LOCK TABLES,CREATE VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,RELOAD,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'user1'; SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当灾备数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 参考语句:GRANT SELECT,CREATE,ALTER,DROP,DELETE,INSERT,UPDATE,TRIGGER,REFERENCES,SHOW VIEW,EVENT,INDEX,LOCK TABLES,CREATE VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,RELOAD,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'user1'@'%' WITH GRANT OPTION; 请在以上参考语句后执行flush privileges;使授权生效。
  • 可能原因 原因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:网络延迟无法避免,用户可以通过专线网络接入源库和目标库实例减少延迟。
  • MySQL迁移后目标数据库出现索引查询慢怎么办 DRS在全量迁移阶段对表在短时间内进行了大量的并行写入操作,可能出现数据库对表的统计信息未及时刷新的情况,从而导致SQL解析时执行计划不优、表操作变慢的现象。该现象在表先建索引再迁数据的场景下更容易触发,请及时刷新数据库统计信息。 针对这种情况,客户可选择在目标库中执行以下命令对表进行分析,更新表的统计信息。 ANALYZE TABLE table_name; 父主题: 产品咨询
  • GaussDB 到Kafka导入对象文件支持表名映射和topic映射操作说明 图1 导入对象文件 显示有表名映射和Topic映射,映射方式只支持选择一种,将以最后导入的文件为准。 表名映射填写示例:第一列表示要同步的表,第二列表示映射后的表,此列为空或者和两列保持一致表示不映射。库名不支持映射,schema和表名支持映射。 映射后的对象名在Kafka消息体中体现。 图2 表名映射填写示例 Topic映射填写示例:第一列表示要同步的表,第二列表示该表写入的Topic。此列为空表示Topic不映射,按照页面选定的Topic策略进行投递。 映射后的Topic名称,按照业务实际需要,建议提前在Kafka中创建好。 图3 Topic映射填写示例 父主题: 实时同步
  • GaussDB分布式实例开启备机读 登录GaussDB分布式实例每个数据节点的后台。 执行以下命令,获取数据节点的配置文件路径。 find / -name "postgresql.conf"|grep dn 或者 find / -name "gaussdb.conf"|grep dn 依次打开2中获取的文件,在listen_addresses='xxxx'配置下面新增listen_address_ext='xxxx',其中xxxx代表监听地址,listen_address_ext配置的监听地址与listen_addresses相同。 重启数据库实例,使修改生效。 父主题: GaussDB远程连接配置方法
  • 在数据迁移过程中,对源库中目标库进行操作,会对DRS有什么影响? 对源库操作,drs任务会正常迁移数据。但是如果对源库操作是迁移中不支持的DDL,DML会导致数据对比不一致。 对目标库操作 进行添加字段,drs任务是正常的。 对表进行修改字段,减少字段,会导致drs任务失败。 进行手动添加记录,修改,删除记录,会导致drs对比数据结果不一致。 扩容操作是rds内部操作,不影响drs任务。 父主题: 产品咨询
  • GaussDB为源链路增量同步连接及端口说明 GaussDB为源的链路在进行增量同步时,需要保证两类连接可用:普通连接和复制连接。其中普通连接进行数据查询,复制连接进行逻辑复制。 为保证DRS能够正常连接进行同步,首先要保证数据库连接的放开,配置方式可参考GaussDB远程连接配置方法,其次要保证安全组和防火墙策略放开对应的普通连接及复制连接端口。 GaussDB集中式版的复制连接端口为普通连接端口+1。GaussDB分布式的连接分为CN连接和DN连接,对应的复制连接端口也为普通连接端口+1。 父主题: 实时同步
  • 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类型。 父主题: 实时同步
  • 可能原因 原因1:DRS在全量迁移阶段,为了保证迁移性能和传输的稳定性,采用了行级并行的迁移方式。当源数据库数据紧凑的情况下,通过DRS迁移到上云后,可能会出现数据膨胀现象,导致目标数据库磁盘空间使用量大于源数据库磁盘空间使用量。 并行时顺序插入原理可参考图1。 图1 顺序插入 当并行后有非顺序插入数据时,如图2,当最后数据4插入时,会导致数据3、5叶子节点分裂,分裂后的叶子节点存在磁盘空余空间。 图2 并行非顺序插入 原因2:目标库开启Binlog日志时,全量阶段数据的写入会在目标端产生Binlog日志文件,占用部分磁盘空间,导致目标数据库磁盘空间使用量大于源数据库磁盘空间使用量。
  • SQLServer为源 SQLServer的单增量同步任务,在“设置同步”页面需要填写启动位点,任务源库日志从位点后开始获取(不含当前启动位点)。 图3 启动位点 SQLServer增量数据依靠CDC官方能力,启动位点为SQLServer数据库的LSN,可通过select sys.fn_cdc_get_max_lsn(); 查询数据库的当前位点 例如,查询数据库当前LSN位点 图4 查询lsn 根据获取信息,任务的启动位点设置为如下: 图5 设置启动位点
  • MySQL为源 MySQL的单增量同步任务,在“设置同步”页面需要填写启动位点,任务源库日志从位点后开始获取(不含当前启动位点)。 图1 启动位点 当数据库的gtid_mode参数是on的情况下,位点信息由三部分构成:文件名(File)、位置(Position)和已执行的Global Transaction Identifiers Set(Executed_Gtid_Set),这些值可通过show master status命令获取(如果源库为MySQL 5.5版本,则不支持)。填写Executed_Gtid_Set的时候,需要删换其中的换行符再进行填入。 例如,社区版MySQL获取信息如下: 根据获取信息,任务的启动位点设置为如下,其中需要填入的Executed_Gtid_Set应为c8cd8ff7-da6f-11ec-a945-00d861ef1161:1-3,f4f9537f-0c8b-11ec-a284-00d861ef116a:1-10820402。 图2 设置启动位点
  • MySQL账号迁移后权限显示多了反斜杠“\” 其他云MySQL使用DRS进行入云迁移后,迁移后的账号在RDS的控制台上显示带有反斜杠“\”。 迁移前在其他控制台查看,显示如下: 迁移后在RDS控制台查看,显示如下: 是因为MySQL GRANT语法支持通配符,详细可参考MySQL官网文档。DRS迁移逻辑是按照SQL查询结果进行权限迁移,实际目标端与源端账号权限是一致的,只是其他云控制台单独对“\_”做了处理,在界面上不显示转义字符“\”而已。 父主题: 实时迁移
  • 为什么DRS不支持部分他云只读实例的备库做源库 对于DRS的增量或者全量+增量任务,不支持部分他云只读实例的备库做源库进行数据迁移。DRS增量迁移是通过读取源数据库的原始增量日志数据(例如MySQL的Binlog)后解析转换进行 。 以MySQL的Binlog为例,部分他云只读MySQL备库的Binlog并不完整,会导致DRS无法进行增量数据同步。用户可使用mysqlbinlog下载并确认Binlog内容完整性。 下载命令:注意,该命令会把 $binlogLogName文件后的所有日志下载下来,如果只是确认Binlog内容完整性,可以选择一个Binlog下载。 mysqlbinlog --no-defaults -h$sourceHost -u$sourceUsername -P$sourcePort -p$sourcePassword --raw --read-from-remote-server $binlogLogName --to-last-log 查看Binlog内容: mysqlbinlog --base64-output=decode-rows -v $binlogLogName 正常Binlog 父主题: 产品咨询
  • 数据订阅与MySQL到Kafka同步的区别 对比项 MySQL到Kafka同步 数据订阅 支持的源数据库 华为云RDS for MySQL 本地自建MySQL数据库 E CS 自建MySQL数据库 其他云MySQL数据库 华为云RDS for MySQL 支持网络 支持公网网络、VPC网络、VPN、专线网络。 仅支持VPC网络,因未开放全网段路由,所以VPC内容器形态网络暂不支持。 数据格式 Avro、JSON和JSON-C SDK 数据类型 全量+增量数据。 仅增量数据。 同步对象 表数据、表结构。 数据更新和结构更新。 稳定性 有任务告警、监控,任务异常自动重试。 无任务告警、监控,任务异常手动重试 性能 支持多规格,可根据不同性能要求选择。 不支持规格选择,性能为极小规格的性能。 商用状态 已经商用,收费。 公测阶段,免费。 由于订阅任务当前存在较多订阅对象和操作约束,推荐使用性能、稳定性更高的MySQL到Kafka同步链路进行数据订阅。 父主题: 产品咨询
  • 为什么实时灾备任务不支持触发器(TRIGGER)和事件(EVENT) 数据库的触发器(TRIGGER)和事件(EVENT)操作会记录binlog,DRS通过解析binlog同步数据,如果业务侧写入与触发器、事件存在同样对象,就会发生重复执行导致数据不一致或者任务失败,所以在灾备场景下,触发器和事件是不支持的。 假如源库表user存在这样触发器,当表user写入数据时,触发器会同步往另一个log表中写入一条日志数据。 当源库业务侧写入了一条数据到user表。 触发器同步了这条数据到log表,此时binlog中会有两条数据,如下图,第一条就是业务插入user表的数据,第二条是触发器被触发,写入到log中的数据。 DRS同步数据的时候可能会出现以下情况: 如果先同步了插入的数据到目标库user表,这时候目标数据库的触发器被触发,目标库log表会自动写入,当同步第二条log表数据时,就无法将这条log表数据写到目标库了,数据冲突任务报错。 如果先同步log表中的数据,再同步user表的数据时,这时候目标数据库的触发器被触发,会导致log表多一条数据,发生数据不一致问题。 同理,事件(EVENT)也会记录binlog并在目标库再次执行,这也会导致上述问题。 DRS实时迁移支持触发器和事件,是因为DRS会在结束任务的时候去迁移触发器和事件,在结束任务成功的时候保证目标库和源库的对象一致。 父主题: 实时灾备
  • 源或者目标数据库哪些操作,会影响DRS任务状态 以华为云RDS for MySQL为例,以下操作可能会影响DRS任务状态。 实例备份:一般情况下,实例备份对DRS任务无影响。 单机转主备:正常情况下对DRS任务无影响。 实例重启:重启数据库实例将导致短暂中断,在此期间,实例将不可用,DRS连接短暂中断。这种情况下,DRS会进行自动重试。若重试仍无法恢复,待实例状态正常后,可手动单击任务“操作”列上的“续传”继续任务。 主备倒换:实例主备切换期间,可能会造成几秒或几分钟的服务闪断,这种情况下,DRS会进行自动重试。若重试仍无法恢复,待实例状态正常后,可手动单击任务“操作”列上的“续传”继续任务。 规格变更:规格变更后,将会重启数据库,重启数据库实例将导致短暂中断,在此期间,实例将不可用,DRS连接短暂中断。这种情况下,DRS会进行自动重试。若重试仍无法恢复,待实例状态正常后,可手动单击任务“操作”列上的“续传”继续任务。 实例升级:升级数据库内核小版本会重启实例,重启数据库实例将导致短暂中断,在此期间,实例将不可用,DRS连接短暂中断。这种情况下,DRS会进行自动重试。若重试仍无法恢复,待实例状态正常后,可手动单击任务“操作”列上的“续传”继续任务。 实例异常:这种情况下,DRS会进行自动重试。若重试仍无法恢复,待实例状态正常后,可手动单击任务“操作”列上的“续传”继续任务。 限制连接会话数:DRS任务连接源和目标端需要一定数量的会话数,详细可参考MySQL数据同步对源数据库和目标数据库有什么影响。当连接数不足时,会导致DRS任务失败,用户可在调整数据库连接数后,单击任务“操作”列上的“续传”继续任务。 网络抖动:针对网络抖动造成的连接失败,DRS会自动进行重试,若重试仍无法恢复,待网络正常后,可手动单击任务“操作”列上的“续传”继续任务。 账号密码修改:修改数据库账号密码可能会导致DRS连接失败,详细可参考源库或目标库修改密码后如何操作。 账号权限修改:修改数据库账号权限可能会导致DRS权限不足,迁移数据失败。用户可重新为迁移账号赋权后,单击任务“操作”列上的“续传”继续任务。 源库日志清理:当源库日志(例如MySQL的binlog)被清理时,DRS无法从源库获取到和当前同步位点接续的日志,可能导致任务失败(例如全量或增量阶段失败报错,关键词“binlog is not existed”)。用户可参考重置同步任务内容进行重置,或重新创建任务开始同步。 数据库参数修改:DRS在启动任务前会对源数据库和目标数据库参数进行预检查,在预检查完成后到任务结束前,一般情况下不建议对数据库参数进行修改,避免因参数修改导致的任务失败。如果参数修改导致任务失败,用户可尝试在恢复参数后,单击任务“操作”列上的“续传”继续任务。 父主题: 产品咨询
  • DRS任务支持修改对象吗 实时迁移任务:已创建成功但是未确认启动的编辑状态时,可以修改迁移对象,任务启动后,不支持进行修改。 备份迁移任务:仅支持在创建时编辑备份迁移任务。对于已经启动的备份迁移任务,不支持修改。 实时同步任务:已创建成功但是未确认启动的编辑状态时,可以修改同步对象。同步任务在增量阶段,且为表级同步时,可以进行再次编辑对象的操作,库级同步或其他同步阶段不可以进行再编辑,详细操作可参考编辑同步对象。 数据订阅任务:已创建成功但是未确认启动的编辑状态时,可以修改选择对象,任务启动后,不支持进行修改。 实时灾备任务:为实例级灾备,不支持对象选择。 父主题: 产品咨询
  • 影响因素 源库的读取吞吐能力 读取吞吐能力越高,迁移速度越快,耗时越少。影响吞吐的因素包括但不限于服务器规格、负载、磁盘IO性能、数据库限流等。 目标库的写入吞吐能力 写入吞吐能力越高,迁移速度越快,耗时越少。影响吞吐的因素包括但不限于服务器规格、负载、磁盘IO性能、数据库限流等。 可用的网络吞吐量 可用的网络吞吐越高,迁移速度越快,耗时越少。影响网络吞吐量的因素包括但不限于可用带宽、防火墙、网络设备限流设置等。 网络质量和网络延迟 网络延迟越小(影响因素包括但不限于源库目标库和DRS实例地理位置的远近程度),迁移速度越快,耗时越少。网络质量差(比如丢包率高)会降低迁移速度。 DRS实例规格 DRS实例规格越大,迁移速度越快,耗时越少。 源数据的模型和分布 此类因素包括是否有主键、是否分区表、是否堆表、平均单行数据量大小、表的数量、索引数量等。 目标库是否已有数据 目标库已有数据可能导致迁移时数据冲突,导致性能下降。 目标库是否有触发器 目标库有触发器可能导致迁移时写入性能下降。 目标库备份和日志等相关设置 如无必要可在迁移期间关闭目标库备份和事务日志,可提升迁移性能。 源库增量数据产生速度 源库增量数据产生速度越快,增量数据追平的耗时越长。 DRS任务数 不考虑其他因素导致的性能瓶颈,通过按表拆分成多个DRS任务,可提升总体迁移性能。
  • MySQL迁移、同步、灾备任务怎么迁移账号,是否支持修改密码 MySQL实时迁移:支持在创建任务时选择是否进行账号迁移,详细说明可参考迁移用户。增量迁移阶段,客户可以通过页面配置支持DCL语句,不支持通过更新mysql.user表进行的账号变更。 MySQL实时同步:不支持同步账号。 MySQL实时灾备:不支持对系统库下自定义对象有操作权限的账号灾备;不支持进行灾备对象选择。灾备阶段支持DCL语句,不支持通过更新mysql.user表进行的账号变更。 父主题: 产品咨询
  • DRS对象选择时的全部迁移、表级迁移、库级迁移有什么区别 目前DRS实时迁移和实时同步任务支持对象选择,实时灾备是按照实例维度进行灾备,不支持选择指定库或表。 实时迁移任务支持“全部迁移”、“表级迁移”或者“库级迁移”。 实时同步任务支持“表级同步”或者“库级同步”。 全部迁移:仅迁移任务支持选择,选择后源数据库中的所有对象全部迁移至目标数据库,对象迁移到目标数据库实例后,对象名将会保持与源数据库实例对象名一致且无法修改。 表级迁移或同步:以表为单位的迁移或同步,库中新增表不会自动加入迁移或同步关系中。如果同步任务,可以通过再次编辑同步对象,将新的表追加到同步关系中;迁移任务启动后不支持编辑迁移对象。 库级迁移或同步:以库为单位的迁移或同步,不可单独选择表,且已选库中新增的表会自动加入迁移或同步关系之中。 父主题: 通用操作
  • 源端MySQL发生主备倒换,DRS任务会丢数据吗 如果源端MySQL已开启了GTID模式,在发生主备倒换时,DRS会记录binlog位点信息,在主备倒换后接续位点继续进行任务,不会丢数据。 源端MySQL可通过修改数据库配置文件方式将GTID开启,重启数据库后生效。 参考命令如下: gtid_mode = on log_slave_updates = true enforce_gtid_consistency = on 父主题: 通用操作
共100000条
提示

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