Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FAQ: add FAQ questions #783

Merged
merged 4 commits into from
Jun 30, 2018
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
35 changes: 35 additions & 0 deletions FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,13 @@ Direct 模式就是把写入请求直接封装成 I/O 指令发到磁盘,这
```
./fio -ioengine=libaio -bs=32k -direct=1 -thread -rw=randrw -percentage_random=100,0 -size=10G -filename=fio_randr_write_test.txt -name='PingCAP' -iodepth=4 -runtime=60
```
#### 2.2.8 使用 TiDB Ansible 部署 TiDB 集群的时候,遇到 `UNREACHABLE! "msg": "Failed to connect to the host via ssh: " ` 报错是什么原因?

有两种可能性:

- ssh 互信的准备工作未做好,建议严格参照我们的官方文档步骤配置互信([详情可参考](op-guide/ansible-deployment.md)),并使用命令 `ansible -i inventory.ini all -m shell -a 'whoami' -b` 来验证互信配置是否成功。

- 如果涉及到单服务器分配了多角色的场景,例如多组件混合部署或单台服务器部署了多个 TiKV 实例,可能是由于 ssh 复用的机制引起这个报错,可以使用 `ansible … -f 1` 的选项来规避这个报错。

### 2.3 升级

Expand Down Expand Up @@ -444,6 +451,10 @@ Client 连接只能通过 TiDB 访问集群,TiDB 负责连接 PD 与 TiKV,PD

下线节点一般指 TiKV 节点通过 pd-ctl 或者监控判断节点是否下线完成。节点下线完成后,手动停止下线节点上相关的服务。从 Prometheus 配置文件中删除对应节点的 node_exporter 信息。从 Ansible inventory.ini 中删除对应节点的信息。

#### 3.2.9 使用 PD Control 连接 PD Server 时,为什么只能通过本机 IP 连接,不能通过 127.0.0.1 连接?

因为使用 TiDB Ansible 部署的集群,PD 对外服务端口不会绑定到 127.0.0.1,所以 PD Control 不会识别 127.0.0.1。

### 3.3 TiDB server 管理

#### 3.3.1 TiDB 的 lease 参数应该如何设置?
Expand Down Expand Up @@ -653,6 +664,22 @@ DB2、Oracle 到 TiDB 数据迁移(增量+全量),通常做法有:

目前看来 OGG 最为合适。

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

```
sqoop export \
-Dsqoop.export.records.per.statement=10 \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop ${user} \
--password ${passwd} \
--table ${tab_name} \
--export-dir ${dir} \
--batch
```
- 也可以选择增大 tidb 的单个事物语句数量限制,不过这个会导致内存上涨。

### 4.2 增量数据同步

#### 4.2.1 Syncer 架构
Expand Down Expand Up @@ -689,6 +716,14 @@ DB2、Oracle 到 TiDB 数据迁移(增量+全量),通常做法有:

Wormhole 是一项数据同步服务,让用户能够通过 Web 控制台, 轻松操作数据的全量 + 增量同步,支持多种同、异构数据源之间的数据迁移,如 MySQL -> TiDB,MongoDB -> TiDB。具体可联系官方进行试用 [[email protected]](mailto:[email protected])。

#### 4.2.3 使用 Syncer gtid 的方式同步时,同步过程中会不断更新 syncer.meta 文件,如果 Syncer 所在的机器坏了,导致 syncer.meta 文件所在的目录丢失,该如何处理?

当前 Syncer 版本的没有进行高可用设计,Syncer 目前的配置信息 syncer.meta 直接存储在硬盘上,其存储方式类似于其他 MySQL 生态工具,比如 mydumper。 因此,要解决这个问题当前可以有两个方法:

1)把 syncer.meta 数据放到比较安全的磁盘上,例如磁盘做好 raid1;

2)可以根据 Syncer 定期上报到 Prometheus 的监控信息来还原出历史同步的位置信息,该方法的位置信息在大量同步数据时由于延迟会可能不准确。

### 4.3 业务流量迁入

#### 4.3.1 如何快速迁移业务流量?
Expand Down