1离线 TiDB Ansible 部署方案-详解

一: 环境要求

Linux 操作系统版本要求

Linux 操作系统平台

版本

Red Hat Enterprise Linux

7.3 及以上

CentOS

7.3 及以上

Oracle Enterprise Linux

7.3 及以上

Ubuntu LTS

16.04 及以上

 

二: 部署大概流程:

1): 准备一台中控机(连接外网,此机功能 类似 类似发布每台的server端,同时所有的一些下载包在此主机下。)

2):因为tidb 需要mysql client 调用,所以,中控机可以 部署一个MySQL 服务任务。

3):因为tidb 自带Grafana 平台展示功能,因此可使用中控机替代,在 参数inventory.ini 下编辑,当然也可使用 另外一台服务器。

4):中控机需要安装 必须的依赖包: git curl pip 及sshpass python2-pip 及ansible 软件。

5) :所有节点需要安装ntp 服务。

6):所有节点需要配置ssh 等效性验证(这一步可以自己做,也可以通过tidb 命令部署)

7) :关闭firewalled, selinux 服务。

8): tidb, pd,tikv 各自可配置调优文件,在其对应的目录下。

 

三:TiDB 环境准备。

 

3.1 准备机器:

  1. 下载机一台(中控机)
    • 该机器需开放外网访问,用于下载 TiDB Ansible、TiDB 及相关软件安装包。
    • 推荐安装 CentOS 7.3 及以上版本 Linux 操作系统。
  1. 部署目标机器若干及部署中控机一台
    • 系统要求及配置参考准备机器。
    • 可以无法访问外网。

在中控机上安装系统依赖包

3. TiDB 集群软件各节点。

4. 此次测试机器清单:

################

[tidb@tikv3-500 conf]$ cat /etc/hosts

127.0.0.1 tikv1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

###### TiDB #######

10.0.77.5 tikv1-500.com

10.0.77.6 tikv2-500.com

10.0.77.10 tikv3-500.com

10.0.77.11 tidb1-500.com

10.0.25.5 tidb2-500.com

10.0.25.6 tidb-cluster.monitor (中控机 && Grafana && MySQL 调用客户端)

192.168.41.22 pd1-500.com

192.168.41.27 pd2-500.com

192.168.41.13 pd3-500.com

##################

 

3.2 服务器建议配置

TiDB 支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器平台。对于开发,测试,及生产环境的服务器硬件配置有以下要求和建议:

开发及测试环境

组件

CPU

内存

本地存储

网络

实例数量(最低要求)

TiDB

8核+

16 GB+

无特殊要求

千兆网卡

1(可与 PD 同机器)

PD

4核+

8 GB+

SAS, 200 GB+

千兆网卡

1(可与 TiDB 同机器)

TiKV

8核+

32 GB+

SSD, 200 GB+

千兆网卡

3

注意:

  • 验证测试环境中的 TiDB 和 PD 可以部署在同一台服务器上。
  • 如进行性能相关的测试,避免采用低性能存储和网络硬件配置,防止对测试结果的正确性产生干扰。
  • 如果仅验证功能,建议使用 Docker Compose 部署方案单机进行测试。
  • TiDB 对于磁盘的使用以存放日志为主,因此在测试环境中对于磁盘类型和容量并无特殊要求。

生产环境

组件

CPU

内存

硬盘类型

网络

实例数量

(最低要求)

TiDB

16核+

32 GB+

SAS

万兆网卡(2块最佳)

2

PD

4核+

8 GB+

SSD

万兆网卡(2块最佳)

3

TiKV

16核+

32 GB+

SSD

万兆网卡(2块最佳)

3

监控

(中控)

8核+

16 GB+

SAS

千兆网卡

1

注意:

  • 生产环境中的 TiDB 和 PD 可以部署和运行在同服务器上,如对性能和可靠性有更高的要求,应尽可能分开部署。
  • 生产环境强烈推荐使用更高的配置。
  • TiKV 硬盘大小配置建议 PCI-E SSD 不超过 2 TB,普通 SSD 不超过 1.5 TB

3.3 网络要求

TiDB 作为开源分布式 NewSQL 数据库,其正常运行需要网络环境提供如下的网络端口配置要求,管理员可根据实际环境中 TiDB 组件部署的方案,在网络侧和主机侧开放相关端口:

组件

默认端口

说明

TiDB

4000

应用及 DBA 工具访问通信端口

TiDB

10080

TiDB 状态信息上报通信端口

TiKV

20160

TiKV 通信端口

PD

2379

提供 TiDB 和 PD 通信端口

PD

2380

PD 集群节点间通信端口

Pump

8250

Pump 通信端口

Drainer

8249

Drainer 通信端口

Prometheus

9090

Prometheus 服务通信端口

Pushgateway

9091

TiDB,TiKV,PD 监控聚合和上报端口

Node_exporter

9100

TiDB 集群每个节点的系统信息上报通信端口

Blackbox_exporter

9115

Blackbox_exporter 通信端口,用于 TiDB 集群端口监控

Grafana

3000

Web 监控服务对外服务和客户端(浏览器)访问端口

Grafana

8686

grafana_collector 通信端口,用于将 Dashboard 导出为 PDF 格式

Kafka_exporter

9308

Kafka_exporter 通信端口,用于监控 binlog kafka 集群

 

3.4 TiDB Cluster 简介

 

TiDB Server

TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入地址。

PD Server

Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。

PD 通过 Raft 协议保证数据的安全性。Raft 的 leader server 负责处理所有操作,其余的 PD server 仅用于保证高可用。建议部署奇数个 PD 节点。

TiKV Server

TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。

TiSpark

TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将 Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼。

TiDB Operator

