title | summary | aliases | |
---|---|---|---|
TiDB 安装部署常见问题 |
介绍 TiDB 集群安装部署的常见问题、原因及解决方法。 |
|
本文介绍 TiDB 集群安装部署的常见问题、原因及解决方法。
关于 TiDB 支持的操作系统,参见 TiDB 软件和硬件环境建议配置。
TiDB 支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器平台。对于开发、测试、生产环境的服务器硬件配置,参见 TiDB 软件和硬件环境建议配置 - 服务器建议配置。
作为一个分布式集群,TiDB 对时间的要求还是比较高的,尤其是 PD 需要分发唯一的时间戳,如果 PD 时间不统一,如果有 PD 切换,将会等待更长的时间。两块网卡可以做 bond,保证数据传输的稳定,万兆可以保证数据传输的速度,千兆网卡容易出现瓶颈,我们强烈建议使用万兆网卡。
资源可接受的话,我们建议做 RAID 10,如果资源有限,也可以不做 RAID。
- TiDB 需要 CPU 和内存比较好的机器,参考官网配置要求,如果后期需要开启 TiDB Binlog(已废弃),根据业务量的评估和 GC 时间的要求,也需要本地磁盘大一点,不要求 SSD 磁盘;
- PD 里面存了集群元信息,会有频繁的读写请求,对磁盘 I/O 要求相对比较高,磁盘太差会影响整个集群性能,推荐 SSD 磁盘,空间不用太大。另外集群 Region 数量越多对 CPU、内存的要求越高;
- TiKV 对 CPU、内存、磁盘要求都比较高,一定要用 SSD 磁盘。
详情可参考 TiDB 软硬件环境需求。
如果用于生产环境,推荐使用 TiUP 部署 TiDB 集群。
这种情况一般是因为没有使用 --config
参数来指定配置文件(目前只会出现在 binary 部署的场景),TiKV/PD 会按默认值来设置。如果要使用配置文件,请设置 TiKV/PD 的 --config
参数。对于 TiKV 组件,修改配置后重启服务即可;对于 PD 组件,只会在第一次启动时读取配置文件,之后可以使用 pd-ctl 的方式来修改配置,详情可参考 PD 配置参数。
监控机建议单独部署。建议 CPU 8 core,内存 16 GB 以上,硬盘 500 GB 以上。
查看访问监控的机器时间跟集群内机器的时间差,如果比较大,更正时间后即可显示正常。
- supervise 守护进程
- svc 启停服务
- svstat 查看进程状态
变量 | 含义 |
---|---|
cluster_name | 集群名称,可调整 |
tidb_version | TiDB 版本 |
deployment_method | 部署方式,默认为 binary,可选 docker |
process_supervision | 进程监管方式,默认为 systemd,可选 supervise |
timezone | 修改部署目标机器时区,默认为 Asia/Shanghai,可调整,与 set_timezone 变量结合使用 |
set_timezone | 默认为 True,即修改部署目标机器时区,关闭可修改为 False |
enable_elk | 目前不支持,请忽略 |
enable_firewalld | 开启防火墙,默认不开启 |
enable_ntpd | 检测部署目标机器 NTP 服务,默认为 True,请勿关闭 |
machine_benchmark | 检测部署目标机器磁盘 IOPS,默认为 True,请勿关闭 |
set_hostname | 根据 IP 修改部署目标机器主机名,默认为 False |
enable_binlog | 是否部署 pump 并开启 binlog,默认为 False,依赖 Kafka 集群,参见 zookeeper_addrs 变量 |
zookeeper_addrs | binlog Kafka 集群的 ZooKeeper 地址 |
enable_slow_query_log | TiDB 慢查询日志记录到单独文件({{ deploy_dir }}/log/tidb_slow_query.log),默认为 False,记录到 tidb 日志 |
deploy_without_tidb | KV 模式,不部署 TiDB 服务,仅部署 PD、TiKV 及监控服务,请将 inventory.ini 文件中 tidb_servers 主机组 IP 设置为空。 |
-
TiDB 中,对慢查询的定义在 TiDB 的配置文件中。
tidb_slow_log_threshold: 300
,这个参数是配置慢查询记录阈值的,单位是 ms。 -
如果出现了慢查询,可以从 Grafana 监控定位到出现慢查询的 tidb-server 以及时间点,然后在对应节点查找日志中记录的 SQL 信息。
-
除了日志,还可以通过
ADMIN SHOW SLOW
命令查看,详情可参考ADMIN SHOW SLOW
命令。
TiDB 的 Label 设置是与集群的部署架构相关的,是集群部署中的重要内容,是 PD 进行全局管理和调度的依据。如果集群在初期部署过程中没有设置 Label,需要在后期对部署结构进行调整,就需要手动通过 PD 的管理工具 pd-ctl 来添加 location-labels 信息,例如:config set location-labels "zone,rack,host"
(根据实际的 label 层级名字配置)。
pd-ctl 的使用参考 PD Control 使用说明。
Direct 模式就是把写入请求直接封装成 I/O 指令发到磁盘,这样是为了绕开文件系统的缓存,可以直接测试磁盘的真实的 I/O 读写能力。
-
随机读测试:
{{< copyable "shell-regular" >}}
./fio -ioengine=psync -bs=32k -fdatasync=1 -thread -rw=randread -size=10G -filename=fio_randread_test.txt -name='fio randread test' -iodepth=4 -runtime=60 -numjobs=4 -group_reporting --output-format=json --output=fio_randread_result.json
-
顺序写和随机读混合测试:
{{< copyable "shell-regular" >}}
./fio -ioengine=psync -bs=32k -fdatasync=1 -thread -rw=randrw -percentage_random=100,0 -size=10G -filename=fio_randread_write_test.txt -name='fio mixed randread and sequential write test' -iodepth=4 -runtime=60 -numjobs=4 -group_reporting --output-format=json --output=fio_randread_write_test.json
TiDB 支持在 Google Cloud GKE、AWS EKS 和阿里云 ACK 上部署使用。
此外,TiDB 云上部署也已在京东云、UCloud 上线。