参照官方教程 https://learn.pingcap.com/learner/course/30002
本次部署TIDB 共包含1个TIDB,3个PD,3个TIKV
Linux版本 CentOS-7-x86_64-Minimal-2009.iso
TiDB版本v1.5.4
虚拟机环境配置:
这里记得把网络打开 ,自动配置就好,不然一会装好了还得单配置网卡信息
安装tiup
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
生效全局变量
source /root/.bash_profile
安装cluster组件
tiup cluster
更新tiup工具 以及 cluster组件
tiup update --self && tiup update cluster
查看版本
tiup --binary cluster
生成集群拓扑文件
tiup cluster template > topology.yaml
修改集群节点 vi topology.yaml
Tiflash 目前没有,就先注释了
配置完后 系统检查一下
tiup cluster check ./topology.yaml --apply --user root -p
好多问题啊 红色的全是检查不通过的
用这个手册配置一下,这个是装好系统后需要配置的,我试试不配能不能行,果然不行,检查不通过,还是老老实实配一下吧TiDB Environment and System Configuration Check | PingCAP Docshttps://docs.pingcap.com/tidb/stable/check-before-deployment
一.在部署 TiKV 的目标机器上使用选项挂载数据盘 ext4 文件系统
查看数据盘
fdisk -l
创建分区
parted -s -a optimal /dev/nvme0n1 mklabel gpt -- mkpart primary ext4 1 -1
这个由于只有一块磁盘,每次分区的时候总提示正在使用 无法分区,然后又加了一块磁盘 sdb 给sdb格式化就好了
parted -s -a optimal /dev/sdb mklabel gpt -- mkpart primary ext4 1 -1
虚拟机添加sdb磁盘如下:
将数据盘格式化为ext4文件系统
mkfs.ext4 /dev/sdb
查看数据盘的分区UUID
lsblk -f
编辑/etc/fstab文件并添加nodelalloc挂载选项
vi /etc/fstab
挂载数据盘
mkdir /data1 && \
mount -a
使用以下命令检查
mount -t ext4
二.检查并禁用系统交换
echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a && swapon -a
sysctl -p
三.检查并停止目标机器的防火墙服务
检查防火墙状态
sudo firewall-cmd --state
sudo systemctl status firewalld.service
停止防火墙服务
sudo systemctl stop firewalld.service
禁用防火墙服务的自动启动
sudo systemctl disable firewalld.service
检查防火墙状态
sudo systemctl status firewalld.service
四.检查并安装NTP服务
手动安装NTP服务
sudo yum install ntp ntpdate && \
sudo systemctl start ntpd.service && \
sudo systemctl enable ntpd.service
检查NTP服务是否安装,与NTP服务器同步是否正常
运行以下命令。如果返回running,则 NTP 服务正在运行
sudo systemctl status ntpd.service
执行ntpstat命令检查NTP服务是否与NTP服务器同步
ntpstat
五.检查和配置操作系统的最佳参数
执行以下命令查看THP是开启还是关闭:
cat /sys/kernel/mm/transparent_hugepage/enabled
如果[always] madvise never
是输出,则启用 THP。你需要禁用它
执行以下命令可以查看数据目录所在磁盘的I/O Scheduler。假设您在 sdb 和 sdc 磁盘上都创建了数据目录:
cat /sys/block/sd[bc]/queue/scheduler
如果noop [deadline] cfq
是输出,则磁盘的 I/O 调度程序处于deadline
模式。您需要将其更改为noop
执行以下命令查看ID_SERIAL磁盘
udevadm info --name=/dev/sdb | grep ID_SERIAL
E: ID_SERIAL=36d0946606d79f90025f3e09a0c1f9e81
E: ID_SERIAL_SHORT=6d0946606d79f90025f3e09a0c1f9e81
这个在我都虚拟机上是查不出来的
执行以下命令查看cpufreq模块的电源策略
cpupower frequency-info --policy
配置操作系统的最佳参数
tuned-adm list
创建一个新的调整配置文件
mkdir /etc/tuned/virtual-guest-tidb-optimal/
vi /etc/tuned/virtual-guest-tidb-optimal/tuned.conf
[main]
include=virtual-guest
[cpu]
governor=performance
[vm]
transparent_hugepages=never
[disk]
devices_udev_regex=(ID_SERIAL=36d0946606d79f90025f3e09a0c1fc035)|(ID_SERIAL=36d0946606d79f90025f3e09a0c1f9e81) 这个不清楚怎么才能查到 这里我就不写了 这行删掉
elevator=noop
应用新调整的配置文件
tuned-adm profile virtual-guest-tidb-optimal
执行以下命令以验证 THP 状态
cat /sys/kernel/mm/transparent_hugepage/enabled
执行以下命令验证数据目录所在磁盘的I/O Scheduler
cat /sys/block/sd[bc]/queue/scheduler
执行以下命令查看cpufreq模块的电源策略
cpupower frequency-info --policy
执行以下命令修改sysctl参数
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
执行以下命令配置用户的limits.conf文件
cat << EOF >>/etc/security/limits.conf
tidb soft nofile 1000000
tidb hard nofile 1000000
tidb soft stack 32768
tidb hard stack 32768
EOF
六.手动配置SSH互信和sudo无密码
分别使用root用户账号登录目标机器,创建tidb用户并设置登录密码
useradd tidb && \passwd tidb
要配置不带密码的 sudo,请运行以下命令,并添加tidb ALL=(ALL) NOPASSWD: ALL到文件末尾
visudo
tidb ALL=(ALL) NOPASSWD: ALL
使用tidb用户登录中控机,运行以下命令。替换10.0.1.1为您的目标机器的IP,并tidb根据提示输入目标机器的用户密码。执行该命令后,SSH 互信已经建立。这也适用于其他机器。新创建的tidb用户没有该.ssh目录。要创建这样的目录,请执行生成 RSA 密钥的命令。要在中控机上部署 TiDB 组件,需要为中控机和中控机配置互信
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.1.1
使用tidb用户账号登录中控机,使用登录目标机IP ssh。如果不需要输入密码也能成功登录,则说明SSH互信配置成功。
ssh 10.0.1.1
使用tidb用户登录目标机器后,运行以下命令。如果不需要输入密码,可以切换到root用户,那么sudo无密码tidb用户就配置成功了。
sudo -su root
七.安装numactl工具
登录目标节点进行安装。以 CentOS Linux 7.7.1908 (Core) 版本为例
sudo yum -y install numactl
运行exec命令 usingtiup cluster批量安装
tiup cluster exec --help
说明:要使用 sudo 权限对tidb-test集群中的所有目标机器执行安装命令,请运行以下命令
tiup cluster exec tidb-test --sudo --command "yum -y install numactl"
--------------------------准备工作完结--------------------------
上边这些准备工作做完了,又重新检查一下能否安装,发现还是有问题
一个是swap is enabled 一个是will try to 'start irqbalance.service'
禁用swap:
Vi /etc/fstab
注释掉下面这行
#/dev/mapper/centos-swap swap swap defaults 0 0
临时关闭:
swapoff -a
开启irabalance :
systemctl start irqbalance
这个虚拟机在安装的时候 给的是1核 irqbalance怎么起都起不来,后来又加了1核 就好了 真坑
禁用thp:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
终于检查通过了 真不容易 我的天
根据拓扑文件 部署tidb
tiup cluster deploy tidb-test v5.0.0 ./topology.yaml --user root -p
查看集群信息
tiup cluster list
查看集群状态
tiup cluster display tidb-test
启动tidb
tiup cluster start tidb-test
启动之后再看一下状态 一切正常
参考文档:TiDB 简介 | PingCAP Docs了解 TiDB 数据库。https://docs.pingcap.com/zh/tidb/stable