TiDB单机模拟部署生产环境集群(闭坑实践,亲测有效)

这篇具有很好参考价值的文章主要介绍了TiDB单机模拟部署生产环境集群(闭坑实践,亲测有效)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

上篇文章,我详细介绍了TIDB这款开源分布式关系型数据库,重点阐述了TIDB的多个优秀的特性,例如高度兼容MySQL、分布式事务支持、云原生SQL数据库、水平可扩展性、高可用性等。大家一定想揭开TIDB的神秘的面纱了,这篇文章我就带大家模拟部署生产环境集群。


一、软件和硬件环境建议配置

在官网看了TIDB软件和硬件环境建议之后,着实令人吃惊——TIDB对性能要求如此之高。首先是开发及测试环境建议,TiDB 支持部署和运行在 Intel x86-64 架构的 64 位通用硬件服务器平台或者 ARM 架构的硬件服务器平台。对于开发、测试及生产环境的服务器硬件配置(不包含操作系统 OS 本身的占用)有以下要求和建议:
tidb单机部署用于生产,mysql,Linux,服务器,云计算,运维
生产环境更恐怖:
tidb单机部署用于生产,mysql,Linux,服务器,云计算,运维
看完环境配置的要求之后让人感慨,想要得到好的东西,是一定要付出代价的!
我手上只有一台2核4G6M带宽的个人服务器,以及实验室的一台8核16G的服务器(此服务器上已经部署和很多项目和应用)。在进行单机模拟部署生产环境集群的时候,毫无例外,这两台服务器都未能完成任务,且都一度出现卡死的局面,服务器卡死好几个小时,半天之后才好转。
因此笔者决定使用本地虚拟机模拟部署(给Centos7.6虚拟机开了24G内存)。

二、部署本地测试集群

由于官网推荐使用TiUP来进行集群部署管理,因此本文不再使用V4.0之前的docker部署方式,而是使用官方推荐的TiUP方式。
TiDB 是一个分布式系统。最基础的 TiDB 测试集群通常由 2 个 TiDB 实例、3 个 TiKV 实例、3 个 PD 实例和可选的 TiFlash 实例构成。通过 TiUP Playground,可以快速搭建出上述的一套基础测试集群。

  1. 下载并安装TiUP
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

执行完成之后会出现下述信息:

Successfully set mirror to https://tiup-mirrors.pingcap.com
Detected shell: bash
Shell profile:  /home/user/.bashrc
/home/user/.bashrc has been modified to add tiup to PATH
open a new terminal or source /home/user/.bashrc to use it
Installed path: /home/user/.tiup/bin/tiup
===============================================
Have a try:     tiup playground
===============================================
  1. 声明全局变量
source /root/.bash_profile
  1. 有两种方式启动集群
    (1)tiup playground,直接执行该命令会运行最新版的TIDB集群,其中TIDB、TiKV、PD和TiFlash实例各有一个。
    (2)也可以自行TIDB版本以及各组件的实例个数,例如:
tiup playground v5.4.1 --db 2 --pd 3 --kv 3

执行命令之后,在最后出现如下内容,说明部署成功:

CLUSTER START SUCCESSFULLY, Enjoy it ^-^
To connect TiDB: mysql --host 127.0.0.1 --port 4000 -u root -p (no password) --comments
To view the dashboard: http://127.0.0.1:2379/dashboard
PD client endpoints: [127.0.0.1:2379]
To view the Prometheus: http://127.0.0.1:9090
To view the Grafana: http://127.0.0.1:3000

然后,
a. 可以通过MySQL客户端连接TIDB:

mysql --host 127.0.0.1 --port 4000 -u root

b. 通过 http://127.0.0.1:9090 访问 TiDB 的 Prometheus 管理界面。

c. 通过 http://127.0.0.1:2379/dashboard 访问 TiDB Dashboard 页面,默认用户名为 root,密码为空。

d. 通过 http://127.0.0.1:3000 访问 TiDB 的 Grafana 界面,默认用户名和密码都为 admin。
测试完成之后
(1)可以先停止集群,control+C即可
(2)清除TIDB集群,使用命令tiup clean --all

