diff --git a/FAQ.md b/FAQ.md index 5f27ee49267c..2caba2e2abf2 100755 --- a/FAQ.md +++ b/FAQ.md @@ -264,6 +264,8 @@ TiDB 支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器 2)如果出现了慢查询,可以从 Grafana 监控定位到出现慢查询的 tidb-server 以及时间点,然后在对应节点查找日志中记录的 SQL 信息。 +3)除了日志,还可以通过 `admin show slow` 命令查看,详情可参考 [`admin show slow` 命令](sql/slow-query.md#admin-show-slow-命令)。 + #### 2.2.5 首次部署 TiDB 集群时,没有配置 tikv 的 Label 信息,在后续如何添加配置 Label? TiDB 的 Label 设置是与集群的部署架构相关的,是集群部署中的重要内容,是 PD 进行全局管理和调度的依据。如果集群在初期部署过程中没有设置 Label,需要在后期对部署结构进行调整,就需要手动通过 PD 的管理工具 pd-ctl 来添加 location-labels 信息,例如:`config set location-labels "zone, rack, host"`(根据实际的 label 层级名字配置)。 @@ -676,7 +678,7 @@ loader 的 -t 参数可以根据 TiKV 的实例个数以及负载进行评估调 #### 4.1.2 Loader 参见 [Loader 使用文档](tools/loader.md)。 - + #### 4.1.3 如何将一个运行在 MySQL 上的应用迁移到 TiDB 上? TiDB 支持绝大多数 MySQL 语法,一般不需要修改代码。我们提供了一个[检查工具](https://github.com/pingcap/tidb-tools/tree/master/checker),用于检查 MySQL 中的 Schema 是否和 TiDB 兼容。 @@ -685,11 +687,14 @@ TiDB 支持绝大多数 MySQL 语法,一般不需要修改代码。我们提 重启 TiDB 服务,配置文件中增加 `-skip-grant-table=true` 参数,无密码登陆集群后,可以根据情况重建用户,或者重建 mysql.user 表,具体表结构搜索官网。 -#### 4.1.5 如何导出 TiDB 数据? +#### 4.1.5 在 Loader 运行的过程中,TiDB 可以对外提供服务吗? +该操作进行逻辑插入,TiDB 仍可对外提供服务,但不要执行相关 DDL 操作。 + +#### 4.1.6 如何导出 TiDB 数据? TiDB 目前暂时不支持 `select into outfile`,可以通过以下方式导出 TiDB 数据:参考 [MySQL 使用 mysqldump 导出某个表的部分数据](http://blog.csdn.net/xin_yu_xin/article/details/7574662),使用 mysqldump 加 where 条件导出,使用 MySQL client 将 select 的结果输出到一个文件。 -#### 4.1.6 DB2、Oracle 数据库如何迁移到 TiDB? +#### 4.1.7 如何从 DB2、Oracle 数据库迁移到 TiDB? DB2、Oracle 到 TiDB 数据迁移(增量+全量),通常做法有: @@ -700,7 +705,7 @@ DB2、Oracle 到 TiDB 数据迁移(增量+全量),通常做法有: 目前看来 OGG 最为合适。 -#### 4.1.7 用 Sqoop 批量写入 TiDB 数据,虽然配置了 `--batch` 选项,但还是会遇到 `java.sql.BatchUpdateExecption:statement count 5001 exceeds the transaction limitation` 的错误,该如何解决? +#### 4.1.8 用 Sqoop 批量写入 TiDB 数据,虽然配置了 `--batch` 选项,但还是会遇到 `java.sql.BatchUpdateExecption:statement count 5001 exceeds the transaction limitation` 的错误,该如何解决? - 在 Sqoop 中,`--batch` 是指每个批次提交 100 条 statement,但是默认每个 statement 包含 100 条 SQL 语句,所以此时 100 * 100 = 10000 条 SQL 语句,超出了 TiDB 的事务限制 5000 条,可以增加选项 `-Dsqoop.export.records.per.statement=10 ` 来解决这个问题,完整的用法如下: @@ -717,6 +722,9 @@ sqoop export \ - 也可以选择增大 tidb 的单个事物语句数量限制,不过这个会导致内存上涨。 +#### 4.1.9 TiDB 有像 Oracle 那样的 Flashback Query 功能么,DDL 支持么? +有,也支持 DDL。详细参考 [TiDB 历史数据回溯](op-guide/history-read)。 + ### 4.2 在线数据同步 #### 4.2.1 Syncer 架构 @@ -757,6 +765,10 @@ sqoop export \ 2)可以根据 Syncer 定期上报到 Prometheus 的监控信息来还原出历史同步的位置信息,该方法的位置信息在大量同步数据时由于延迟会可能不准确。 +##### 4.2.1.7 Syncer 下游 TiDB 数据和 MySQL 数据不一致,DML 会退出么? +- 上游 MySQL 中存在数据,下游 TiDB 中该数据不存在,上游 MySQL 执行 `UPDATE` 或 `DELETE`(更新/删除)该条数据的操作时,Syncer 同步过程即不会报错退出也没有该条数据。 +- 下游有主键索引或是唯一索引冲突时,执行 `UPDATE` 会退出,执行 `INSERT` 不会退出。 + ### 4.3 业务流量迁入 #### 4.3.1 如何快速迁移业务流量?