http://blog.itpub.net/29785807/viewspace-2789852/

一.安装规划

1
2
3
4
5
6
使用15台服务器
5台tidb服务器:每台3个tidb实例+1个pd+1个pump   
10台tikv服务器:每台4个tikv实例
drainer_servers      安装在第一台tidb机器上
grafana_servers      安装在3台中控机
alertmanager_servers 安装在3台中控机

二.服务器规划

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
业务IP        心跳IP        services    主机名       
10.10.10.101 10.100.100.101tidb&pd&pump     xx-xxtidb-db01
10.10.10.10210.100.100.102tidb&pd&pump       xx-xxtidb-db02
10.10.10.103 10.100.100.103tidb&pd&pump     xx-xxtidb-db03
10.10.10.104 10.100.100.104tidb&pd&pump      xx-xxtidb-db04
10.10.10.105    10.100.100.105tidb&pd&pump xx-xxtidb-db05
10.10.10.10610.100.100.106tikv        xx-xxtikv-db01
10.10.10.10710.100.100.107tikv        xx-xxtikv-db02
10.10.10.10810.100.100.108tikv        xx-xxtikv-db03
10.10.10.10910.100.100.109tikv        xx-xxtikv-db04
10.10.10.11010.100.100.110tikv        xx-xxtikv-db05
10.10.10.111    10.100.100.111  tikv  xx-xxtikv-db06 
10.10.10.112    10.100.100.112  tikv  xx-xxtikv-db07 
10.10.10.113    10.100.100.113  tikv  xx-xxtikv-db08 
10.10.10.114    10.100.100.114  tikv  xx-xxtikv-db09 
10.10.10.115    10.100.100.115  tikv  xx-xxtikv-db10

三.安装前配置

1
2
3
4
5
6
7
8
9
10
11
1.关闭SWAP
2.安装numactl工具
3.创建data目录
4.检查及关闭防火墙
5.检查并关闭透明大页
6.I/O 调度器
7.创建tidb用户
8.设置sudo
9.配置互信
10.TiDB/PD机器挂载数据盘
11.安装前再次检查

1.关闭SWAP

1
2
3
检测及关闭系统swap(所有机器)
cat /etc/sysctl.conf |grep vm.swappiness
检测及关闭系统 swap(所有机器)
1
2
3
4
5
6
7
8
echo "vm.min_free_kbytes = 6291456" >> /etc/sysctl.conf 
echo "vm.swappiness = 0">> /etc/sysctl.conf
swapoff -a && swapon -a
sysctl -p
vi /etc/fstab
删除swap行
vi /etc/fstab   
/dev/mapper/vg_srv-lv_swap swap                    swap    defaults        0 0   --删除

2.安装numactl工具

1
2
3
4
在生产环境中,因为硬件机器配置往往高于需求,为了更合理规划资源,会考虑单机多实例部署TiDB或者TiKV。
NUMA 绑核工具的使用,主要为了防止 CPU 资源的争抢,引发性能衰退。
登录到目标节点进行安装(以 CentOS Linux release 7.7.1908 (Core) 为例)
sudo yum -y install numact

3.创建data目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vgs
lvcreate -L 2000G -n lv_data vg_srv
lvs
mkfs.ext4 /dev/vg_srv/lv_data
mkdir /data
echo '/dev/mapper/vg_srv-lv_data    /data            ext4   defaults       0  0' >> /etc/fstab  
mount -a
df -h
lvcreate -L 2000G -n lv_data vg_srv
  Multiple VGs found with the same name: skipping vg_srv
  Use --select vg_uuid=<uuid> in place of the VG name.
vgs
  VG     #PV #LV #SN Attr   VSize    VFree  
  vg_srv   1   7   0 wz--n-    3.81t  <3.46t
  vg_srv   1   7   0 wz--n- <893.86g 527.66g

4.检查及关闭防火墙

1
2
3
4
5
6
7
8
9
检查防火墙状态(以 CentOS Linux release 7.7.1908 (Core) 为例)
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.检查并关闭透明大页

检查结果:

15台机器都没关闭透明大页