本人经过测试,发现这种方式启动的TIDB集群仅仅能进行测试,不能使用Navicat工具进行连接,也就是完全不具备实际开发生产能力。
下面将介绍模拟部署生产环境集群,这种方式能够通过Navicat进行连接访问,具备实际开发能力。

三、模拟部署生产环境集群

硬性要求:

  • 安装Centos7.3及以上版本
  • 可访问互联网,方便下载TIDB以及相关软件安装包。
  • 部署主机关闭防火墙,或者开放TIDB集群的节点所需的端口。

最小规模的TIDB集群拓扑:
tidb单机部署用于生产,mysql,Linux,服务器,云计算,运维

3.1 TiUP安装

之前部署测试集群的时候已经详细说明过,这里不再赘述

3.2 部署前准备

  1. cluster组件安装
tiup cluster

如果已经安装了TiUP cluster,需要更新软件版本

tiup update --self && tiup update cluster
  1. 由于模拟多机部署,需要通过root用户调大sshd服务的连接数限制
vim /etc/ssh/sshd_config

将里面的MaxSessions设置为20,然后保存之后重启sshd服务

service sshd restart

3.3 创建并启动集群

(1)首先需要一个配置文件,对集群的组成进行配置,命名为topo.yaml,其中:

  • user:“tidb”:表示通过tidb用户(部署之后系统会自动创建)来做集群的内部管理者,默认使用22端口通过ssh登录目标机器。
  • replication.enable-palcement-rules:设置这个PD参数来确保TiFlash正常运行。
  • host:设置为部署机器所在的IP

topo.yaml配置文件如下(192.168.117.6是我虚拟机的IP地址,大家改成自己的即可,其余地方不需要改动):

# # 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: "/tidb-deploy"
 data_dir: "/tidb-data"

# # Monitored variables are applied to all the machines.
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: 192.168.117.6

tidb_servers:
 - host: 192.168.117.6

tikv_servers:
 - host: 192.168.117.6
   port: 20160
   status_port: 20180
   config:
     server.labels: { host: "logic-host-1" }

 - host: 192.168.117.6
   port: 20161
   status_port: 20181
   config:
     server.labels: { host: "logic-host-2" }

 - host: 192.168.117.6
   port: 20162
   status_port: 20182
   config:
     server.labels: { host: "logic-host-3" }

tiflash_servers:
 - host: 192.168.117.6

monitoring_servers:
 - host: 192.168.117.6

grafana_servers:
 - host: 192.168.117.6

(2)执行集群部署命令:

tiup cluster deploy tidb-test v5.4.1 ./topo.yaml --user root -p

tidb-test是集群的名称,v5.4.1是集群的版本,这里我选择的是v5.4.1, -p是在连接机器时需要使用的密码,我这里是进行测试,所以设置为空,不用密码就能登录。

(3)出现以下提示

Do you want to continue? [y/N]:  y
Input SSH password:

填写y,然后输入SSH登录密码即可。


这里只要服务器或者虚拟机性能足够,就能顺利执行完成。
(4)启动集群

tiup cluster start tidb-test

笔者在这里遇到一个坑,折磨了我半天:
启动程序前面已经全部执行之后,在最后出现:

+ [ Serial ] - UpdateTopology: cluster=liking
Started cluster `liking` successfully
Failed to set root password of TiDB database to 'G^174F*P!3t2sz&Wd5'

Error: dial tcp 192.168.117.6:4000: connect: connection refused

Verbose debug logs has been written to /root/.tiup/logs/tiup-cluster-debug-2022-05-18-15-01-41.log.

在网上搜索很多解决方法都未能解决这个问题,浪费了几个小时的时间,最终在TiDB社区“TiDB Community”找到了解决方法。出现这种情况的原因是权限不够,即TiDB集群是使用tidb用户部署的,/tmp/tidb-4000.sock以及/tmp/tidb-4001.sock这两个文件是root权限的,即tidb用户对这两个文件没有权限,导致服务起不来。把这两个文件删除,并赋予tidb用户权限chmod -R 777 /tmp,再次启动TiDB集群,就成功了。
执行命令:

tiup cluster display tidb-test

查看tidb-test集群的信息:

[root@docker01 ~]# tiup cluster display tidb-test
tiup is checking updates for component cluster ...
A new version of cluster is available:
   The latest version:         v1.9.6
   Local installed version:    v1.9.5
   Update current component:   tiup update cluster
   Update all components:      tiup update --all

Starting component `cluster`: /root/.tiup/components/cluster/v1.9.5/tiup-cluster /root/.tiup/components/cluster/v1.9.5/tiup-cluster display tidb-test
Cluster type:       tidb
Cluster name:       tidb-test
Cluster version:    v5.4.1
Deploy user:        tidb
SSH type:           builtin
Dashboard URL:      http://192.168.117.6:2379/dashboard
ID                   Role        Host           Ports                            OS/Arch       Status   Data Dir                    Deploy Dir
--                   ----        ----           -----                            -------       ------   --------                    ----------
192.168.117.6:3000   grafana     192.168.117.6  3000                             linux/x86_64  Up       -                           /tidb-deploy/grafana-3000
192.168.117.6:2379   pd          192.168.117.6  2379/2380                        linux/x86_64  Up|L|UI  /tidb-data/pd-2379          /tidb-deploy/pd-2379
192.168.117.6:9090   prometheus  192.168.117.6  9090/12020                       linux/x86_64  Up       /tidb-data/prometheus-9090  /tidb-deploy/prometheus-9090
192.168.117.6:4000   tidb        192.168.117.6  4000/10080                       linux/x86_64  Up       -                           /tidb-deploy/tidb-4000
192.168.117.6:9000   tiflash     192.168.117.6  9000/8123/3930/20170/20292/8234  linux/x86_64  Up       /tidb-data/tiflash-9000     /tidb-deploy/tiflash-9000
192.168.117.6:20160  tikv        192.168.117.6  20160/20180                      linux/x86_64  Up       /tidb-data/tikv-20160       /tidb-deploy/tikv-20160
192.168.117.6:20161  tikv        192.168.117.6  20161/20181                      linux/x86_64  Up       /tidb-data/tikv-20161       /tidb-deploy/tikv-20161
192.168.117.6:20162  tikv        192.168.117.6  20162/20182                      linux/x86_64  Up       /tidb-data/tikv-20162       /tidb-deploy/tikv-20162
Total nodes: 8

(5)在宿主机使用Navicat进行连接:
tidb单机部署用于生产,mysql,Linux,服务器,云计算,运维
和使用tiup playground 命令模拟部署测试环境集群不一样,这种方法可以远程连接,即具备开发能力。
(6)在宿主机浏览器输入:192.168.117.6:2379/dashboard,查看集群监控页面,默认用户名为root,密码为空:
tidb单机部署用于生产,mysql,Linux,服务器,云计算,运维
(7)在宿主机浏览器输入:192.168.117.6:3000,访问集群 Grafana 监控页面,默认用户名和密码均为 admin:
tidb单机部署用于生产,mysql,Linux,服务器,云计算,运维

总结

本文介绍了TiDB部署本地测试集群和再单机上模拟生产环境集群两种TiDB模拟部署方式,这两种方式对服务器性能都有一定要求,特别是第二种方式,实验室8核16G的服务器直接卡死。笔者在虚拟机上很好地完成了这两种部署,并在部署中遇到并解决一个权限问题的坑。希望本文能对大家有所帮助。文章来源地址https://www.toymoban.com/news/detail-820787.html