TiDB Operator 提供在主流云基础设施(Kubernetes)上部署管理 TiDB 集群的能力。它结合云原生社区的容器编排最佳实践与 TiDB 的专业运维知识,集成一键部署、多集群混部、自动运维、故障自愈等能力,极大地降低了用户使用和管理 TiDB 的门槛与成本。

 

3.5 开始部署

下载系统依赖离线安装包,上传至中控机。该离线包仅支持 CentOS 7 系统,包含 pip 及 sshpass。

-- 改地址为官方 链接地址。

或者直接 yum install :(在线方式)

# yum install epel-release git curl sshpass

# yum install python2-pip

# yum install ansible

# yum install git*

 

 

 

中控机下操作:

3.5.1 安装离线ansible 系统包:

# tar -xzvf ansible-system-rpms.el7.tar.gz

# cd ansible-system-rpms.el7

# chmod u+x install_ansible_system_rpms.sh

# ./install_ansible_system_rpms.sh

 

安装后可通过 pip -V 验证是否安装成功:

[root@tidb-cluster ~]# pip -V

pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7) ## 成功

ps : 如果系统已经安装了pip ,确保其版本 大于8.12及以上,否则离线安装ansible 有可能碰见兼容问题。

 

3.5.2 所有Cluster 节点创建 tidb 用户 (也可以是其他用户,但是需要统一)

--所有节点

# useradd -m -d /data/tidb tidb

# passwd tidb

# mkdir -pv /data/tidb/deploy && chown -R tidb:tidb /data

 

3.5.3 修改系统参数

--中控机 连接外网

cat >> /etc/resolv.conf << EOF

nameserver 192.168.0.188

EOF

 

--所有节点:

# cat >> /etc/pam.d/login << EOF

session required /lib64/security/pam_limits.so

EOF

 

--所有节点:

# cat >> /etc/security/limits.conf << EOF

# BEGIN ANSIBLE MANAGED BLOCK

tidb soft nofile 1000000

tidb hard nofile 1000000

tidb soft stack 10240

EOF

 

--所有节点:

关闭 Selinux 参数:

vim /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled

设置后需要重启才能生效

 

--所有节点:

关闭防火墙:

# systemctl stop firewalld.service && systemctl disable firewalld.service

 

 

3.5.4 所有节点配置 NTP 服务:

# yum install ntp ntpdate -y

cat >> /etc/ntp.conf << EOF

##

## ntp server ##

server 192.168.0.188 iburst

EOF

# systemctl restart ntpd.service && systemctl status ntpd.service

 

 

3.5.5 手工配置 ssh 互信及 sudo 免密码:

cat >> /etc/sudoers << EOF

# visudo

tidb ALL=(ALL) NOPASSWD: ALL

EOF

 

执行以下命令,将 tidb ALL=(ALL) NOPASSWD: ALL 添加到文件末尾,即配置好 sudo 免密码。

以 tidb 用户登录到中控机,执行以下命令,将 172.16.10.61 替换成你的部署目标机器 IP,按提示输入部署目标机器 tidb 用户密码,执行成功后即创建好 ssh 互信,其他机器同理。

$ ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.10.

 

中控机下执行,其他节点都执行对应一遍:

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.25.6

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.77.5

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.77.6

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.77.10

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.77.11

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.25.5

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.41.22

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.41.27

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.41.13

 

--测试,均不需要输入密码

ssh xxxx date;date

sudo su root

其他节点同样执行:

 

--------------------------------------------------------

对应脚本:

ps : 手工ssh 等效验证 批量处理脚本

#########################

批量处理脚本:

-- yum install expect -y

 

[tidb@pd3-500 ~]$ cat ssh_auto.sh

#!/bin/bash

[ ! -f /home/tidb/.ssh/id_rsa.pub ] && ssh-keygen -t rsa -p '' &>/dev/null # 密钥对不存在则创建密钥

while read line;do

ip=`echo $line | cut -d " " -f1` # 提取文件中的ip

user_name=`echo $line | cut -d " " -f2` # 提取文件中的用户名

pass_word=`echo $line | cut -d " " -f3` # 提取文件中的密码

 

expect <

spawn ssh-copy-id -i /home/tidb/.ssh/id_rsa.pub $user_name@$ip

expect {

"yes/no" { send "yes\n";exp_continue}

"password" { send "$pass_word\n"}

}

expect eof

EOF

done < /home/tidb/host_ip.txt # 读取存储ip的文件

 

### The End ###

 

--对应的host_ip.txt 列表

[root@tidb-cluster tidb]# cat host_ip.txt

10.0.25.6 tidb tidb1234

10.0.77.5 tidb tidb1234

10.0.77.6 tidb tidb1234

10.0.77.10 tidb tidb1234

10.0.77.11 tidb tidb1234

10.0.25.5 tidb tidb1234

192.168.41.22 tidb tidb1234

192.168.41.27 tidb tidb1234

192.168.41.13 tidb tidb1234

 

#############################

 

四: 安装部署

 

4.1 : 在中控机 上离线安装Ansible 及其依赖

以下是 CentOS 7 系统 Ansible 离线安装方式:

目前 release-2.0 及 master 版本兼容 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 tidb-ansible/requirements.txt 文件中,请下载 Ansible 2.5 离线安装包上传至中控机。

 

--官方 链接: 下载 Ansible 2.5 离线安装包

--https://pingcap.com/docs-cn/v3.0/how-to/deploy/orchestrated/offline-ansible/

 

[root@tidb-cluster ~]# du * -sh

4.0K anaconda-ks.cfg

15M ansible-2.5.0-pip.tar.gz

39M ansible-system-rpms.el7

36M ansible-system-rpms.el7.tar.gz

4.3G CentOS-7-x86_64-DVD-1810.iso

224K tidb-ansible-2.1.17.tar.gz

 

