数 据 传 输 常 见 问 题 FAQ
常 见 问 题 FAQ 数 据 迁 移 FAQ (1) 数 据 迁 移 预 检 查 时, 预 检 查 项 schema 不 存 在 失 败 是 什 么 原 因? 如 何 修 复? 目 前 DTS 已 经 支 持 自 动 在 目 标 RDS 实 例 创 建 数 据 库 如 果 在 预 检 查 时 报 schema 不 存 在, 那 么 可 能 的 原 因 如 下 : 您 本 地 的 数 据 名 称 含 有 大 写 字 母 特 殊 字 符 或 是 为 RDS 的 关 键 字 RDS 要 求 数 据 名 由 小 写 字 母 数 字 下 划 线 中 划 线 组 成, 字 母 开 头, 字 母 或 数 字 结 尾, 最 长 64 个 字 符 如 果 您 源 实 例 的 数 据 名 称 不 满 足 这 个 要 求, 那 么 DTS 就 不 会 自 动 在 RDS 中 创 建 这 个 库, 而 会 在 预 检 查 时, 报 schema 不 存 在 的 错 误 特 殊 字 符 为 了 解 决 这 个 问 题, 您 需 要 先 手 动 在 RDS 控 制 台 创 建 一 个 合 法 的 数 据 库, 然 后 在 配 置 DTS 迁 移 任 务 时, 使 用 库 名 映 射, 将 本 地 数 据 库 中 的 数 据 迁 移 到 RDS 上 这 个 名 字 合 法 的 数 据 库 中 具 体 可 以 参 考 : 最 佳 实 践 中 的 库 名 不 同 的 数 据 库 之 间 的 数 据 迁 移 一 节 (2) RDS 的 白 名 单 列 表 中 突 然 添 加 了 很 多 不 认 识 的 IP, 这 些 IP 是 哪 里 的? 是 否 安 全? DTS 在 数 据 迁 移 之 前, 会 判 断 源 或 目 标 RDS 实 例 是 否 设 置 了 白 名 单, 如 果 RDS 实 例 限 制 了 白 名 单,DTS 服 务 器 不 能 访 问 那 么 DTS 会 在 配 置 迁 移 任 务 时, 将 服 务 器 的 IP 列 表 添 加 到 RDS 实 例 的 白 名 单 中, 防 止 因 为 白 名 单 限 制,DTS 连 接 不 上 RDS 实 例 导 致 迁 移 失 败 在 迁 移 完 成 后 的 一 天 内, DTS 会 将 自 己 服 务 器 列 表 IP 从 RDS 白 名 单 中 删 除 掉 (3) 使 用 DTS 进 行 数 据 迁 移, 源 数 据 库 的 数 据 会 不 会 在 迁 移 后 被 删 除 掉? 不 会,DTS 进 行 数 据 迁 移 时, 其 实 是 复 制 了 源 数 据 库 的 一 份 数 据, 并 不 会 对 源 数 据 库 的 数 据 有 任 何 影 响 (4) 我 的 阿 里 云 账 号 下 面 有 两 个 RDS 实 例 A,B,DTS 是 否 可 以 将 A 中 的 数 据 库 C 迁 移 到 B 中 的 数 据 库 D? 可 以,DTS 提 供 的 库 名 映 射 功 能, 可 以 实 现 将 两 个 RDS 实 例 中 不 同 库 名 的 两 个 数 据 库 之 间 的 数 据 迁 移 具 体 任 务 配 置 方 法 详 见 : 最 佳 实 践 中 的 库 名 不 同 的 数 据 库 之 间 的 数 据 迁 移 (5) DTS 是 否 能 支 持 两 个 不 同 阿 里 云 账 号 下 的 RDS 实 例 之 间 的 数 据 迁 移? 是 否 支 持 增 量 迁 移? 可 以, 进 行 跨 阿 里 云 账 号 下 RDS 实 例 间 的 迁 移, 需 要 以 目 标 RDS 实 例 所 属 的 阿 里 云 账 号 登 陆 DTS, 同 时 源 实 例 类 型 选 择 有 公 网 IP 的 自 建 数 据 库 具 体 的 任 务 配 置 方 法 详 见 : 最 佳 实 践 中 的 跨 阿 里 云 账 号 的 RDS 实 例 间 的 数 据 迁 移 (6) 迁 移 的 目 标 库 中 已 经 存 在 表 了, 使 用 DTS 进 行 数 据 迁 移 是 否 会 覆 盖 掉 这 些 数 据? 不 会, 如 果 配 置 迁 移 任 务 时, 要 进 行 整 个 数 据 库 的 迁 移, 那 么 预 检 查 时, 会 要 求 目 标 待 迁 入 数 据 库 为 空 库, 如 果 不 是 空 库, 那 么 预 检 查 的 " 目 标 库 是 否 为 空 " 项 会 报 错 如 果 配 置 迁 移 任 务 时, 只 迁 移 几 个 表, 那 么 预 检 查 时, 会 要 求 目 标 库 中 这 些 表 必 须 没 有 数 据, 如 果 含 有 数 据 库 的, 那 么 预 检 查 的 " 目 标 库 是 否 为 空 " 项 会 报 错 在 目 标 库 有 数 据 的 情 况 下,DTS 不 支 持 进 行 数 据 迁 移, 所 以 不 会 DTS 数 据 迁 移 不 会 覆 盖 掉 已 存 在 的 数 据 1
(7) DTS 是 否 支 持 在 一 个 RDS 实 例 中, 复 制 出 一 个 跟 数 据 库 A 一 模 一 样 的 库 B? 支 持,DTS 提 供 的 对 象 名 映 射 功 能, 可 以 实 现 在 一 个 RDS 实 例 内 复 制 出 一 个 跟 已 存 在 库 一 模 一 样 的 库 具 体 任 务 配 置 方 法 详 见 : 最 佳 实 践 中 的 实 例 内 不 同 数 据 库 之 间 的 数 据 迁 移 一 节 (8) DTS 迁 移 过 程 中, 是 否 会 锁 表, 对 源 数 据 库 是 否 有 影 响? 如 果 配 置 迁 移 任 务 时, 选 择 了 全 量 数 据 迁 移 和 增 量 数 据 迁 移, 那 么 在 全 量 数 据 迁 移 过 程 中,DTS 会 判 断 源 数 据 库 中 是 否 存 在 非 事 务 且 无 主 键 的 表, 如 果 存 在, 那 么 为 了 保 证 迁 移 数 据 一 致 性,DTS 会 给 这 些 表 上 只 读 锁, 然 后 将 这 些 表 的 数 据 全 量 迁 移 到 目 标 库 之 后, 释 放 掉 只 读 锁, 进 行 其 他 表 的 全 量 迁 移 在 上 只 读 锁 期 间, 只 有 被 上 锁 的 表 只 能 进 行 只 读 操 作, 其 他 表 可 以 正 常 读 写 (9) DTS 迁 移 时, 对 于 ECS RDS 实 例 是 走 内 网 还 是 公 网? 如 果 是 进 行 同 一 个 地 区 内 部 的 数 据 迁 移, 那 么 DTS 会 使 用 内 网 连 接 ECS RDS 实 例 如 果 是 进 行 跨 地 区 的 数 据 迁 移, 那 么 DTS 会 使 用 外 网 连 接 源 实 例 (ECS RDS), 使 用 内 网 连 接 目 标 RDS 实 例 (10) 数 据 迁 移 过 程 中, 是 否 支 持 DDL 操 作? 目 前 DTS 数 据 迁 移 过 程 中, 不 支 持 源 库 进 行 DDL 操 作 如 果 迁 移 过 程 中 源 库 进 行 了 DDL 操 作, 那 么 可 能 导 致 数 据 丢 失 (11) 全 量 迁 移 报 java.sql.batchupdateexception: INSERT, DELETE command denied to user 'user'@'host' for table * 是 什 么 原 因? 全 量 迁 移 如 果 报 INSERT CREATE 或 DELETE 等 的 权 限 问 题, 一 般 都 是 由 于 目 标 RDS 实 例 被 锁 定 了, 导 致 账 号 写 权 限 被 回 收 对 于 这 个 问 题, 需 要 先 回 收 目 标 RDS 实 例 的 日 志 空 间 或 升 级 目 标 RDS 实 例 的 规 格 后, 在 DTS 控 制 台 触 发 重 试 功 能, 断 点 重 启 任 务 具 体 修 复 方 法 详 见 : 最 佳 实 践 中 的 失 败 修 复 一 节 (12) DTS 的 增 量 迁 移 基 本 原 理 是 什 么? 是 否 能 够 保 证 两 边 数 据 库 实 时 的? 使 用 增 量 迁 移 时, 什 么 时 候 会 锁 表? DTS 的 增 量 迁 移 是 实 时 获 取 在 迁 移 过 程 中, 源 数 据 库 产 生 的 增 量 数 据, 然 后 在 全 量 迁 移 完 成 后, 开 始 同 步 到 目 标 RDS 实 例 中 当 增 量 迁 移 第 一 次 追 平 源 库 的 写 入 时, 增 量 迁 移 的 状 态 为 无 延 迟, 此 后 增 量 迁 移 会 一 直 同 步 源 数 据 库 的 业 务 写 入 如 果 用 户 选 择 了 量 数 据 迁 移 和 增 量 数 据 迁 移, 那 么 在 全 量 数 据 迁 移 过 程 中,DTS 会 判 断 源 数 据 库 中 是 否 存 在 非 事 务 且 无 主 键 的 表, 如 果 存 在, 那 么 为 了 保 证 迁 移 数 据 一 致 性,DTS 会 给 这 些 表 上 只 读 锁, 其 他 情 况 下,DTS 不 会 给 源 数 据 库 上 锁 (13) DTS 进 行 RDS 迁 移 时, 是 从 RDS 的 主 库 还 是 备 库 获 取 数 据? DTS 进 行 数 据 迁 移 时, 是 从 RDS 的 主 库 上 拉 取 数 据 (14) DTS 是 否 支 持 VPC 模 式 下 的 RDS 实 例 的 数 据 迁 移? 如 果 VPC 模 式 的 RDS 实 例 为 目 标 实 例 时,DTS 暂 时 不 支 持 它 的 数 据 迁 移 如 果 VPC 模 式 的 RDS 实 例 为 源 实 例 时,DTS 可 以 支 持 将 它 的 数 据 迁 移 到 经 典 网 络 的 RDS 实 例 上 但 是 在 配 置 任 务 时, 源 实 例 的 类 型 为 由 公 网 IP 的 自 建 数 据 库, 然 后 填 写 源 RDS 实 例 的 外 网 连 接 串, 此 时 DTS 会 使 用 外 网 DNS 连 接 RDS 实 例 (15) DTS 是 否 支 持 VPC 内 的 ECS 上 的 自 建 数 据 库 迁 移 到 RDS 实 例? 不 支 持,DTS 现 在 还 不 能 支 持 VPC 内 部 的 ECS 上 的 自 建 数 据 库 迁 移 到 RDS 实 例 (16) 使 用 DTS 将 自 建 数 据 库 迁 移 到 RDS, 为 什 么 迁 移 过 程 中 RDS 的 空 间 大 小 会 比 源 数 据 库 大? 2
因 为 DTS 进 行 的 是 逻 辑 迁 移 方 式, 它 是 将 迁 移 数 据 封 装 成 SQL 后, 同 步 到 目 标 RDS 实 例 中 的, 此 时 会 在 目 标 RDS 实 例 中 产 生 binlog 数 据, 所 以 迁 移 过 程 中,RDS 的 空 间 大 小 可 能 比 源 数 据 库 大 (17) DTS 是 否 支 持 定 时 自 动 迁 移? DTS 暂 时 还 不 支 持 定 时 启 动 数 据 迁 移 (18) 创 建 数 据 迁 移 任 务 时, 报 获 取 结 构 连 接 超 时 是 什 么 原 因? " 获 取 结 构 连 接 超 时 " 的 错 误, 可 能 由 于 下 面 两 种 原 因 : 1) 您 的 源 数 据 库 设 置 了 白 名 单, 导 致 DTS 服 务 器 不 能 连 接 上 建 议 将 白 名 单 放 开 后 重 试 2) 您 提 供 的 迁 移 账 号 对 应 的 host 为 localhost, 导 致 DTS 服 务 器 不 能 从 远 程 连 接 上 建 议 将 迁 移 账 号 对 应 的 host 调 整 为 "%" 后, 重 试 (19) 数 据 迁 移 时, 目 标 数 据 库 中 多 了 一 个 表 increment_trx, 这 个 表 是 做 什 么 的? increment_trx 是 DTS 增 量 迁 移 在 目 标 实 例 中 创 建 的 位 点 表, 主 要 用 于 记 录 增 量 迁 移 的 位 点, 解 决 任 务 异 常 重 启 后 的 断 点 续 传 问 题 在 迁 移 过 程 中 勿 删 除, 否 则 会 导 致 迁 移 失 败 (20) 创 建 迁 移 任 务 时, 报 获 取 迁 移 结 构 失 败, 原 因 [java.sql.sqlexception: Io exception: The Network Adapter could not establish the connection] 如 果 配 置 Oracle 到 RDS MySQL 迁 移 任 务 时, 在 点 击 " 授 权 白 名 单 并 进 入 下 一 步 " 时, 如 果 报 如 上 的 错 误, 一 般 是 由 于 数 据 传 输 服 务 器 连 接 不 上 源 Oracle 数 据 库 当 遇 到 此 问 题 时, 需 要 在 Oracle 安 装 服 务 器 上 执 行 netstat -ano 查 看 Oracle 数 据 库 的 端 口 是 否 配 置 了 内 外 网 IP 监 听 如 果 没 有 配 置, 那 么 需 要 修 改 Oracle 的 监 听 服 务 重 启 数 据 库 服 务 后, 重 新 创 建 迁 移 任 务 即 可 (21) 增 量 迁 移 过 程 中, 报 类 似 如 下 错 误 : DTS-077100: Record Replicator error, cause by java.io.ioexception: com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityconstraintviolationexception: Duplicate entry '8895524' for key 'PRIMARY' 这 种 错 误 是 主 键 冲 突, 说 明 您 的 目 标 实 例 中 已 经 存 在 这 个 主 键 对 应 的 纪 录 了 出 现 这 种 问 题, 一 般 是 因 为 在 目 标 实 例 中, 您 的 这 个 表 上 有 触 发 器, 在 同 步 过 程 中 插 入 纪 录 时, 这 个 触 发 器 还 会 触 发 重 新 插 入 一 次 纪 录, 从 而 导 致 主 键 冲 突 数 据 订 阅 FAQ (1) RDS 是 否 有 解 决 方 案 可 以 实 现 自 动 的 binlog 下 载, 下 载 到 本 地 的 统 计 服 务 器 DTS 的 数 据 订 阅 支 持 RDS binlog 日 志 的 实 时 订 阅, 可 以 开 通 DTS 的 数 据 订 阅 服 务, 通 过 DTS SDK 订 阅 RDS binlog 数 据 并 实 时 同 步 到 本 地 的 统 计 服 务 器 中 (2) 类 似 混 合 云 场 景 下 的 HA, 比 如 我 的 业 务 都 在 RDS 里 了, 在 本 地 的 数 据 中 心 做 一 个 从 库, 这 个 数 据 传 输 支 持 吗? 支 持, 可 以 开 通 DTS 的 数 据 订 阅 服 务, 通 过 RDS 备 份 恢 复 +DTS 实 时 订 阅 二 者 结 合, 实 现 本 地 灾 备 的 功 能 具 体 实 现 方 案 详 见 : 最 佳 时 间 中 的 利 用 数 据 订 阅 实 现 本 地 灾 备 (3) 启 动 订 阅 SDK 时 报 get guid info failed, 是 什 么 原 因? 这 个 是 由 于 您 在 SDK 中 设 置 的 订 阅 通 道 ID 不 对 需 要 将 示 例 代 码 中 的 client.askforguid(" 订 阅 通 道 ID"); 这 里 面 的 " 订 阅 通 道 ID" 替 换 成 您 要 订 阅 的 订 阅 通 道 对 应 的 ID 3
(4) RDS 实 例 和 本 地 数 据 库 的 表 结 构 相 同, 但 是 索 引 不 同, 可 以 使 用 数 据 订 阅 功 能 进 行 实 时 同 步 吗? 可 以, 如 果 数 据 订 阅 只 订 阅 数 据 变 更, 那 么 两 边 索 引 不 同 不 会 影 响 但 是 如 果 订 阅 了 结 构 变 更, 而 且 RDS 上 涉 及 到 索 引 变 更 的 话, 可 能 会 由 于 两 边 索 引 不 同, 导 致 结 构 变 更 在 本 地 消 费 失 败 (5) 数 据 订 阅 可 以 订 阅 实 时 增 量 数 据, 这 个 新 增 的 数 据 是 只 指 新 增 数 据, 还 是 包 含 修 改 的 数 据? DTS 的 数 据 订 阅 可 以 订 阅 的 增 量 数 据 包 括 : 所 有 的 增 删 改 以 及 结 构 变 更 (DDL) (6) 数 据 订 阅 启 动 SDK, 报 如 下 的 错 误 Exception in thread "main" com.aliyuncs.exceptions.clientexception: SignatureDoesNotMatch : Specified signature is not matched with our calculation. at com.aliyuncs.defaultacsclient.parseacsresponse(defaultacsclient.java:139) at com.aliyuncs.defaultacsclient.getacsresponse(defaultacsclient.java:89) at com.aliyun.drc.regionmanager.regionrouter.getregionrouterinfo(regionrouter.java:38) at com.aliyun.drc.clusterclient.partition.partitionpool.init(partitionpool.java:94) 这 是 为 什 么? 这 个 报 错 是 由 于 您 在 SDK 中 配 置 的 AccessKeyID/AccessKeySecret 不 正 确 建 议 重 新 生 成 新 的 AccessKeyID/AccessKeySecret 后, 使 用 新 的 AK 重 启 SDK (7) 一 个 SDK 客 户 端 可 以 订 阅 多 个 通 道 吗 不 能, 目 前 数 据 传 输 服 务 的 SDK 还 不 能 支 持 一 个 SDK 订 阅 多 个 订 阅 通 道 的 数 据 (8) 数 据 订 阅 启 动 SDK 报 如 下 的 错 误 :keep alive error 如 果 数 据 订 阅 报 如 上 的 错 误, 一 般 原 因 可 能 有 两 个 : 1) SDK 运 行 的 服 务 器 没 有 公 网 IP, 不 能 连 接 数 据 传 输 服 务 的 服 务 器 2) 订 阅 通 道 的 消 费 时 间 点 不 在 订 阅 通 道 的 数 据 范 围 之 内 当 是 这 种 原 因 时, 需 要 先 到 数 据 传 输 控 制 台 修 改 这 个 订 阅 通 道 的 消 费 位 点 后, 重 新 启 动 SDK (9) 如 果 SDK 退 出 后, 过 几 天 重 启 运 行, 不 能 成 功 订 阅 数 据 这 是 因 为 数 据 订 阅 通 道 中 保 留 数 据 的 时 间 范 围 为 1 天, 从 [ 当 前 时 间 -1 天, 当 天 时 间 ], 订 阅 通 道 会 删 除 过 期 数 据 所 以 如 果 上 次 SDK 退 出 时 最 后 一 条 消 费 数 据 的 时 间 点 对 应 的 数 据, 不 在 当 前 订 阅 通 道 中, 那 么 就 不 能 订 阅 到 这 个 消 费 位 点 对 应 的 数 据 为 了 解 决 这 个 问 题, 用 户 需 要 先 到 数 据 订 阅 控 制 台 修 改 消 费 位 点 后, 重 新 启 动 SDK (10) 为 什 么 在 控 制 台 修 改 消 费 位 点 操 作 成 功 后, 启 动 SDK, 订 阅 到 的 数 据 不 是 修 改 后 位 点 对 应 的 数 据 如 果 在 修 改 消 费 位 点 过 程 中,SDK 还 是 存 活 的, 那 么 SDK 就 会 不 断 得 向 服 务 端 汇 报 自 己 消 费 的 最 后 位 点, 导 致 控 制 台 修 改 后 的 消 费 位 点 被 覆 盖, 所 以 SDK 拉 到 的 数 据 还 是 最 后 一 个 消 费 位 点 对 应 的 数 据 (11) SDK 正 常 拉 数 据 过 程 中, 突 然 卡 住 不 能 订 阅 到 数 据 这 种 情 况, 可 能 是 SDK 代 码 中 没 有 调 用 ackasconsumed 接 口 汇 报 消 费 位 点 导 致 的 由 于 SDK 内 部 设 置 了 8192 个 Record 的 缓 存 空 间, 如 果 不 调 用 ackasconsumed 汇 报 位 点, 那 么 这 缓 存 空 间 数 据 就 不 会 删 除, 当 缓 存 满 时, 就 不 能 拉 取 新 的 数 据, 就 会 出 现 SDK 卡 住 不 能 订 阅 数 据 现 象 (12) 如 何 确 认 数 据 是 否 正 常 消 费 如 果 数 据 正 常 消 费, 那 么 数 据 传 输 控 制 台 的 消 费 位 点 就 会 正 常 往 前 走 (13) 为 什 么 控 制 台 上 的 消 费 位 点 要 比 数 据 范 围 最 大 值 还 要 大? 因 为 订 阅 通 道 的 数 据 范 围 更 新 频 率 为 1 分 钟, 而 消 费 位 点 的 更 新 频 率 为 10 秒 所 以 如 果 实 时 消 费 的 话, 消 费 位 4
点 的 值 可 能 比 订 阅 通 道 数 据 范 围 的 最 大 值 要 大 (14) 为 什 么 订 阅 到 数 据, 跟 写 入 的 数 据 不 完 全 相 同 订 阅 的 数 据 是 源 库 每 个 写 入 变 更 在 binlog 文 件 中 记 录 的 日 志, 例 如 一 条 update 语 句 更 新 了 3 个 记 录, 那 么 在 binlog 中 就 会 记 录 3 条 update, 所 以 这 时 候 订 阅 到 的 数 据 就 是 3 条 update (15) 如 何 保 证 SDK 订 阅 到 的 数 据 是 一 个 完 整 的 事 务, 根 据 提 供 的 消 费 位 点 是 否 会 拉 取 到 事 务 中 间 的 record 不 会, 根 据 用 户 提 供 的 消 费 位 点, 服 务 端 会 搜 索 这 个 消 费 位 点 对 应 的 完 整 事 务, 从 整 个 事 务 的 begin 语 句 开 始, 向 下 游 分 发 数 据, 所 以 可 以 接 受 到 完 整 的 事 务 内 容 5