云服务器内容精选
-
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任务报错,同步日志界面提示:service DATAMOVE failed, cause by: apply event=[type=table_data, batch_index_in_shard=%s, table_schema=%s, table_name=%s, record_num=%s] occur error, msg=apply table %s data failed: %s: ERROR: column '%s' of relation '%s' does not exist Position: 1043 Call getNextException to see other errors in the batch.
-
可能原因 报错信息中包含detail:Read timed out:DRS启动任务后,DRS增量抓取在源端数据库创建逻辑复制槽时由于长事务阻塞,或者创建逻辑复制槽的过程中数据库未找到一致性位点,等待创建超时。 报错信息中包含slot [***] is active: DRS启动任务后,DRS增量抓取在源端数据库创建逻辑复制槽时由于长事务阻塞,复制槽未创建成功,此时状态会显示被占用(active),DRS自动重试时会出现此类报错。
-
场景描述 Oracle为源全量或增量同步期间DRS任务报错,同步日志界面提示:service LOG MANAGER failed, cause by: Unable to connect to DBMS: url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*.*.*.*)(PORT=1521))(CONNECT_DATA=*)) user=*, Caused by: IO Error: Got minus one from a read call.
-
解决方案 修改位于$ORACLE_HOME/network/admin目录的sqlnet.ora文件,允许DRS任务IP访问。 如果使用白名单,则TCP.INVITED_NODES配置项中需要包含DRS的任务IP。 如果使用黑名单,则TCP.EXCLUDED_NODES中不能包含DRS的任务IP。 查看源数据库信息(例如IP,端口,或者service name/sid)是否发生修改,如果源库信息发生改变,可选择以下操作: 恢复修改的源数据库信息,DRS任务会自动重试继续同步任务。 重新创建任务进行同步。 执行以下命令查看源数据库连接数,连接数已经达到上限。 查看当前连接数: select count(*) from v$process; 查看最大连接数: select value from v$parameter where name ='processes'; 如果源数据库连接已达到上限,执行以下命令修改数据库允许的最大连接数: alter system set processes = 300 scope = spfile; 然后重启数据库生效。
-
可能原因 报错信息中包含detail:Read timed out:DRS启动任务后,DRS增量抓取在源端数据库创建逻辑复制槽时由于长事务阻塞,或者创建逻辑复制槽的过程中数据库未找到一致性位点,等待创建超时。 报错信息中包含slot [***] is active: DRS启动任务后,DRS增量抓取在源端数据库创建逻辑复制槽时由于长事务阻塞,复制槽未创建成功,此时状态会显示被占用(active),DRS自动重试时会出现此类报错。
-
接口约束 任务创建成功之后,任务状态为CONFIGURATION,并且与源库和目标库测试连接通过、修改任务接口调用成功后才能调用。 支持设置Kafka同步策略的有:PostgreSQL-Kafka同步,Oracle-Kafka同步, GaussDB -Kafka同步,GaussDB(for MySQL)-Kafka,MySQL-Kafka。 GaussDB(for MySQL)-Kafka,MySQL-Kafka支持任务状态为INCRE_TRANSFER_STARTED时修改Kafka策略配置,修改配置后需等任务状态为INCRE_TRANSFER_STARTED时再进行编辑同步对象操作。
-
响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 count Integer 总数。 results Array of objects 批量设置同步策略返回列表。 详情请参见表6。 表6 results字段数据结构说明 参数 参数类型 描述 id String 任务ID。 status String 状态。取值: success:成功。 failed:失败。 error_code String 错误码。 error_msg String 错误信息。
-
请求示例 批量设置同步任务策略,其中增量冲突策略为忽略,同步增量DDL并过滤drop_database操作 https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-sync-policy { "jobs": [{ "conflict_policy": "ignore", "ddl_trans": true, "filter_ddl_policy": "drop_database", "index_trans": true, "job_id": "19557d51-1ee6-4507-97a6-8f69164jb201" }] } 批量设置MySQL单增量同步任务策略示例: https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-sync-policy { "jobs": [ { "conflict_policy": "ignore", "ddl_trans": true, "filter_ddl_policy": "drop_database", "index_trans": true, "job_id": "19557d51-1ee6-4507-97a6-8f69164jb201", "file_and_position": "mysql-bin.000019:197", "gtid_set":"e4979f26-4bc3-11ee-b279-fa163ef21d64:1-23" } ] }
-
同步Topic和Partition策略说明 表3 Topic和Partition策略说明 Topic策略 对应可选的Partition策略 说明 集中投递到一个Topic: 对于源库业务量不大的场景,建议选择集中投递到一个Topic。 按库名.schema.表名的hash值投递到不同Partition 适用于单表的查询场景,可以提高单表读写性能,推荐使用此选项。 全部投递到Partition 0 适用于有事务要求的场景,写入性能比较差,如果没有强事务要求,不推荐使用此选项。 按表的主键值hash值投递到不同的Partition 适用于一个表一个Topic的场景,避免该表都写到同一个分区,消费者可以并行从各分区获取数据。 按库名.schema的hash值投递到不同Partition 适用于一个database一个topic的场景,避免多个schema下的数据都写到一个分区,消费者可以并行从各分区获取数据。 按表的非主键列值的hash值投递到不同的Partition 适用于一个表一个Topic的场景,避免该表都写到同一个分区,用户可以按照非主键列值的hash值自定义message key,消费者可以并行从各分区获取数据。 按库名-schema-表名自动生成Topic名字: 如果每张表数据量都非常大,建议选择自动生成Topic名字,按库名-schema-表名确定一个Topic。 全部投递到Partition 0 适用于有事务要求的场景,写入性能比较差,如果没有强事务要求,不推荐使用此选项。 按表的主键值hash值投递到不同的Partition 适用于一个表一个Topic的场景,避免该表都写到同一个分区,消费者可以并行从各分区获取数据。 按表的非主键列值的hash值投递到不同的Partition 适用于一个表一个Topic的场景,避免该表都写到同一个分区,用户可以按照非主键列值的hash值自定义message key,消费者可以并行从各分区获取数据。 按库名自动生成Topic名字: 对于源库数据量量不大的场景,可以选择一个database自动生成Topic名字,按库名确定一个Topic。 按库名.schema.表名的hash值投递到不同Partition 适用于单表的查询场景,可以提高单表读写性能,推荐使用此选项。 全部投递到Partition 0 适用于有事务要求的场景,写入性能比较差,如果没有强事务要求,不推荐使用此选项。 按库名.schema的hash值投递到不同Partition 适用于一个database一个topic的场景,避免多个schema下的数据写到一个分区,消费者可以并行从各分区获取数据。 按库名-schema自动生成Topic名字: 如果每个schema数据量都非常大,建议选择按库名-schema自动生成Topic名字,按库名-schema确定一个Topic。 按库名.schema.表名的hash值投递到不同Partition 适用于单表的查询场景,可以提高单表读写性能,推荐使用此选项。 全部投递到Partition 0 适用于有事务要求的场景,写入性能比较差,如果没有强事务要求,不推荐使用此选项。
-
资源规划 表1 资源规划 类别 子类 规划 备注 VPC VPC名称 vpc-DRStest 自定义,易理解可识别。 子网网段 10.0.0.0/24 子网选择时建议预留足够网络资源 所属Region 华南-广州 选择和自己业务区最近的Region,减少网络时延。 子网名称 subnet-drs01 自定义,易理解可识别。 GaussDB(源库) 实例名 drs-gaussdb-src-1 自定义,易理解可识别。 数据库版本 GaussDB 8.1.0 - 实例类型 主备版 参考 GaussDB数据库 类型说明,选择适合自己业务的库类型。 存储 超高IO GaussDB支持“超高IO”存储类型,最大吞吐量为350MB/S。 规格 通用型 4 vCPUs | 16 GB 根据自己业务承载选择规格。 Kafka(目标端) Kafka实例名 kafka-drs 自定义,易理解可识别。 版本 2.3.0 - 可用区 可用区三 可选择1个或者3个及以上可用区。实际业务场景推荐选择创建在不同的可用区,提升业务可靠性。 规格 c6.2u4g.cluster - 代理个数 3 - 存储空间 高I/O,200GB 存储空间主要用于存储消息(包含副本,Kafka默认使用3副本),除了存储消息外还需要预留部分空间用于存储日志和元数据。 DRS同步任务 同步任务名 DRS-GaussDBToKafka 自定义。 源数据库引擎 GaussDB主备版 - 目标数据库引擎 Kafka 本示例中目标数据库为Kafka 网络类型 VPC网络 创建任务的时候选择“VPN、专线网络”。
-
同步到GaussDB(DWS)的方案选型 同步性能是搭建同步链路时重点关注因素之一,同步性能涉及数据模型、源库负载、目标库负载、带宽延迟、DRS能力上限等,各局点的情况无法统一。 表1是DRS常见规格的性能上限参考,创建链路时需要结合客户数据模型和场景选择合适的DRS规格。 表1 规格性能上限 规格名称 增量性能上限(行/秒)参考 极小 300 小 3000 中 7500 大 10000 超大 20000 极大 大于20000 GaussDB(DWS)的规格说明可参考这里。 父主题: 实时同步
-
场景描述 增量同步期间DRS任务报错,同步日志界面提示: service INCREMENT failed, cause by: Check whether dws supports the DDL. For support, please contact dws Services. DDL:alter table gltest01.t_pk4 add column a3 int after c1. failed by:ERROR: FIRST/AFTER is not yet supported.
-
请求示例 批量设置同步任务策略,其中增量冲突策略为忽略,同步增量DDL并过滤drop_database操作 https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-sync-policy { "jobs": [{ "conflict_policy": "ignore", "ddl_trans": true, "filter_ddl_policy": "drop_database", "index_trans": true, "job_id": "19557d51-1ee6-4507-97a6-8f69164jb201" }] }
-
场景描述 全量同步期间DRS任务报错,同步日志界面提示:service DATAMOVE failed, cause by: apply event=[type=table_data, batch_index_in_shard=1, table_schema=%s, table_name=%s, record_num=%s] occur error, msg=Table %s.%s not found in database. Unable to generate a valid statement.
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格