# tar -xzvf ansible-2.5.0-pip.tar.gz && # cd ansible-2.5.0-pip/ && # chmod u+x install_ansible.sh &&

# ./install_ansible.sh

安装完成后,可通过 ansible --version 查看版本:

 

[root@tidb-cluster ~]# ansible --version

ansible 2.8.5 -- 这里之前通过 在线安装过,版本只要大于 2.5即可

config file = /etc/ansible/ansible.cfg

configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']

ansible python module location = /usr/lib/python2.7/site-packages/ansible

executable location = /usr/bin/ansible

python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]

 

在下载机上下载 TiDB Ansible 及 TiDB 安装包

以下为 tidb-ansible 与 TiDB 的版本对应关系,版本选择可以咨询官方。

TiDB 版本

tidb-ansible tag

备注

2.0 版本

v2.0.10、v2.0.11

最新 2.0 稳定版本,可用于生产环境。

2.1 版本

v2.1.1 ~ v2.1.6

最新 2.1 稳定版本,可用于生产环境(建议)。

3.0 版本

v3.0.0-beta、v3.0.0-beta.1

目前是 beta 版本,不建议用于生产环境。

latest 版本

None

包含最新特性,每日更新,不建议用于生产环境。

 

4.2 : 下载安装 tidb-ansible

使用以下命令从 Github TiDB Ansible 项目上下载 TiDB Ansible 相应版本,默认的文件夹名称为 tidb-ansible。 --官方文档:

 

注意:

部署和升级 TiDB 集群需使用对应的 tidb-ansible 版本,通过改 inventory.ini 文件中的版本来混用可能会产生一些错误。

 

-----------------------------------------

  • 下载指定 tag 的 tidb-ansible:

git clone -b $tag https://github.com/pingcap/tidb-ansible.git

 

  • 下载 latest 版本对应的 tidb-ansible:

git clone https://github.com/pingcap/tidb-ansible.git

--------------------------- (忽略)

 

  1. 执行 local_prepare.yml playbook,联网下载 TiDB binary 到下载机

$ cd tidb-ansible && ansible-playbook local_prepare.yml

 

  1. 将执行完以上命令之后的 tidb-ansible 文件夹拷贝到中控机 /data/tidb 目录下,文件属主权限需是 tidb 用户。

 

4.3 : 如果前面没有手工配置ssh 互信及sudo 规则,那么这里是最后一次了,通过tidb 配置

1): 以 tidb 用户登录中控机,将你的部署目标机器 IP 添加到 hosts.ini 文件 [servers] 区块下。

 

2): 编辑 tidb-ansible 下的hosts.ini 文件:

[tidb@tidb-cluster ~]$ cd /data/tidb/

[tidb@tidb-cluster tidb]$ ls

deploy tidb-ansible

[tidb@tidb-cluster tidb]$ cd tidb-ansible/

[tidb@tidb-cluster tidb-ansible]$ pwd

/data/tidb/tidb-ansible

[tidb@tidb-cluster tidb-ansible]$ vim hosts.ini

[servers] ## 所有节点包括 中控节点。

10.0.77.5

10.0.77.6

10.0.77.10

10.0.77.11

10.0.25.5

10.0.25.6

192.168.41.22

192.168.41.27

192.168.41.13

 

[all:vars]

username = tidb ## 这里的用户可以自定义,这里就使用default tidb users。

ntp_server = pool.ntp.org ## 默认即可。

 

3): 执行以下命令,按提示输入部署目标机的root 用户密码,该步骤将在所有部署机器Node 上 创建tidb用户,并配置sudo 规则,配置中控机与部署目标机器之间的ssh 等效性互信通道。

ps: 这里所有的root 最好一直,之后可以自定义修改不一致,否然不通过。

 

--中控机,tidb用户下执行名利, 执行后,需输入root 密码

$ ansible-playbook -i hosts.ini create_users.yml -u root -k

 

(手工配置 ssh 互信及 sudo 免密码可参考如何手工配置 ssh 互信及 sudo 免密码。)

(https://pingcap.com/docs-cn/v3.0/how-to/deploy/orchestrated/ansible/#%E5%A6%82%E4%BD%95%E6%89%8B%E5%B7%A5%E9%85%8D%E7%BD%AE-ssh-%E4%BA%92%E4%BF%A1%E5%8F%8A-sudo-%E5%85%8D%E5%AF%86%E7%A0%81)

#####

[tidb@tidb-cluster tidb-ansible]$ ansible-p

ansible-playbook ansible-playbook-2 ansible-playbook-2.7 ansible-pull ansible-pull-2 ansible-pull-2.7

[tidb@tidb-cluster tidb-ansible]$ ansible-playbook

ansible-playbook ansible-playbook-2 ansible-playbook-2.7

[tidb@tidb-cluster tidb-ansible]$ cat create_users.yml

---

 

- hosts: all

tasks:

- name: create user

user: name={{ username }} shell=/bin/bash createhome=yes

 

- name: set authorized key

authorized_key:

user: "{{ username }}"

key: "{{ lookup('file', '/home/{{ username }}/.ssh/id_rsa.pub') }}"

state: present

 

- name: update sudoers file

lineinfile:

dest: /etc/sudoers

insertafter: EOF

line: '{{ username }} ALL=(ALL) NOPASSWD: ALL'

regexp: '^{{ username }} .*'

state: present

[tidb@tidb-cluster tidb-ansible]$ cat hosts.ini

[servers]

10.0.77.5

10.0.77.6

10.0.77.10

10.0.77.11

10.0.25.5

10.0.25.6

192.168.41.22

192.168.41.27

192.168.41.13

 

[all:vars]

username = tidb

ntp_server = pool.ntp.org

####

4. 4 : NTP 服务验证

 

验证NTP服务是否满足要求

如果你的部署目标机器时间、时区设置一致,已开启 NTP 服务且在正常同步时间,此步骤可忽略。

执行以下命令输出 running 表示 NTP 服务正在运行:

$ systemctl status ntpd.service

ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled) Active: active (running) since 一 2017-12-18 13:13:19 CST; 3s ago

