最近是沉迷于TiDB,无法自拔,从TiDB集群部署到集群压测、高可用测试、再到参数调优,最后到线上业务从MySQL迁移到TiDB,整个过程下来,感觉整个学习成本还是比较高,不管是TiDB还是分布式数据库,要学习的内容还是非常的多;本文主要分享生产环境部署TiDB v5.0.3版本集群过程,供大家参考学习;
废话不多说,直接开整~
一、TiDB集群拓扑规划
实例 | 个数 | IP |
TiDB | 3 | 10.30.128.1 |
10.30.128.2 | ||
10.30.128.3 | ||
PD | 3 | 10.30.128.1 |
10.30.128.2 | ||
10.30.128.3 | ||
TiKV | 5 | 10.30.128.4 |
10.30.128.5 | ||
10.30.128.6 | ||
10.30.128.7 | ||
10.30.128.8 | ||
Tiflash | 1 | 10.30.128.9 |
Monitoring & Grafana&alertmanager | 1 | 10.30.128.10 |
中控 | 1 | 10.30.128.11 |
二、TiDB 环境与系统配置检查
echo "vm.swappiness = 0">> etc/sysctl.conf
swapoff -a
sysctl -p
复制
cat sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never 表示透明大页处于启用状态,需要关闭。
复制
echo never > sys/kernel/mm/transparent_hugepage/enabled
echo never > sys/kernel/mm/transparent_hugepage/defrag
复制
cat sys/block/sd[bc]/queue/scheduler
复制
cat sys/block/sd[bc]/queue/scheduler
复制
cpupower frequency-info --policy
analyzing CPU 0:
Unable to determine current policy
复制
cat >> etc/systemd/system/cpupower.service << EOF
[Unit]
Description=CPU performance
[Service]
Type=oneshot
ExecStart=/usr/bin/cpupower frequency-set --governor performance
[Install]
WantedBy=multi-user.target
EOF
复制
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
复制
yum -y install numactl
复制
useradd tidb && echo 'tidb' | passwd --stdin tidb
复制
visudo
tidb ALL=(ALL) NOPASSWD: ALL
复制
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.30.xx.xx
复制
ssh 10.30.128.1
复制
sudo -su root
复制
三、集群部署
(1)配置文件
# # Global variables are applied to all deployments and used as the default value of
# # # the deployments if a specific deployment value is missing.
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/data/tidb-deploy"
data_dir: "/data/tidb-data"
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
tiflash:
profiles.default.max_memory_usage: 0
profiles.default.max_memory_usage_for_all_queries: 0
pd_servers:
- host: 10.30.128.1
- host: 10.30.128.2
- host: 10.30.128.3
tidb_servers:
- host: 10.30.128.1
- host: 10.30.128.2
- host: 10.30.128.3
tikv_servers:
- host: 10.30.128.4
- host: 10.30.128.5
- host: 10.30.128.6
- host: 10.30.128.7
- host: 10.30.128.8
tiflash_servers:
- host: 10.30.128.9
data_dir: /data/tiflash/data
deploy_dir: /data/tiflash/deploy
monitoring_servers:
- host: 10.30.128.10
grafana_servers:
- host: 10.30.128.10
alertmanager_servers:
- host: 10.30.128.10
复制
tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz && \
sh tidb-community-server-${version}-linux-amd64/local_install.sh && \
source /home/tidb/.bash_profile
复制
tiup cluster check ./topology.yaml --user tidb
tiup cluster check ./topology.yaml --apply --user tidb
复制
tiup cluster deploy tidb-prod001 v5.0.3 ./topology.yaml --user tidb
复制
$ tiup cluster list
Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.5.2/tiup-cluster list
Name User Version Path PrivateKey
---- ---- ------- ---- ----------
tidb-prod001 tidb v5.0.3 /home/tidb/.tiup/storage/cluster/clusters/tidb-prod001 /home/tidb/.tiup/storage/cluster/clusters/tidb-prod001/ssh/id_rsa
复制
$ tiup cluster start tidb-prod001
复制
mysql -u root -h 10.30.128.1 -P 4000
mysql> select tidb_version()\G
*************************** 1. row ***************************
tidb_version(): Release Version: v5.0.3
Edition: Community
Git Commit Hash: 0b5c1546892b3b4195485303c70f30492c4b1d71
Git Branch: heads/refs/tags/v5.0.3
UTC Build Time: 2021-07-01 15:45:42
GoVersion: go1.13
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false
1 row in set (0.00 sec)
复制
部署的流程大概就先介绍怎么多吧,后续会不阶段的分享一些TiDB相关知识以及一些问题处理方法等,当然也会和MySQL进行对比,SQL语法,执行计划、优化器、事务等等;
文章转载自DBA的辛酸事儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
史诗级革新 | Apache Flink 2.0 正式发布
严少安
149次阅读
2025-03-25 00:55:05
NineData 社区版:从 MySQL 到 TiDB 数据复制新选择
严少安
139次阅读
2025-03-13 17:27:45
PingCAP 2025 校园招聘 | 开源领航,星耀前程
PingCAP
104次阅读
2025-03-27 09:55:55
你好,3月 | 各大数据库社区又要卷出新高度啦
严少安
84次阅读
2025-03-04 17:50:59
2025w11 | 图数据库了解一下
严少安
58次阅读
2025-03-21 16:51:24
【TiDB 深圳地区交流回顾】大规模 TiDB 国产化替代在金融、跨境电商企业的最新实践!
TiDB Club
37次阅读
2025-03-10 10:29:44
TiDB 观测性解读(一)丨索引观测:快速识别无用索引与低效索引
PingCAP
28次阅读
2025-03-12 10:23:21
DBdoctor v3.3.0.2版本发布,新增Oracle索引推荐,强化TiDB审计日志功能
DBdoctor
28次阅读
2025-03-07 10:29:31
国产数据库如何赋能智慧医疗?3.28 TiDB 与您相约宜昌 “医院云数智技术实践研讨及成果展示交流会”
PingCAP
26次阅读
2025-03-25 18:14:39
架构师必看!现代应用架构发展趋势与数据库选型建议丨TiDB vs MySQL 专题(一)
PingCAP
23次阅读
2025-03-19 11:21:15