Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 层级名字配置)。
Expand Down Expand Up @@ -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 兼容。
Expand All @@ -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 数据迁移(增量+全量),通常做法有:

Expand All @@ -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 ` 来解决这个问题,完整的用法如下:

Expand All @@ -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 架构
Expand Down Expand Up @@ -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 如何快速迁移业务流量?
Expand Down