执行 ntpstat 命令,输出 synchronised to NTP server(正在与 NTP server 同步)表示在正常同步:

[root@tidb-cluster ~]# ntpstat

synchronised to NTP server (192.168.0.188) at stratum 3

time correct to within 129 ms

polling server every 1024 s

######

使用以下命令可使 NTP 服务尽快开始同步,pool.ntp.org 可替换为你的 NTP server:

sudo systemctl stop ntpd.service && \ sudo ntpdate pool.ntp.org && \ sudo systemctl start ntpd.service

在 CentOS 7 系统上执行以下命令,可手工安装 NTP 服务:

sudo yum install ntp ntpdate && \ sudo systemctl start ntpd.service && \ sudo systemctl enable ntpd.service

#######

 

4.5 : 在部署的目标机上(各node节点),配置CPU freq调节器模式。

-- 必须

为了让 CPU 发挥最大性能,请将 CPUfreq 调节器模式设置为 performance 模式。

你可以通过 cpupower 命令查看系统支持的调节器模式:

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/power_management_guide/cpufreq_governors#cpufreq_setup

(cpufreq 官方文档)

 

$ cpupower frequency-info --governors

analyzing CPU 0:

available cpufreq governors: performance powersave

本例中系统支持设置 performance 和 powersave 模式。如果返回 “Not Available”,表示当前系统不支持配置 CPUfreq,跳过该步骤即可。

 

$cpupower frequency-info --governors

analyzing CPU 0:

available cpufreq governors: Not Available

你可以通过 cpupower 命令查看系统当前的 CPUfreq 调节器模式:

 

$cpupower frequency-info --policy

analyzing CPU 0:

current policy: frequency should be within 1.20 GHz and 3.20 GHz.

The governor "powersave" may decide which speed to use

within this range.

本例中当前配置是 powersave 模式,你可以通过以下命令设置为 performance 模式。

 

$ cpupower frequency-set --governor performance

你也可以通过以下命令在部署目标机器上批量设置:

 

$ ansible -i hosts.ini all -m shell -a "cpupower frequency-set --governor performance" -u tidb -b

 

 

4.6 : 对应数据盘挂载, 官方文档 推荐使用ext4 的, 我这里直接使用的xfs , 安装完成,未发现异常(Server version: 5.7.25-TiDB-v2.1.17 MySQL Community Server (Apache License 2.0))

-- 这一步 执行操作:

--> 在部署目标机器上添加数据盘 ext4 文件系统挂载参数

--> 部署目标机器数据盘请格式化成 ext4 文件系统,挂载时请添加 nodelalloc 和 noatime 挂载参数。nodelalloc 是必选参数,否则 Ansible 安装时检测无法通过,noatime 是可选建议参数。

 

如果你的数据盘已经格式化成 ext4 并挂载,可先执行 umount 命令卸载,从编辑 /etc/fstab 文件步骤开始执行,添加挂载参数重新挂载即可。

 

umount /dev/nvme0n1

下面以 /dev/nvme0n1 数据盘为例:

 

查看数据盘

fdisk -l

Disk /dev/nvme0n1: 1000 GB

 

创建分区表

parted -s -a optimal /dev/nvme0n1 mklabel gpt -- mkpart primary ext4 1 -1

 

格式化文件系统

mkfs.ext4 /dev/nvme0n1

查看数据盘分区 UUID,本例中 nvme0n1 的 UUID 为 c51eb23b-195c-4061-92a9-3fad812cc12f。

 

lsblk -f

NAME FSTYPE LABEL UUID MOUNTPOINT

sda

├─sda1 ext4 237b634b-a565-477b-8371-6dff0c41f5ab /boot

├─sda2 swap f414c5c0-f823-4bb1-8fdf-e531173a72ed

└─sda3 ext4 547909c1-398d-4696-94c6-03e43e317b60 /

sr0

nvme0n1 ext4 c51eb23b-195c-4061-92a9-3fad812cc12f\

 

编辑 /etc/fstab 文件,添加 nodelalloc 挂载参数

vi /etc/fstab

UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatime 0 2

 

挂载数据盘

mkdir /data1 && \

mount -a

 

执行以下命令,如果文件系统为 ext4,并且挂载参数中包含 nodelalloc 表示生效:

mount -t ext4

/dev/nvme0n1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered)

 

####

备注:

默认的方式下linux会把文件访问的时间atime做记录,文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳,比如:文件创建时间、最近一次修改时间和最近一次访问时间;这在绝大部分的场合都是没有必要的。 因为系统运行的时候要访问大量文件,如果能减少一些动作(比如减少时间戳的记录次数等)将会显著提高磁盘 IO 的效率、提升文件系统的性能。 如果遇到机器IO负载高或是CPU WAIT高的情况,可以尝试使用noatime和nodiratime禁止记录最近一次访问时间戳。

修改/etc/fstab中

UUID="4231b126-7e67-45c4-b8bf-554006291d35" /sdb_mnt xfs defaults 0 2

UUID="4231b126-7e67-45c4-b8bf-554006291d35" /sdb_mnt xfs defaults,noatime 0 2

修改后重新挂载

mount -o remount /sdb_mnt

或者手动临时挂载

mount -o noatime -o nodiratime -o remount /sdb_mnt

--> 详见 文档:《文件系统挂载选项nodiratime、noatime》

####

 

4.7 分配机器资源,编辑inventory.ini 文件

#####

分配机器资源,编辑 inventory.ini 文件

以 tidb 用户登录中控机,inventory.ini 文件路径为 /home/tidb/tidb-ansible/inventory.ini。

 

