Technical note
TiDB部署笔记
官网
- https://docs.pingcap.com/zh/tidb/stable/overview
- https://github.com/pingcap/docs-cn/blob/master/config-templates/simple-mini.yaml
磁盘
vi /etc/fstab
UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data ext4 defaults,nodelalloc,noatime 0 2
mkdir /data
mount -a
mount -t ext4
Swap
echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a && swapon -a
sysctl -p
vi /etc/fstab # 注释掉swap一行
swapoff -a
free # 验证
ntp
yum install ntp ntpdate -y
systemctl start ntpd.service
systemctl enable ntpd.service
ntpstat
操作系统优化
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/block/vdc/queue/scheduler
cat /sys/block/vdd/queue/scheduler
udevadm info --name=/dev/vdc | grep ID_SERIAL
udevadm info --name=/dev/vdd | grep ID_SERIAL
cpupower frequency-info --policy
-----------------
tuned-adm list
mkdir /etc/tuned/balanced-tidb-optimal/
vi /etc/tuned/balanced-tidb-optimal/tuned.conf
[main]
include=balanced
[cpu]
governor=performance
[vm]
transparent_hugepages=never
[disk]
devices_udev_regex=(ID_SERIAL=vos-5ef7r1pv)|(ID_SERIAL=vos-od1sacxs)
elevator=noop
tuned-adm profile balanced-tidb-optimal
echo "fs.file-max = 1000000">> /etc/sysctl.conf
echo "net.core.somaxconn = 32768">> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf
echo "vm.overcommit_memory = 1">> /etc/sysctl.conf
sysctl -p
cat << EOF >>/etc/security/limits.conf
tidb soft nofile 1000000
tidb hard nofile 1000000
tidb soft stack 32768
tidb hard stack 32768
EOF
# 禁用透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 安装numactl
yum install numactl -y
# 安装irqbalance
yum install irqbalance -y
systemctl enable irqbalance && systemctl start irqbalance
ssh互信
ssh-copy-id root@10.193.50.17
ssh-copy-id root@10.193.50.18
ssh-copy-id root@10.193.50.19
TiUP
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
which tiup
tiup cluster
tiup update --self && tiup update cluster
tiup --binary cluster
tiup cluster template > topology.yaml
vi topology.yaml
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/data/tidb-deploy"
data_dir: "/data/tidb-data"
pd_servers:
- host: 10.193.50.17
- host: 10.193.50.18
- host: 10.193.50.19
tidb_servers:
- host: 10.193.50.17
- host: 10.193.50.18
- host: 10.193.50.19
tikv_servers:
- host: 10.193.50.17
- host: 10.193.50.18
- host: 10.193.50.19
monitoring_servers:
- host: 10.193.50.17
grafana_servers:
- host: 10.193.50.17
alertmanager_servers:
- host: 10.193.50.17
tiup cluster check ./topology.yaml --user root
tiup cluster check ./topology.yaml --apply --user root
tiup cluster deploy tidb-eip v5.3.0 ./topology.yaml --user root
HaProxy
yum install haproxy -y
vi /etc/haproxy/haproxy.cfg
global # 全局配置。
log 127.0.0.1 local2 # 定义全局的 syslog 服务器,最多可以定义两个。
chroot /var/lib/haproxy # 更改当前目录并为启动进程设置超级用户权限,从而提高安全性。
pidfile /var/run/haproxy.pid # 将 HAProxy 进程的 PID 写入 pidfile。
maxconn 4096 # 单个 HAProxy 进程可接受的最大并发连接数,等价于命令行参数 "-n"。
# nbthread 48 # 最大线程数。线程数的上限与 CPU 数量相同。
user haproxy # 同 UID 参数。
group haproxy # 同 GID 参数,建议使用专用用户组。
daemon # 让 HAProxy 以守护进程的方式工作于后台,等同于命令行参数“-D”的功能。当然,也可以在命令行中用“-db”参数将其禁用。
stats socket /var/lib/haproxy/stats # 统计信息保存位置。
defaults # 默认配置。
log global # 日志继承全局配置段的设置。
retries 2 # 向上游服务器尝试连接的最大次数,超过此值便认为后端服务器不可用。
timeout connect 2s # HAProxy 与后端服务器连接超时时间。如果在同一个局域网内,可设置成较短的时间。
timeout client 30000s # 客户端与 HAProxy 连接后,数据传输完毕,即非活动连接的超时时间。
timeout server 30000s # 服务器端非活动连接的超时时间。
listen admin_stats # frontend 和 backend 的组合体,此监控组的名称可按需进行自定义。
bind 0.0.0.0:8080 # 监听端口。
mode http # 监控运行的模式,此处为 `http` 模式。
option httplog # 开始启用记录 HTTP 请求的日志功能。
maxconn 10 # 最大并发连接数。
stats refresh 30s # 每隔 30 秒自动刷新监控页面。
stats uri /haproxy # 监控页面的 URL。
stats realm HAProxy # 监控页面的提示信息。
stats auth admin:pingcap123 # 监控页面的用户和密码,可设置多个用户名。
stats hide-version # 隐藏监控页面上的 HAProxy 版本信息。
stats admin if TRUE # 手工启用或禁用后端服务器(HAProxy 1.4.9 及之后版本开始支持)。
listen tidb-cluster # 配置 database 负载均衡。
bind 0.0.0.0:3390 # 浮动 IP 和 监听端口。
mode tcp # HAProxy 要使用第 4 层的传输层。
balance leastconn # 连接数最少的服务器优先接收连接。`leastconn` 建议用于长会话服务,例如 LDAP、SQL、TSE 等,而不是短会话协议,如 HTTP。该算法是动态的,对于启动慢的服务器,服务器权重会在运行中作调整。
server tidb-1 10.193.50.17:4000 check inter 2000 rise 2 fall 3 # 检测 4000 端口,检测频率为每 2000 毫秒一次。如果 2 次检测为成功,则认为服务器可用;如果 3 次检测为失败,则认为服务器不可用。
server tidb-2 10.193.50.18:4000 check inter 2000 rise 2 fall 3
server tidb-3 10.193.50.19:4000 check inter 2000 rise 2 fall 3
haproxy -f /etc/haproxy/haproxy.cfg
systemctl enable haproxy
systemctl start haproxy
启动
tiup cluster list
tiup cluster display tidb-eip
tiup cluster start tidb-eip
验证
PD
http://10.193.50.17:2379/dashboard
Grafana
MySQL
mysql -uroot -p -h10.193.50.17 -P3390 select tidb_version()\G