到了这里,关于TiDB单机模拟部署生产环境集群(闭坑实践,亲测有效)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • rabbitmq第四课-RabbitMQ高可用集群架构详解以及生产环境最佳实践

    之前通过单机环境搭建起来的RabbitMQ服务有一个致命的问题,那就是服务不稳定的问题。如果只是单机RabbitMQ的服务崩溃了,那还好,大不了重启下服务就是了。 但是如果是服务器的磁盘出问题了,那问题就大了。因为消息都是存储在Queue里的,Queue坏了,意味着消息就丢失了

    2024年02月11日
    浏览(49)
  • 尝试CentOS8---部署集群(生产环境7.9为好)

    通过网络将很多服务器集中起来,提供同一种服务,在客户端看来就像是只有一个服务器 启动3台虚拟机,禁用selinux和firewalld,挂载光盘文件并配置yum扩展源,安装vim、bash-completion net-tools软件包 此方案需要准备三台主机,一台lvs调度器,2台web服务器,具体要求如下所示 给

    2023年04月21日
    浏览(42)
  • 在生产环境中部署Elasticsearch:最佳实践和故障排除技巧

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 「推荐专栏」 : ★ java一站式服务 ★ ★ React从入门到精通 ★ ★ 前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升 ★ ★ 从0到英雄,vue成神之路 ★ ★ 解决算法,一个专栏就够了 ★ ★

    2024年02月16日
    浏览(44)
  • 在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——安装篇(一)

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 「推荐专栏」 : ★ java一站式服务 ★ ★ React从入门到精通 ★ ★ 前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升 ★ ★ 从0到英雄,vue成神之路 ★ ★ 解决算法,一个专栏就够了 ★ ★

    2024年02月13日
    浏览(44)
  • 在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——聚合与搜索(三)

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 「推荐专栏」 : ★ java一站式服务 ★ ★ React从入门到精通 ★ ★ 前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升 ★ ★ 从0到英雄,vue成神之路 ★ ★ 解决算法,一个专栏就够了 ★ ★

    2024年02月13日
    浏览(49)
  • 在生产环境中部署Elasticsearch:最佳实践和故障排除技巧———索引与数据上传(二)

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 「推荐专栏」 : ★ java一站式服务 ★ ★ React从入门到精通 ★ ★ 前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升 ★ ★ 从0到英雄,vue成神之路 ★ ★ 解决算法,一个专栏就够了 ★ ★

    2024年02月13日
    浏览(48)
  • Kafka原理、部署与实践——深入理解Kafka的工作原理和使用场景,全面介绍Kafka在实际生产环境中的部署

    作者:禅与计算机程序设计艺术 随着互联网的发展,网站的流量呈爆炸性增长,传统的基于关系型数据库的数据处理无法快速响应。而NoSQL技术如HBase、MongoDB等被广泛应用于分布式数据存储与处理,却没有提供像关系型数据库一样的ACID特性、JOIN操作及完整性约束。因此,很

    2024年02月09日
    浏览(64)
  • 香橙派4和树莓派4B构建K8S集群实践之八: TiDB

    目录 1. 说明 2. 准备工作 3. 安装 3.1 参考Tidb官方 v1.5安装说明  3.2 准备存储类 3.3 创建crd 3.4 执行operator 3.5 创建cluster/dashboard/monitor容器组 3.6 设置访问入口(Ingress Port) 4. 装好后的容器状况 5. 遇到的问题 6. 参考 建立TiDB集群,实现一个基于k8s的云原生分布式数据库方案 应用i

    2024年02月13日
    浏览(42)
  • 搭建TiDB负载均衡环境-HAproxy+KeepAlived实践

    作者: 我是咖啡哥 原文来源: https://tidb.net/blog/8e8cca1d HAProxy 提供 TCP 协议下的负载均衡能力,TiDB 客户端通过连接 HAProxy 提供的浮动 IP 即可对数据进行操作,实现 TiDB Server 层的负载均衡。同时,HAproxy部署2个节点,使用KeepAlived来实现高可用。 TiDB版本:V7.1.0 haproxy版本:2.

    2024年02月09日
    浏览(39)
  • 2、etcd单机部署和集群部署

    上一章我们认识了 etcd ,简单的介绍了 etcd 的基础概念,但是理解起来还是比较抽象的。这一章我们就一起来部署下 etcd 。这样可以让我们对 etcd 有更加确切的认识。 对于平常的学习,其实搭建一个单机节点是够了的。接下来就讲讲怎么搭建单机节点。 本次部署是在 centos

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包