注意:

 

请使用内网 IP 来部署集群,如果部署目标机器 SSH 端口非默认 22 端口,需添加 ansible_port 变量,如 TiDB1 ansible_host=172.16.10.1 ansible_port=5555。

 

标准 TiDB 集群需要 6 台机器:

 

2 个 TiDB 节点

3 个 PD 节点

3 个 TiKV 节点,第一台 TiDB 机器同时用作监控机

默认情况下,单台机器上只需部署一个 TiKV 实例。如果你的 TiKV 部署机器 CPU 及内存配置是部署建议的两倍或以上,并且拥有两块 SSD 硬盘或单块容量超 2T 的 SSD 硬盘,可以考虑部署两实例,但不建议部署两个以上实例。

 

单机单 TiKV 实例集群拓扑

Name Host IP Services

node1 172.16.10.1 PD1, TiDB1

node2 172.16.10.2 PD2, TiDB2

node3 172.16.10.3 PD3

node4 172.16.10.4 TiKV1

node5 172.16.10.5 TiKV2

node6 172.16.10.6 TiKV3

[tidb_servers]

172.16.10.1

172.16.10.2

 

[pd_servers]

172.16.10.1

172.16.10.2

172.16.10.3

 

[tikv_servers]

172.16.10.4

172.16.10.5

172.16.10.6

 

[monitoring_servers]

172.16.10.1

 

[grafana_servers]

172.16.10.1

 

[monitored_servers]

172.16.10.1

172.16.10.2

172.16.10.3

172.16.10.4

172.16.10.5

172.16.10.6

单机多 TiKV 实例集群拓扑

以两实例为例:

 

Name Host IP Services

node1 172.16.10.1 PD1, TiDB1

node2 172.16.10.2 PD2, TiDB2

node3 172.16.10.3 PD3

node4 172.16.10.4 TiKV1-1, TiKV1-2

node5 172.16.10.5 TiKV2-1, TiKV2-2

node6 172.16.10.6 TiKV3-1, TiKV3-2

[tidb_servers]

172.16.10.1

172.16.10.2

 

[pd_servers]

172.16.10.1

172.16.10.2

172.16.10.3

 

# 注意:要使用 TiKV 的 labels,必须同时配置 PD 的 location_labels 参数,否则 labels 设置不生效。

[tikv_servers]

TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy tikv_port=20171 labels="host=tikv1"

TiKV1-2 ansible_host=172.16.10.4 deploy_dir=/data2/deploy tikv_port=20172 labels="host=tikv1"

TiKV2-1 ansible_host=172.16.10.5 deploy_dir=/data1/deploy tikv_port=20171 labels="host=tikv2"

TiKV2-2 ansible_host=172.16.10.5 deploy_dir=/data2/deploy tikv_port=20172 labels="host=tikv2"

TiKV3-1 ansible_host=172.16.10.6 deploy_dir=/data1/deploy tikv_port=20171 labels="host=tikv3"

TiKV3-2 ansible_host=172.16.10.6 deploy_dir=/data2/deploy tikv_port=20172 labels="host=tikv3"

 

# 部署 3.0 版本的 TiDB 集群时,多实例场景需要额外配置 status 端口,示例如下:

# TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy tikv_port=20171 tikv_status_port=20181 labels="host=tikv1"

# TiKV1-2 ansible_host=172.16.10.4 deploy_dir=/data2/deploy tikv_port=20172 tikv_status_port=20182 labels="host=tikv1"

# TiKV2-1 ansible_host=172.16.10.5 deploy_dir=/data1/deploy tikv_port=20171 tikv_status_port=20181 labels="host=tikv2"

# TiKV2-2 ansible_host=172.16.10.5 deploy_dir=/data2/deploy tikv_port=20172 tikv_status_port=20182 labels="host=tikv2"

# TiKV3-1 ansible_host=172.16.10.6 deploy_dir=/data1/deploy tikv_port=20171 tikv_status_port=20181 labels="host=tikv3"

# TiKV3-2 ansible_host=172.16.10.6 deploy_dir=/data2/deploy tikv_port=20172 tikv_status_port=20182 labels="host=tikv3"

 

[monitoring_servers]

172.16.10.1

 

[grafana_servers]

172.16.10.1

 

[monitored_servers]

172.16.10.1

172.16.10.2

172.16.10.3

172.16.10.4

172.16.10.5

172.16.10.6

 

# 注意:为使 TiKV 的 labels 设置生效,部署集群时必须设置 PD 的 location_labels 参数。

[pd_servers:vars]

location_labels = ["host"]

服务配置文件参数调整

 

多实例情况下,需要修改 tidb-ansible/conf/tikv.yml 中 block-cache-size 下面的 capacity 参数:

 

storage:

block-cache:

capacity: "1GB"

注意:

 

TiKV 实例数量指每个服务器上 TiKV 的进程数量。

 

推荐设置:capacity = MEM_TOTAL * 0.5 / TiKV 实例数量

 

多实例情况下,需要修改 tidb-ansible/conf/tikv.yml 中 high-concurrency、normal-concurrency 和 low-concurrency 三个参数:

 

readpool:

coprocessor:

# Notice: if CPU_NUM > 8, default thread pool size for coprocessors

# will be set to CPU_NUM * 0.8.

# high-concurrency: 8

# normal-concurrency: 8

# low-concurrency: 8

注意:

 

推荐配置:TiKV 实例数量 * 参数值 = CPU 核心数量 * 0.8

 

如果多个 TiKV 实例部署在同一块物理磁盘上,需要修改 conf/tikv.yml 中的 capacity 参数:

 

raftstore:

capacity: 0

注意:

 

推荐配置:capacity = 磁盘总容量 / TiKV 实例数量,例如:capacity: "100GB"。

 

