先做tidb准备工作:
部署 TiDB 前的环境检查操作:TiDB 环境与系统配置检查 | PingCAP 文档中心
1.查看数据盘
fdisk -l
(2,3)本人的分区已经是 ext4 文件系统不用分区,具体官方文档的分区:
4.查看数据盘分区 UUID。
lsblk -f
5.编辑 /etc/fstab
文件,添加 nodelalloc
挂载参数
vi /etc/fstab
UUID=49824831-8a3c-41b5-9916-59bd834ca598 /data1 ext4 defaults,nodelalloc,noatime 0 2
6.挂载数据盘
mkdir /data1 && mount -a
7.查看挂载是否正确
mount -t ext4
我的结果跟官方的结果存在差异,缺少nodelalloc,data=ordered多出seclabel:/dev/nvme0n1p1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered)
[root@localhost ~]# mount -t ext4
/dev/mapper/openeuler-root on / type ext4 (rw,relatime,seclabel)
/dev/sda1 on /boot type ext4 (rw,relatime,seclabel)
/dev/mapper/openeuler-root on /data1 type ext4 (rw,noatime,seclabel)
检测及关闭系统 swap
如果在操作系统初始化阶段,已经单独划分了 swap 分区盘,并且启用了 swap,则使用以下命令进行关闭:
echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a
sysctl -p
如果主机内存偏小,关闭系统 swap 可能会更容易触发 OOM 问题,可参考以如下方法将 swap 优先级调低,但不做永久关闭:
echo "vm.swappiness = 0">> /etc/sysctl.conf
sysctl -p
设置 TiDB 节点的临时空间
sudo mkdir /tmp/tidb
sudo chmod -R 777 /tmp/tidb
检测及关闭目标部署机器的防火墙
sudo systemctl status firewalld
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl status firewalld
检测及安装 NTP 服务
sudo systemctl status chronyd
执行 chronyc tracking
命令查看 Chrony 服务是否与 NTP 服务器同步
chronyc tracking
检查和配置操作系统优化参数
1.关闭透明大页
查看:cat /sys/kernel/mm/transparent_hugepage/enabled
关闭:禁用透明大页(THP)
可以通过修改内核参数来禁用透明大页,编辑 /etc/sysctl.conf
文件并添加:
vm.nr_hugepages = 0
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
sudo sysctl -p /etc/sysctl.conf
2.配置系统优化参数
查看当前策略
tuned-adm list
Current active profile: virtual-guest 表示当前操作系统的 tuned 策略使用 virtual-guest
创建新的 tuned 策略:
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=36d0946606d79f90025f3e09a0c1fc035)|(ID_SERIAL=36d0946606d79f90025f3e09a0c1f9e81)
elevator=noop
应用新的 tuned 策略
tuned-adm profile balanced-tidb-optimal
安装 numactl 工具
sudo yum install numactl
手动配置 SSH 互信及 sudo 免密码
略,有需求的看官方文档
------准备工作完成,重启一下服务器reboot,开始安装,部署,真是太麻烦了
reboot
-----重启完可能使用不了tar,需要重新挂载一下
[root@localhost tidb]# mount -o remount,rw /
[root@localhost tidb]# mount -o remount,rw /data1
[root@localhost tidb]# mount -t ext4
/dev/mapper/openeuler-root on / type ext4 (rw,relatime,seclabel,nodelalloc)
/dev/mapper/openeuler-root on /data1 type ext4 (rw,noatime,seclabel,nodelalloc)
通过官方下载页面下载的离线软件包,上传到服务器后执行以下密令安装 TiUP 组件:
tar -zxvf tidb-community-server-v7.1.3-linux-amd64.tar.gz
禁用了遥测,并设置了镜像路径
sh tidb-community-server-v7.1.3-linux-amd64/local_install.sh
加载变量环境
source /root/.bash_profile
下面是tidb-community-toolkit:
解压:
tar -xf tidb-community-toolkit-v7.1.3-linux-amd64.tar.gz
查看文件权限
ls -ld tidb-community-server-v7.1.3-linux-amd64 tidb-community-toolkit-v7.1.3-linux-amd64
进入目录:
cd tidb-community-server-v7.1.3-linux-amd64
将名为 keys
的文件夹复制到 ~/.tiup/
目录下,并保留原始文件夹的属性
cp -rp keys ~/.tiup/
使用 tiup
命令将指定路径下的镜像合并到 TiUP 的镜像列表中
tiup mirror merge ../tidb-community-toolkit-v7.1.3-linux-amd64
执行如下命令,生成集群初始化配置文件:
tiup cluster template > topology.yaml
执行上面密令会出提示,tiup有更新,我们先不管,查看一下tiup的版本,能用就不用更新
tiup --version
打开topology.yaml文件
vi topology.yaml
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb-deploy"
data_dir: "/tidb-data"
listen_host: 0.0.0.0
arch: "amd64"
monitored:
node_exporter_port: 9100
blackbox_exporter_port: 9115
server_configs:
tidb:
log.slow-threshold: 300
tikv:
readpool.storage.use-unified-pool: false
readpool.coprocessor.use-unified-pool: true
pd:
replication.enable-placement-rules: true
replication.location-labels: ["host"]
tiflash:
logger.level: "info"
pd_servers:
- host: 10.9.7.27
tidb_servers:
- host: 10.9.7.27
port: 4000
status_port: 10080
deploy_dir: "/tidb-deploy/tidb-4000"
log_dir: "/tidb-deploy/tidb-4000/log"
tikv_servers:
- host: 10.9.7.27
port: 20160
status_port: 20180
deploy_dir: "/data1/tidb-deploy/tikv-20160"
data_dir: "/data1/tidb-data/tikv-20160"
log_dir: "/data1/tidb-deploy/tikv-20160/log"
config:
server.labels: { host: "logic-host-1" }
- host: 10.9.7.27
port: 20161
status_port: 20181
deploy_dir: "/data2/tidb-deploy/tikv-20161"
data_dir: "/data2/tidb-data/tikv-20161"
log_dir: "/data2/tidb-deploy/tikv-20161/log"
config:
server.labels: { host: "logic-host-2" }
- host: 10.9.7.27
port: 20162
status_port: 20182
deploy_dir: "/data1/tidb-deploy/tikv-20162"
data_dir: "/data1/tidb-data/tikv-20162"
log_dir: "/data1/tidb-deploy/tikv-20162/log"
config:
server.labels: { host: "logic-host-3" }
tiflash_servers:
- host: 10.9.7.27
tcp_port: 9000
flash_service_port: 3930
flash_proxy_port: 20170
flash_proxy_status_port: 20292
metrics_port: 8234
deploy_dir: /data1/tidb-deploy/tiflash-9000
data_dir: /data1/tidb-data/tiflash-9000
log_dir: /data1/tidb-deploy/tiflash-9000/log
#先注释掉,不添加kvcdc_server
#kvcdc_servers:
#- host: 10.9.7.27
#port: 8600
#data_dir: "/data1/tidb-data/tikv-cdc-8600"
#log_dir: "/data1/tidb-deploy/tikv-cdc-8600/log"
monitoring_servers:
- host: 10.9.7.27
grafana_servers:
- host: 10.9.7.27
alertmanager_servers:
- host: 10.9.7.27
执行部署命令前,先使用 check
及 check --apply
命令检查和自动修复集群存在的潜在风险:
检查集群存在的潜在风险:
tiup cluster check ./topology.yaml --user root -p
自动修复集群存在的潜在风险:
tiup cluster check ./topology.yaml --apply --user root -p
执行完上面的密令有一推需要解决的报错:(有些问题是跟分区那步没做好造成的,所有能按官方的TiDB 环境与系统配置检查来最好,也就是文章的开头)
----start----这部分是检测后需要手动调整的
1.设置网络参数
添加以下参数到 /etc/sysctl.conf
文件:
net.core.somaxconn = 32768
net.ipv4.tcp_syncookies = 0
2.关闭 SELinux:
编辑 /etc/selinux/config
文件,将 SELINUX=enforcing
改为 SELINUX=disabled
,然后重启系统生效
----end----
部署 TiDB 集群:
tiup cluster deploy tidb-test v7.1.3 ./topology.yaml --user root -p
查看 TiUP 管理的集群情况
tiup cluster list
检查 tidb-test
集群情况
tiup cluster display tidb-test
启动集群:
安全启动:
tiup cluster start tidb-test --init
普通启动:
tiup cluster start tidb-test
----初始化topology.yaml有问题,导致启动失败的情形下,修改后要销毁之前的集群才能重新部署生效
销毁集群:tiup cluster destroy tidb-test -y
重新部署:tiup cluster deploy tidb-test v7.1.3 ./topology.yaml --user root -p
再次启动集群
------配置正常的情况下不用这段
验证集群运行状态:
tiup cluster display tidb-test
访问数据库:
navicat连接数据库,ip,root,端口4000,密码普通启动无,安全启动看提示
停止集群:
tiup cluster stop tidb-test