1
2
3
4
5
6
7
8
9
10
vim /etc/rc.local 
touch /var/lock/subsys/local
if test -f /sys/kernel/mm/transparent_hugepage/enabled;then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag;then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
[root@sy-xxtikv-db09 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
1
2
3
重启主机,检查透明大页
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

6.I/O 调度器

1
2
3
4
5
6
7
8
9
lsblk
将存储介质的I/O调度器设置为noop。
对于高速SSD存储介质,内核的I/O调度操作会导致性能损失。
将调度器设置为noop后,内核不做任何操作,直接将I/O请求下发给硬件,以获取更好的性能。
同时,noop调度器也有较好的普适性。
为调整CPU频率的cpufreq模块选用performance模式。
将CPU频率固定在其支持的最高运行频率上,不进行动态调节,可获取最佳的性能。
执行以下命令查看数据目录所在磁盘的I/O调度器。
假设在sdb、sdc两个磁盘上创建了数据目录。
1
2
3
4
cat /sys/block/sda/queue/scheduler
[noop] deadline cfq
vi /etc/rc.local 
echo noop > /sys/block/sda/queue/scheduler

执行以下命令查看cpufreq模块选用的节能策略。

1
2
3
4
cpupower frequency-info --policy   #####确保是performance
analyzing CPU 0:
current policy: frequency should be within 1.20 GHz and 3.10 GHz.
The governor "performance" may decide which speed to use within this range.

7.创建tidb用户

1
2
3
4
useradd tidb
echo "*****" passwd --stdin tidb 
passwd tidb 
chown -R tidb.tidb /data

8.设置sudo

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

visudo

tidb ALL=(ALL) NOPASSWD:ALL

9.配置互信

手动配置SSH互信及sudo免密码

中控机和其他机器配置互信

tidb+tikv

以 root 用户依次登录到部署目标机器创建 tidb 用户并设置登录密码。(所有机器)

以 tidb 用户登录到中控机,执行以下命令, 创建 ssh key, 提示 Enter passphrase 时直接回车即可

cd .ssh/

ls

###ssh-keygen -t rsa 不需要在执行,已经有了

以 tidb 用户登录到中控机,执行以下命令。

将IP替换成你的部署目标机器 IP,按提示输入部署目标机器 tidb 用户密码,执行成功后即创建好SSH互信,其他机器同理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
su - tidb
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.101
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.102
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.103
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.104
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.105
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.106
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.107
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.108
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.109
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.110
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.111
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.112
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.113
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.114
ssh-copy-id -i .ssh/id_rsa.pub  10.100.100.115

互信测试:

以 tidb 用户登录中控机,通过 ssh 的方式登录目标机器 IP。

如果不需要输入密码并登录成功,即表示 SSH 互信配置成功。

sudo测试:

1
2
以 tidb 用户登录到部署目标机器后,执行以下命令,不需要输入密码并切换到 root 用户,表示 tidb 用户 sudo 免密码配置成功。(所有机器)
sudo su -

10.TiDB/PD机器挂载数据盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
tidb:
df -h
lsblk
mkfs.ext4 /dev/sda
mkfs.ext4 /dev/nvme1n1
mkdir -p /data/tidb-xx/pump/
mkdir -p /data/tidb-xx/pd
tidb:
fs.sh
mount -a
TiKV机器挂载数据盘
tikv:
df -h
lsblk
mkfs.ext4 /dev/nvme1n1
mkfs.ext4 /dev/nvme2n1
mkfs.ext4 /dev/nvme3n1
mkfs.ext4 /dev/nvme4n1
mkdir -p /data/tidb-xx/tikv1
mkdir -p /data/tidb-xx/tikv2
mkdir -p /data/tidb-xx/tikv3
mkdir -p /data/tidb-xx/tikv4
tikv:
fs.sh
mount -a

挂载tidb磁盘脚本如下:

1
2
3
4
5
6
cat fs.sh 
#!/bin/bash
A="`lsblk -f | grep nvme1 | awk  -F ' ' '{print $3}' `"
echo "UUID=$A  /data/tidb-xx/pump/   ext4   defaults,nodelalloc,noatime 0 0">> /etc/fstab
i="`lsblk -f | grep sda | awk  -F ' ' '{print $3}' `"
echo "UUID=$i  /data/tidb-xx/pd/   ext4   defaults,nodelalloc,noatime 0 0">> /etc/fstab

挂载tikv磁盘

1
2
3
4
5
6
7
8
9
10
11
[root@sy-xxtikv-db01 ~]# cat fs.sh 
#!/bin/bash
A="`lsblk -f | grep nvme1 | awk  -F ' ' '{print $3}' `"
echo "UUID=$A  /data/tidb-xx/tikv1   ext4   defaults,nodelalloc,noatime 0 0">> /etc/fstab
    
j="`lsblk -f | grep nvme2 | awk  -F ' ' '{print $3}'`"
echo "UUID=$j  /data/tidb-xx/tikv2   ext4   defaults,nodelalloc,noatime 0 0">> /etc/fstab
k="`lsblk -f | grep nvme3 | awk  -F ' ' '{print $3}'`"
echo "UUID=$k  /data/tidb-xx/tikv3   ext4   defaults,nodelalloc,noatime 0 0">> /etc/fstab
l="`lsblk -f | grep nvme4 | awk  -F ' ' '{print $3}'`"
echo "UUID=$l  /data/tidb-xx/tikv4   ext4   defaults,nodelalloc,noatime 0 0">> /etc/fstab

执行以下命令查看磁盘的唯一标识 ID_SERIAL

#udevadm info --name=/dev/sdb | grep ID_SERIAL

#  如果多个磁盘都分配了数据目录,需要多次执行以上命令,记录所有磁盘各自的唯一标识。

11.检查并调整limits.conf

1
2
3
4
5
6
vi /etc/security/limits.conf
#####ADD FOR TIDB##########
tidb        soft        nofile        1000000
tidb        hard        nofile        1000000
tidb        soft        core          unlimited
tidb        soft        stack         10240

12.安装前再次检查

tidb检查

1
2
3
4
systemctl status fierwalld.service
systemctl status ntpd.service
cpupower frequency-info --policy
cat /etc/selinux/config

tikv需检查

1
2
3
4
5
6
7
8
9
10
11
12
cat /sys/block/nvme1n1/queue/scheduler
cat /sys/block/nvme2n1/queue/scheduler
cat /sys/block/nvme3n1/queue/scheduler
cat /sys/block/nvme4n1/queue/scheduler
cat /sys/block/nvme1n1/queue/scheduler
[none] mq-deadline kyber 
cat /sys/block/nvme2n1/queue/scheduler
[none] mq-deadline kyber 
cat /sys/block/nvme3n1/queue/scheduler
[none] mq-deadline kyber 
cat /sys/block/nvme4n1/queue/scheduler
[none] mq-deadline kyber

tidb:

1
2
cat /sys/block/sda/queue/scheduler
cat /sys/block/nvme1n1/queue/scheduler

四.部署集群

部署集群(中控机)

1.准备topology_xx_v4.0.12.yaml配置文件

2.开始部署

1
2
# tiup cluster deploy xxpool v4.0.12-20210427./topology.yaml
tiup cluster deploy xxpool v4.0.12-20210427 topology_xx_v4.0.12.yaml --user tidb

注:

v4.0.12-20210427安装包是那个版本就是写那个版本的

如果没有指定 -i 参数,会提示输入远程机器的登录密码,如果 key 包含 passphrase,则会提示输入。

五.参数优化

1.启动集群

tiup cluster start xxpool

2.参数优化

1
2
3
4
5
6
7
8
9
10
11
12
mysql -u root -h 10.100.100.101 -P 4000 -p *****
set @@global.tidb_opt_insubq_to_join_and_agg=1;
set @@global.tidb_mem_quota_query=34359738368;
set @@global.tidb_enable_table_partition='off';
set @@global.tidb_enable_telemetry='0';
set @@global.tidb_disable_txn_auto_retry='0';
set @@global.tidb_allow_batch_cop='0';
set @@global.tidb_multi_statement_mode='1';
set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
set @@global.tidb_skip_isolation_level_check='1';
set @@global.tidb_retry_limit='100';
set password for root@'%'=password('*******');

[转帖]tidb集群部署的更多相关文章

  1. Tiup离线安装TIDB集群4.0.16版本

    环境:centos7.6 中控机:8.213.8.25(内网) 可用服务器8.213.8.25-8.213.8.29 一.准备 TiUP 离线组件包 方法1:外网下载离线安装包拷贝进内网服务器 在Ti ...

  2. 部署TiDB集群

    架构图 节点规划 120.52.146.213 Control Machine 120.52.146.214 PD1_TiDB1 120.52.146.215 PD2_TiDB2 120.52.146 ...

  3. Centos7配置TiDB集群

    一:各模块属性 模块名称 状态 建议实例数 功能 负载均衡组件 TiDB 无状态 2 接收SQL请求,处理SQL相关逻辑,并通过PB找到存储数据的TiKV地址 LVS.HAProxy.F5 PB 集群 ...

  4. 在线安装TIDB集群

     在线安装TiDB集群 服务器准备 说明:TiDB8需要能够连接外网,以便下载各类安装包 TiDB4非必须,但最好是有一台,因为后续测试Mysql数据同步或者进行性能比较时,都要用到 TiKV最好是采 ...

  5. TIDB数据集群部署

    TIDB 数据库集群 一.TiDB数据介绍 1.1.TiDB数据简介 TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytic ...

  6. 使用 Docker Compose 快速构建 TiDB 集群

    本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...

  7. TiDB集群安装主要操作

    TiDB集群安装主要操作 参考资料:https://www.cnblogs.com/plyx/archive/2018/12/21/10158615.html 一.TiDB数据简介 TiDB 是 Pi ...

  8. tidb集群

    tidb ansible部署 https://zhuanlan.zhihu.com/p/27308307?refer=newsql 网址:http://www.cnblogs.com/mowei/p/ ...

  9. openstack高可用集群21-生产环境高可用openstack集群部署记录

    第一篇 集群概述 keepalived + haproxy +Rabbitmq集群+MariaDB Galera高可用集群   部署openstack时使用单个控制节点是非常危险的,这样就意味着单个节 ...

  10. Quartz.net持久化与集群部署开发详解

    序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我的罪过. 但是quart.net是经过许多大项 ...

随机推荐

  1. Linux 中查看文件系统的块大小

    有时可能需要查看 Unix 操作系统中有关于文件基本单元的块大小,以便对有的系统进行适当的优化(如 MySQL),本文将介绍几种在 Unix 上以及类 Unix 操作系统上可行的查看方式 检查文件系统 ...

  2. 关于GO语言,这篇文章讲的很明白

    摘要:本文从Go的语法,类型系统,编码风格,语言工具,编码工具和使用案例等几方面对Go语言进行了学习和探讨. Go语言发布之后,很多公司特别是云厂商也开始用Go语言重构产品的基础架构,而且很多企业都是 ...

  3. GaussDB(DWS)运维 :遇到truncate执行慢,怎么办?

    摘要:truncate执行慢,耗时长达几十到几百秒,这可怎么破? 本文分享自华为云社区<GaussDB(DWS)运维 -- truncate慢>,作者: 譡里个檔. [现象]truncat ...

  4. 华为云自研PB级分布式时序数据库揭秘第一期:初识GaussDB(for Influx)

    摘要:GaussDB(for Influx)提供了独特的数据存储管理解决方案,云原生的存储与计算架构,可根据业务变化快速扩容缩容:高效的数据压缩能力和数据冷热分离设计,可大幅降低数据存储成本:高吞吐的 ...

  5. 云小课 | 网络知识一箩筐——NAT网关,让IP地址华丽变身,轻松实现内外网互通

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课) 或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 网络知识一箩筐 ...

  6. 教你用Python 编写 Hadoop MapReduce 程序

    摘要:Hadoop Streaming 使用 MapReduce 框架,该框架可用于编写应用程序来处理海量数据. 本文分享自华为云社区<Hadoop Streaming:用 Python 编写 ...

  7. 云图说|Git云上仓库哪家好?一张图了解华为云代码托管服务

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 云办公时代已然到 ...

  8. SpringBoot Docker 发布到 阿里仓库

    1. 创建仓库 管理里面,可以查看详细的信息 设置登录密码 2. 接下来,将本地镜像推到阿里 : SpringBoot Docker 发布 docker commit 这部分可以不操作 docker ...

  9. MQTT 客户端 MQTT.fx 使用说明

    下载 官网:https://softblade.de/en/download-2/ 说明:最后的免费版本是 MQTT.fx 1.7.1,官网已经没有免费的版本 下载 MQTT.fx 1.7.1 htt ...

  10. 用 bitsandbytes、4 比特量化和 QLoRA 打造亲民的 LLM

    众所周知,LLM 规模庞大,如果在也能消费类硬件中运行或训练它们将是其亲民化的巨大进步.我们之前撰写的 LLM.int8 博文 展示了我们是如何将 LLM.int8 论文 中的技术通过 bitsand ...