inventory.ini 变量调整

部署目录调整

部署目录通过 deploy_dir 变量控制,默认全局变量已设置为 /home/tidb/deploy,对所有服务生效。如数据盘挂载目录为 /data1,可设置为 /data1/deploy,样例如下:

 

## Global variables

[all:vars]

deploy_dir = /data1/deploy

如为某一服务单独设置部署目录,可在配置服务主机列表时配置主机变量,以 TiKV 节点为例,其他服务类推,请务必添加第一列别名,以免服务混布时混淆。

 

TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy

其他变量调整

注意:

 

以下控制变量开启请使用首字母大写 True,关闭请使用首字母大写 False。

####

 

本次测试部署单机单实例(tikv):

参数如下:

 

###

[tidb@tidb-cluster tidb-ansible]$ cat inventory.ini

## TiDB Cluster Part

[tidb_servers] # tidb server 2个实例

10.0.77.11

10.0.25.5

 

[tikv_servers] #TIKV server 3个实例

10.0.77.5

10.0.77.6

10.0.77.10

 

[pd_servers] #pd server 3个实例

192.168.41.22

192.168.41.27

192.168.41.13

 

[spark_master] # 未配置,为空

 

[spark_slaves] # 未配置,为空

 

[lightning_server] # 未配置,为空

 

[importer_server] # 未配置,为空

 

## Monitoring Part

# prometheus and pushgateway servers

[monitoring_servers] # 使用中控机替代

10.0.25.6

 

[grafana_servers] # 使用中控机替代

10.0.25.6

 

# node_exporter and blackbox_exporter servers

[monitored_servers] # 所有节点及server

10.0.77.5

10.0.77.6

10.0.77.10

10.0.77.11

10.0.25.5

10.0.25.6

192.168.41.22

192.168.41.27

192.168.41.13

 

 

[alertmanager_servers] # 管理节点 ,使用中控机替代。

10.0.25.6

 

[kafka_exporter_servers]

 

## Binlog Part

[pump_servers]

 

[drainer_servers]

 

## Group variables

[pd_servers:vars]

# location_labels = ["zone","rack","host"]

 

## Global variables

[all:vars]

#deploy_dir = /home/tidb/deploy

deploy_dir = /data/tidb/deploy

 

## Connection

# ssh via normal user

ansible_user = tidb

 

cluster_name = test-cluster

 

tidb_version = v2.1.17

 

# process supervision, [systemd, supervise]

process_supervision = systemd

 

timezone = Asia/Shanghai

 

enable_firewalld = False

# check NTP service

enable_ntpd = True

set_hostname = False

 

## binlog trigger

enable_binlog = False

 

# kafka cluster address for monitoring, example:

# kafka_addrs = "192.168.0.11:9092,192.168.0.12:9092,192.168.0.13:9092"

kafka_addrs = ""

 

# zookeeper address of kafka cluster for monitoring, example:

# zookeeper_addrs = "192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181"

zookeeper_addrs = ""

 

# enable TLS authentication in the TiDB cluster

enable_tls = False

 

# KV mode

deploy_without_tidb = False

 

# Optional: Set if you already have a alertmanager server.

# Format: alertmanager_host:alertmanager_port

alertmanager_target = ""

 

grafana_admin_user = "admin"

grafana_admin_password = "admin"

 

 

### Collect diagnosis

collect_log_recent_hours = 2

 

enable_bandwidth_limit = True

# default: 10Mb/s, unit: Kbit/s

collect_bandwidth_limit = 10000

 

###

具体参数详解:

变量

含义

cluster_name

集群名称,可调整

tidb_version

TiDB 版本,TiDB Ansible 各分支默认已配置

process_supervision

进程监管方式,默认为 systemd,可选 supervise

timezone

新安装 TiDB 集群第一次启动 bootstrap(初始化)时,将 TiDB 全局默认时区设置为该值。TiDB 使用的时区后续可通过 time_zone 全局变量和 session 变量来修改,参考时区支持。 默认为 Asia/Shanghai,可选值参考 timzone 列表。

enable_firewalld

开启防火墙,默认不开启,如需开启,请将部署建议-网络要求 中的端口加入白名单

enable_ntpd

检测部署目标机器 NTP 服务,默认为 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 设置为空。

alertmanager_target

可选:如果你已单独部署 alertmanager,可配置该变量,格式:alertmanager_host:alertmanager_port

grafana_admin_user

Grafana 管理员帐号用户名,默认为 admin

grafana_admin_password

Grafana 管理员帐号密码,默认为 admin,用于 Ansible 导入 Dashboard 和创建 API Key,如后期通过 grafana web 修改了密码,请更新此变量

collect_log_recent_hours

采集日志时,采集最近几个小时的日志,默认为 2 小时

enable_bandwidth_limit

在中控机上从部署目标机器拉取诊断数据时,是否限速,默认为 True,与 collect_bandwidth_limit 变量结合使用

collect_bandwidth_limit

在中控机上从部署目标机器拉取诊断数据时限速多少,单位: Kbit/s,默认 10000,即 10Mb/s,如果是单机多 TiKV 实例部署方式,需除以单机实例个数

prometheus_storage_retention

Prometheus 监控数据的保留时间(默认为 30 天);2.1.7、3.0 以及之后的 tidb-ansible 版本中,group_vars/monitoring_servers.yml 文件里新增的配置

 

 

4.8 部署任务 (中控机下)检测是否通过。

ansible-playbook 执行 Playbook 时默认并发为 5,部署目标机器较多时可添加 -f 参数指定并发,如 ansible-playbook deploy.yml -f 10

 

1),确认 tidb-ansible/inventory.ini 文件中 ansible_user = tidb,本例使用 tidb 用户作为服务运行用户,配置如下:

 

