因近期有一个项目需要上线,在评估使用什么架构时,和开发同仁沟通需求,了解到该应用为OLTP但是数据量很集中,会有几张超大的表,如果要保证事务效率,使用mysql集群难免会要做分库分表,对后期的运维带来很大的挑战;而TIDB属于分布式集群,TIKV的行存模式非常适用于大表事务性业务,因此选型用TIDB来作为该应用的底层数据库架构;
安装集群的一些基本配置要求请参考如下官方文档,这里不再赘述
https://docs.pingcap.com/zh/tidb/stable/hardware-and-software-requirements
TIDB7.5LTS 长期支持版本相关特性介绍如下链接
TiDB 7.5 LTS 发版丨提升规模化场景下关键应用的稳定性和成本的灵活性 - 墨天轮
ps:默认命令为加粗斜体
本次安装为测试环境配置为1 台TIDB/PD 3台TIKV
配置信息 |
IP |
|
TIDB/PD |
1台8C/16GB 200GB centos7.9 |
10.189.60.201 |
TIKV |
3台8C/32GB 200GB centos7.9 |
10.189.60.202/203/204 |
编译和构建 TiDB 所需的依赖库 |
版本 |
Golang |
1.21 及以上版本 |
Rust |
nightly-2022-07-31 及以上版本 |
GCC |
7.x |
LLVM |
13.0 及以上版本 |
NTP |
None |
Ntpdate |
None |
Sshpass |
1.06 及以上 |
Numactl |
2.0.12 及以上 |
2.1 安装依赖包
yum install –y gcc llvm sshpass numactl ntp ntpdate
2.2安装GO语言包1.21 及以上版本
go 官网下载All releases - The Go Programming Language
下载go1.21.5.linux-amd64.tar.gz
上传到集群各个主机
chown root:root go1.21.5.linux-amd64.tar.gz ##修改属性
tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz ##解压到执行目录
vi .bash_profile ##修改root 环境变量
PATH=$PATH:$HOME/bin:/usr/local/go/bin
# go version ##生效环境变量后检查go版本
2.3安装rust语言包
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
安装完成后确认版本
# rustc --version
3.设置临时空间
sudo mkdir /tmp/tidb
如果目录 /tmp/tidb 已经存在,需确保有写入权限。
sudo chmod -R 777 /tmp/tidb
4.关闭防火墙
检查防火墙状态(以 CentOS 7.x 为例)
sudo firewall-cmd --state
sudo systemctl status firewalld.service
关闭防火墙服务
sudo systemctl stop firewalld.service
关闭防火墙自动启动服务
sudo systemctl disable firewalld.service
检查防火墙状态
sudo systemctl status firewalld.service
5.配置NTP服务
yum install -y ntp ntpdate
systemctl start ntpd.service
systemctl enable ntpd.service
systemctl status ntpd.service
echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff –a
sysctl –p
vi /etc/fstab
# 注释加载swap分区的那行记录
#UUID=4f863b5f-20b3-4a99-a680-ddf84a3602a4 swap swap defaults 0 0
在生产系统的 TiDB 中,建议对操作系统进行如下的配置优化:
因为本次使用虚拟机 且无SSD 2/3项目无需调整
修改当前的内核配置立即关闭透明大页。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
检查修改后的状态
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
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
对于有需求,通过手动配置中控机至目标节点互信的场景,可参考本段。通常推荐使用 TiUP 部署工具会自动配置 SSH 互信及免密登录,可忽略本段内容
配置互信和oracle 11g rac配置互信类似
以 root
用户依次登录到部署目标机器创建 tidb
用户并设置登录密码。
useradd tidb && \
passwd tidb
置好 sudo 免密码。
visudo
tidb ALL=(ALL) NOPASSWD: ALL
配置互信
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.189.60.201(ip)
因为本次配置tidb和pd在同一台所以也需要配置本机互信
注意:因为修改了默认的ssh端口 ssh时候需要使用
Ssh –p xxxx ip/hostname
为了不加-p的参数需要修改
vi /etc/ssh/ssh_config
拿掉port的注释 并修改为修改后的端口号即可
确认互信成功
[tidb@YZPTLTIDB01T ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub 10.189.60.204
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/tidb/.ssh/id_rsa.pub"
The authenticity of host '[10.189.60.204]:11122 ([10.189.60.204]:11122)' can't be established.