ansible_user 不要设置成 root 用户,tidb-ansible 限制了服务以普通用户运行。

 

## Connection

# ssh via normal user

ansible_user = tidb

 

2),执行以下命令如果所有 server 返回 tidb 表示 ssh 互信配置成功。

$ ansible -i inventory.ini all -m shell -a 'whoami'

 

3),执行以下命令如果所有 server 返回 root 表示 tidb 用户 sudo 免密码配置成功。

$ ansible -i inventory.ini all -m shell -a 'whoami' -b

 

4),执行 local_prepare.yml playbook,联网下载 TiDB binary 到中控机:

$ ansible-playbook local_prepare.yml

 

5),初始化系统环境,修改内核参数

$ ansible-playbook bootstrap.yml

 

 

 

4.9 安装启动 TiDB 集群软件

-- 安装tidb 软件。

$ ansible-playbook deploy.yml

 

注意:

Grafana Dashboard 上的 Report 按钮可用来生成 PDF 文件,此功能依赖 fontconfig 包和英文字体。如需使用该功能,登录 grafana_servers 机器,用以下命令安装:

sudo yum install fontconfig open-sans-fonts

 

-- 启动TiDB 软件。

$ ansible-playbook start.yml

 

 

4.10 ,测试连接:

测试集群

测试连接 TiDB 集群,推荐在 TiDB 前配置负载均衡来对外统一提供 SQL 接口。

 

使用 MySQL 客户端连接测试,TCP 4000 端口是 TiDB 服务默认端口。

mysql -u root -h 172.16.10.1 -P 4000

 

### 连接结果 ###

### 通过mysql 客户端 登陆测试:

 

tidb1 登陆:

[mysql@tidb09 ~]$ /usr/local/mysql-5.7.25/bin/mysql -uroot -h 10.0.77.11 -P4000

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 200

Server version: 5.7.25-TiDB-v2.1.17 MySQL Community Server (Apache License 2.0)

 

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql> show processlist;

+------+------+---------------+------+---------+------+-------+------------------+------+

| Id | User | Host | db | Command | Time | State | Info | Mem |

+------+------+---------------+------+---------+------+-------+------------------+------+

| 200 | root | 192.168.41.24 | NULL | Query | 0 | 2 | show processlist | 0 |

+------+------+---------------+------+---------+------+-------+------------------+------+

1 row in set (0.00 sec)

mysql>

 

tidb2登陆:

[mysql@tidb09 ~]$ /usr/local/mysql-5.7.25/bin/mysql -uroot -h 10.0.25.5 -P4000

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 208

Server version: 5.7.25-TiDB-v2.1.17 MySQL Community Server (Apache License 2.0)

 

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql> show processlist;

+------+------+---------------+------+---------+------+-------+------------------+------+

| Id | User | Host | db | Command | Time | State | Info | Mem |

+------+------+---------------+------+---------+------+-------+------------------+------+

| 208 | root | 192.168.41.24 | NULL | Query | 0 | 2 | show processlist | 0 |

+------+------+---------------+------+---------+------+-------+------------------+------+

1 row in set (0.00 sec)

 

#####

 

4.11 ,通过浏览器访问监控平台。(ganafa 监控)

地址:http://XXX.XXX.XXX.XXX:3000 默认帐号密码是:admin/admin

-- 这里的IP 和inventory.ini 配置文件中的参数一一对应。

 

 

 

 

 

截止于此: TiDB Cluster 安装部署完成

-------------- The End -----------

 

 

###############################################

常见部署问题

如何自定义端口

修改 inventory.ini 文件,在相应服务 IP 后添加以下主机变量即可:

组件

端口变量

默认端口

说明

TiDB

tidb_port

4000

应用及 DBA 工具访问通信端口

TiDB

tidb_status_port

10080

TiDB 状态信息上报通信端口

TiKV

tikv_port

20160

TiKV 通信端口

TiKV

tikv_status_port

20180

上报 TiKV 状态的通信端口

PD

pd_client_port

2379

提供 TiDB 和 PD 通信端口

PD

pd_peer_port

2380

PD 集群节点间通信端口

Pump

pump_port

8250

Pump 通信端口

Prometheus

prometheus_port

9090

Prometheus 服务通信端口

Pushgateway

pushgateway_port

9091

TiDB, TiKV, PD 监控聚合和上报端口

Node_exporter

node_exporter_port

9100

TiDB 集群每个节点的系统信息上报通信端口

Blackbox_exporter

blackbox_exporter_port

9115

Blackbox_exporter 通信端口,用于 TiDB 集群端口监控

Grafana

grafana_port

3000

Web 监控服务对外服务和客户端(浏览器)访问端口

Grafana

grafana_collector_port

8686

grafana_collector 通信端口,用于将 Dashboard 导出为 PDF 格式

Kafka_exporter

kafka_exporter_port

9308

Kafka_exporter 通信端口,用于监控 binlog Kafka 集群

 

###############################################

如何自定义部署目录

修改 inventory.ini 文件,在相应服务 IP 后添加以下主机变量即可:

组件

目录变量

默认目录

说明

全局

deploy_dir

/home/tidb/deploy

部署目录

TiDB

tidb_log_dir

{{ deploy_dir }}/log

日志目录

TiKV

tikv_log_dir

{{ deploy_dir }}/log

日志目录

TiKV

tikv_data_dir

{{ deploy_dir }}/data

数据目录

TiKV

wal_dir

””

rocksdb write-ahead 日志目录,为空时与 TiKV 数据目录一致

TiKV

raftdb_path

””

raftdb 目录,为空时为 tikv_data_dir/raft

PD

pd_log_dir

{{ deploy_dir }}/log

日志目录

PD

pd_data_dir

{{ deploy_dir }}/data.pd

数据目录

pump

pump_log_dir

{{ deploy_dir }}/log

日志目录

pump

pump_data_dir

{{ deploy_dir }}/data.pump

数据目录

prometheus

prometheus_log_dir

{{ deploy_dir }}/log

日志目录

prometheus

prometheus_data_dir

{{ deploy_dir }}/data.metrics

数据目录

pushgateway

pushgateway_log_dir

{{ deploy_dir }}/log

日志目录

node_exporter

node_exporter_log_dir

{{ deploy_dir }}/log

日志目录

grafana

grafana_log_dir

{{ deploy_dir }}/log

日志目录

grafana

grafana_data_dir

{{ deploy_dir }}/data.grafana

数据目录

 

################################################

如何检测 NTP 服务是否正常

执行以下命令输出 running 表示 NTP 服务正在运行:

$ sudo systemctl status ntpd.service

ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled) Active: active (running) since 一 2017-12-18 13:13:19 CST; 3s ago

执行 ntpstat 命令,输出 synchronised to NTP server(正在与 NTP server 同步)表示在正常同步:

$ ntpstat

synchronised to NTP server (85.199.214.101) at stratum 2 time correct to within 91 ms polling server every 1024 s

注意:

Ubuntu 系统需安装 ntpstat 软件包。

以下情况表示 NTP 服务未正常同步:

ntpstat

unsynchronised

以下情况表示 NTP 服务未正常运行:

ntpstat

Unable to talk to NTP daemon. Is it running?

使用以下命令可使 NTP 服务尽快开始同步,pool.ntp.org 可替换为你的 NTP server:

sudo systemctl stop ntpd.service && \ sudo ntpdate pool.ntp.org && \ sudo systemctl start ntpd.service

在 CentOS 7 系统上执行以下命令,可手工安装 NTP 服务:

sudo yum install ntp ntpdate && \ sudo systemctl start ntpd.service && \ sudo systemctl enable ntpd.service

 

####################################################

如何调整进程监管方式从 supervise 到 systemd

# process supervision, [systemd, supervise] process_supervision = systemd

TiDB-Anisble 在 TiDB v1.0.4 版本之前进程监管方式默认为 supervise, 之前安装的集群可保持不变,如需更新为 systemd,需关闭集群按以下方式变更:

ansible-playbook stop.yml ansible-playbook deploy.yml -D ansible-playbook start.yml

 

 

#####################################################

如何手工配置 ssh 互信及 sudo 免密码 ( 约)

 

 

######################################################

You need to install jmespath prior to running json_query filter 报错

请参照 在中控机器上安装 Ansible 及其依赖 在中控机上通过 pip 安装 Ansible 及相关依赖的指定版本,默认会安装 jmespath。

####

在中控机器上安装 Ansible 及其依赖

以 tidb 用户登录中控机,请务必按以下方式通过 pip 安装 Ansible 及其相关依赖的指定版本,否则会有兼容问题。安装完成后,可通过 ansible --version 查看 Ansible 版本。目前 release-2.0、release-2.1 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 tidb-ansible/requirements.txt 文件中。

$ cd /home/tidb/tidb-ansible && \ $ sudo pip install -r ./requirements.txt && \ $ ansible --version

ansible 2.5.0

####

 

可通过以下命令验证 jmespath 是否安装成功:

$ pip show jmespath

Name: jmespath Version: 0.9.0

在中控机上 python 交互窗口里 import jmespath,如果没有报错,表示依赖安装成功,如果有 ImportError: No module named jmespath 报错,表示未安装 python jmespath 模块。

$ python

Python 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import jmespath

 

###################################################

启动 Pump/Drainer 报 zk: node does not exist 错误

请检查 inventory.ini 里的 zookeeper_addrs 参数配置与 Kafka 集群内的配置是否相同、是否填写了命名空间。关于命名空间的配置说明如下:

# ZooKeeper connection string (see ZooKeeper docs for details). # ZooKeeper address of Kafka cluster, example: # zookeeper_addrs = "192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181" # You can also append an optional chroot string to the URLs to specify the root directory for all Kafka znodes. Example: # zookeeper_addrs = "192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181/kafka/123"

 

 

############

TiDB Ansible 常见的运维操作:

############

 

启动集群

此操作会按顺序启动整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。

$ ansible-playbook start.yml

 

关闭集群

此操作会按顺序关闭整个 TiDB 集群所有组件(包括 PD、TiDB、TiKV 等组件和监控组件)。

$ ansible-playbook stop.yml

 

清除集群数据

此操作会关闭 TiDB、Pump、TiKV、PD 服务,并清空 Pump、TiKV、PD 数据目录。

$ ansible-playbook unsafe_cleanup_data.yml

 

销毁集群

此操作会关闭集群,并清空部署目录,若部署目录为挂载点,会报错,可忽略

$ ansible-playbook unsafe_cleanup.yml

 

 

#####################################################

变更组件配置

  1. 更新组件配置模板

TiDB 集群组件配置模板存储在 /home/tidb/tidb-ansible/conf 文件夹下。

组件

配置文件模板名

TiDB

tidb.yml

TiKV

tikv.yml

PD

pd.yml

默认配置项是注释状态,使用默认值。如果需要修改,需取消注释,即去除 #,修改对应参数值。配置模板使用 yaml 格式,注意参数名及参数值之间使用 : 分隔,缩进为两个空格。

如修改 TiKV 配置中 high-concurrency、normal-concurrency 和 low-concurrency 三个参数为 16:

readpool: coprocessor: # Notice: if CPU_NUM > 8, default thread pool size for coprocessors # will be set to CPU_NUM * 0.8. high-concurrency: 16 normal-concurrency: 16 low-concurrency: 16

 

 

##################################################

 

你可能感兴趣的:(㊣,Mysql-Cluster,㊣)