11.云原生分布式数据库之TIDB

云原生专栏大纲

文章目录

  • 为什么使用TIDB
    • 后端视角
    • 运维视角
    • 基础架构视角
  • TiDB Operator 简介
  • 软件版本要求
  • 部署tidb
  • TIDB工具
  • helm常用命令
  • TIDB学习推荐资料

为什么使用TIDB

从后端视角、运维视角和基础架构视角来看,使用 TiDB 作为数据库系统可以获得分布式架构、高可用性、强一致性、事务支持、水平扩展、高性能、简化运维、灵活的扩展和配置、集成的监控和告警等优势。这些优势使得 TiDB 成为处理大规模数据和高并发请求的理想选择,并能够满足复杂的业务需求和运维要求。

后端视角

  1. 分布式架构和高可用性:TiDB 是一个分布式数据库系统,采用分布式架构和数据分片技术,可以将数据分布在多个节点上。这种架构使得 TiDB 具有高可用性和容错性,即使某个节点发生故障,系统仍然可以继续提供服务,确保业务的连续性。
  2. 强一致性和事务支持:TiDB 提供强一致性和事务支持,符合 ACID 特性。它使用分布式一致性协议来保证数据的一致性,在多节点之间实现事务的隔离和提交。这使得 TiDB 可以处理复杂的业务逻辑和数据一致性要求。
  3. 水平扩展和高性能:TiDB 具有水平扩展和负载均衡的能力。通过添加更多的节点,可以实现数据的水平分片和负载均衡,提供更高的吞吐量和更低的延迟。这使得 TiDB 能够处理大规模数据和高并发请求,满足高性能的需求。

运维视角

  1. 简化运维工作:TiDB 提供了简化运维的功能,减少了运维人员的工作量。它具有自动化的故障检测和恢复机制,可以自动处理节点故障和数据复制等问题。此外,TiDB 还提供了集中式的管理界面和命令行工具,使得运维人员可以方便地监控和管理整个数据库集群。
  2. 灵活的扩展和配置:TiDB 具有灵活的扩展和配置选项。它支持在线扩容和缩容,可以根据负载情况动态调整集群的规模。此外,TiDB 还提供了丰富的配置选项,使得运维人员可以根据具体需求进行优化和调整,以获得最佳的性能和资源利用率。
  3. 集成的监控和告警:TiDB 集成了监控和告警功能,可以实时监控数据库集群的状态和性能指标,并根据预设的规则和阈值触发告警通知。这使得运维人员可以及时发现和解决潜在的问题,保证系统的稳定性和可靠性。

基础架构视角

  1. 分布式数据存储和计算:TiDB 的分布式架构使得数据可以分布在多个节点上,实现了分布式的数据存储和计算。这种架构可以提供更好的数据并行性和负载均衡,支持处理大规模数据和高并发请求。
  2. 弹性扩展和容错性:TiDB 具有弹性扩展和容错性的特点。通过添加更多的节点,可以实现系统的弹性扩展,以适应不断增长的数据和负载。同时,TiDB 的分布式架构还具有容错性,即使某个节点发生故障,系统仍然可以继续提供服务。
  3. 云原生和容器化支持:TiDB 支持云原生和容器化部署。它可以与容器编排平台(如 Kubernetes)集成,实现弹性伸缩和自动化管理。这使得 TiDB 可以更好地适应云环境和容器化部署的需求。

TiDB Operator 简介

TiDB Operator 是一个用于在 Kubernetes 上部署和管理 TiDB 集群的工具。TiDB 是一个开源的分布式关系型数据库,具有高可用性、可扩展性和水平扩展的特性,适用于处理大规模的数据和高并发的工作负载。
TiDB Operator 的主要功能是简化 TiDB 集群的部署、管理和运维。它基于 Kubernetes 的自定义资源定义(Custom Resource Definition,CRD)和控制器模式,提供了一组自定义资源和控制器,用于描述和操作 TiDB 集群的各个组件和配置。
以下是 TiDB Operator 的一些主要特点和功能:

  1. 自动化部署和扩展:TiDB Operator 可以自动化地部署和扩展 TiDB 集群。您可以通过定义 TiDBCluster 自定义资源来描述集群的拓扑结构、副本数量、存储配置等参数,TiDB Operator 将根据这些参数自动创建和管理相应的 Kubernetes 资源。
  2. 可靠的运维功能:TiDB Operator 提供了一些可靠的运维功能,包括自动备份和恢复、滚动升级、自动故障转移等。它可以监控集群的状态和健康状况,并根据需要执行相应的操作,以确保集群的高可用性和稳定性。
  3. 灵活的配置和扩展:TiDB Operator 允许您通过自定义资源和配置文件来灵活地配置和扩展 TiDB 集群。您可以定义 TiDBCluster、TiDBMonitor、BackupSchedule 等自定义资源来指定集群的各种配置和行为,以满足特定的需求。
  4. 监控和告警:TiDB Operator 集成了 Prometheus 和 Grafana,可以提供集群的实时监控指标和可视化。您可以通过自定义资源 TiDBMonitor 来配置监控规则和告警策略,以及在集群出现问题时发送告警通知。

TiDB Operator 简化了在 Kubernetes 上部署和管理 TiDB 集群的过程,提供了自动化的部署、可靠的运维功能和灵活的配置选项。它使得使用 TiDB 在容器化环境中更加便捷和高效。您可以访问TiDB Operator 简介 GitHub - pingcap/tidb-operator
通过之前文章《8.云原生存储之Ceph集群》介绍ceph部署也使用了Operator,简单总结Operator就是一个部署控制器,主要用于简化部署过程。

软件版本要求

软件名称版本
DockerDocker CE 18.09.6
Kubernetesv1.12.5+
CentOSCentOS 7.6,内核要求为 3.10.0-957 或之后版本
Helmv3.0.0+

上篇中已经讲述了centos升级操作

Kubernetes Master 节点的配置取决于 Kubernetes 集群中 Node 节点个数,节点数越多,需要的资源也就越多。节点数可根据需要做微调。

Kubernetes 集群 Node 节点个数Kubernetes Master 节点配置
1-51vCPUs 4GB Memory
6-102vCPUs 8GB Memory
11-1004vCPUs 16GB Memory
101-2508vCPUs 32GB Memory
251-50016vCPUs 64GB Memory
501-500032vCPUs 128GB Memory

部署tidb

  1. 添加tidb应用仓库

image.png

  1. 查看应用仓库提供的应用

image.png

  1. 在 Kubernetes 上快速上手 TiDB

部署前先在kubesphere中创建如下项目(对应k8s中命名空间)
image.png

# 部署crd
kubectl create -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.5.1/manifests/crd.yaml# 部署tidb-operator,可在ks应用仓库部署
helm install --namespace tidb-admin tidb-operator pingcap/tidb-operator --version v1.5.1# 查看部署情况
kubectl get pods --namespace tidb -l app.kubernetes.io/instance=tidb-operator# 部署 TiDB 集群。可以在应用仓库部署,注意修改storageClassName
kubectl -n tidb apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.5.1/examples/basic-cn/tidb-cluster.yaml# 部署独立的 TiDB Dashboard
kubectl -n tidb apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.5.1/examples/basic-cn/tidb-dashboard.yaml# 部署 TiDB 集群监控
kubectl -n tidb apply -f https://raw.githubusercontent.com/pingcap/tidb-operator/v1.5.1/examples/basic-cn/tidb-monitor.yaml
  1. kubesphere中查看部署情况

image.png
image.png

  1. 暴露tidb相关服务

image.png
部署后会创建basic-tidb(svc),通nodeport暴露服务发现会重置导致不能访问,此处小编自己创建tidb-svc暴露服务进行测试如下:
image.png

  1. grafana监控面板集群监控,账号密码admin

image.png
image.png
image.png

  1. dashboard

image.png

TIDB工具

helm仓库 https://charts.pingcap.org/包括应用如下:

应用名称描述
tidb-operator用于在 Kubernetes 上部署和管理 TiDB 集群的操作符。它提供了自动化的部署、扩展和运维功能,简化了 TiDB 集群的管理流程。
tidb-cluster用于定义和配置 TiDB 集群的 Helm Chart。通过 tidb-cluster,您可以指定 TiDB、TiKV 和 PD 组件的数量、资源配置、存储设置等参数,以创建一个完整的 TiDB 集群。
tidb-backup提供了对 TiDB 集群进行备份和恢复的功能。tidb-backup 可以根据预定的计划自动备份 TiDB 集群,并支持从备份中恢复数据。
tidb-drainer用于从 MySQL 或者 TiDB 集群中抓取 Binlog,并将其转发到其他目标(如 Kafka 或者 TiDB 集群)。tidb-drainer 可以用于实时数据分析、数据同步等场景。
tidb-lightning提供了快速导入大量数据到 TiDB 集群的功能。tidb-lightning 可以将数据从各种数据源(如 MySQL、CSV 文件等)导入到 TiDB 集群中,以加快数据导入速度。
tikv-importer用于将数据从其他数据库引擎(如 RocksDB)迁移到 TiKV。tikv-importer 提供了高效的数据迁移工具,可以将数据转换为 TiKV 的格式并导入到 TiDB 集群中。
tikv-operator用于在 Kubernetes 上部署和管理 TiKV 集群的操作符。tikv-operator 可以自动创建和管理 TiKV 实例,提供了高可用性和可扩展性的分布式存储解决方案。
diag提供了 TiDB 集群的诊断和故障排查工具。diag 可以帮助您分析和解决 TiDB 集群中的性能问题、错误和故障。
br-federation用于在分布式 TiDB 集群中进行备份和恢复的工具。br-federation 可以协调多个 TiDB 集群之间的备份和恢复操作,提供了跨集群的数据保护和恢复能力。

helm常用命令

helm install安装一个 Helm 包helm install my-release stable/mysql
helm upgrade升级已安装的 Helm 包helm upgrade my-release stable/mysql
helm uninstall卸载一个已安装的 Helm 包helm uninstall my-release
helm list列出已安装的 Helm 包helm list
helm status显示已安装的 Helm 包的状态helm status my-release
helm rollback回滚到先前的 Helm 包版本helm rollback my-release 1
helm search搜索可用的 Helm 包helm search repo mysql
helm repo add添加一个 Helm 仓库helm repo add stable https://charts.helm.sh/stable
helm repo update更新已添加的 Helm 仓库helm repo update
helm repo list列出已添加的 Helm 仓库helm repo list
helm dependency update更新 Helm 依赖helm dependency update my-chart
helm lint检查 Helm Chart 的语法和最佳实践helm lint my-chart
helm template生成 Helm Chart 的模板文件helm template my-chart
helm history显示已安装 Helm 包的历史版本helm history my-release
helm plugin install安装 Helm 插件helm plugin install https://example.com/helm-plugin.tar.gz
helm plugin list列出已安装的 Helm 插件helm plugin list
helm plugin uninstall卸载已安装的 Helm 插件helm plugin uninstall my-plugin
helm env显示 Helm 的环境变量信息helm env

TIDB学习推荐资料

小编推荐学习最好还是阅读官网TiDB 产品文档,官网提供的PFD文档TiDB on Kubernetes 用户文档.pdf,tidb-github。除上述学习途径,小编推荐b站上的tidb教程,配套 资料已上传到gitee。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习Java API(二):基础知识点一文通✅

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读正则表达式正则表达式语法捕获组和分组matches 和 lookingAt 方法split方法r…

LeeCode前端算法基础100题(20)找出字符串中第一个匹配项的下标

一、问题详情: 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack = "sadbutsad", needle = "s…

安全生产管理平台——革新传统安全生产管理方式,重塑企业安全文化

安全生产管理在现代企业中占据着至关重要的地位。传统的安全生产管理方式虽然在一定程度上能够保障企业的生产安全,但随着企业规模的不断扩大和生产环境的日益复杂,其局限性也愈发凸显。而安全生产管理平台的出现,正是为了解决这一问题。 平台…

从六西格玛到DFSS:提升企业创新能力的关键方法——张驰咨询

DFSS(Design for Six Sigma,即六西格玛设计)是一种结合了六西格玛思想和创新设计方法的质量管理方法。它的目标是在产品或服务的设计阶段,通过优化设计过程和减少变异性,以确保产品或服务达到高质量水平,满…

Linux多网卡绑定实现负载均衡详解

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 目录 1、bond的作用 2、Bonding聚合链路工作模…

反射助你无痛使用Semantic Kernel接入离线大模型

本文主要介绍如何使用 llama 的 server 部署离线大模型,并通过反射技术修改 Semantic Kernel 的 OpenAIClient 类,从而实现指定端点的功能。最后也推荐了一些学习 Semantic Kernel 的资料,希望能对你有所帮助。 封面图片: Dalle3 …

win开发Golang

目录 编译exeVscode开发 编译exe go build main.go编译的exe文件点击后会有cmd弹窗,如果去掉弹框,使用编译命令: go build -ldflags"-Hwindowsgui" -o name.exe main.go 或 go build -ldflags"-s -w -H windowsgui" -…

软信天成:数据安全管理解决方案分享

近年来,随着数据环境日趋复杂多变和潜在的数据隐私泄露风险潜伏,如何确保企业数据安全已成为众多企业亟待面对与妥善处理的重要问题。 为了应对这一严峻的现实挑战,软信天成凭借专业的知识体系和丰富的实战经验积累,总结出了一套…

Java多线程并发篇----第十四篇

系列文章目录 文章目录 系列文章目录前言一、ReadWriteLock 读写锁二、共享锁和独占锁三、重量级锁(Mutex Lock)四、轻量级锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给…

【iconfont图标】快速全选

https://www.iconfont.cn/collections/detail?spma313x.collections_index.i1.d9df05512.9f173a81W5lQnf&cid19238 1.控制台粘贴回车 var jdocument.createElement(script);j.setAttribute("src", https://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js);…

Golang 打包

构建/打包 使用 Go 的构建命令: go build在包含 main 函数的包的目录下执行,它会生成一个可执行文件。文件名默认与包所在的目录名相同,但也可以使用 -o 选项来指定输出的文件名 交叉编译 Windows 环境下进行交叉编译以构建其他平台的可执…

Spring MVC中的一些常用注解

目录 RequestMapping 实现路由映射 限制请求方式 PathVariable 从url中获取变量的值 更改绑定参数的名字 RequestParam 可以传递集合 更改绑定参数的名字 可修改是否为必传参数 RequestBody 获取请求正文的内容 可修改是否为必传参数 RequestPart 可以支持上传…

ubuntu服务日志分析——journalctl

简介 对于使用 systemd 服务的 Linux 发行版来说,journalctl 命令提供了详细且经过筛选的日志视图,是获取 Linux 重启历史记录的得力工具 systemd帮助我们记录了系统在运行过程中的所有日志信息,无论是重启前还是重启后,都会有保…

Animation的坑,播放的时候隐藏了UI界面,结果再次把UI界面显示出来后,就会卡在动画的某处

local animation obj:GetComponent("Animation") local state animation.this:get(name) if state then state.speed state.length end animation:Play(name);

new mars3d.layer.GeoJsonLayer({实现图标点billboard贴模型聚合效果

说明: 1.【mars3d】的依赖库cesium本身是不支持贴地/贴模型操作的 2.sdk内部异步计算了数据的贴地/高度值之后,更新到图层上实现贴地/贴模型效果的 3.相关的示例链接: 1.功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 4.相关的计算…

【Python数据可视化】matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

文章传送门 Python 数据可视化matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

精确掌控并发:滑动时间窗口算法在分布式环境下并发流量控制的设计与实现

这是《百图解码支付系统设计与实现》专栏系列文章中的第(15)篇,也是流量控制系列的第(2)篇。点击上方关注,深入了解支付系统的方方面面。 上一篇介绍了固定时间窗口算法在支付渠道限流的应用以及使用redis…

消息的发送与接收

消息的发送与接收 消息的发送与接收不仅仅是在于聊天功能的实现。其实还有很多种情况也算"消息的发送与接收"。而且我们还可以通过多种方法去实现。我们可以基于实际情况来选择。 WebSocket实现 node做后端。找了好多,前端页面总是用到了jQuery&#x…

lvgl简介

LVGL(Light and Versatile Graphics Library)是一个开源的图形用户界面库,旨在提供轻量级、可移植、灵活和易于使用的图形用户界面解决方案。 它适用于嵌入式系统,可以在不同的操作系统、微控制器和图形加速器上运行。LVGL的核心…

1.go安装及相关配置

目录 概述下载基本命令Go build环境设置 结束 概述 下载 官网速递 选择 1.20.x 一个是因为是次新版本,另一个,mac 系统是 10.13.6 ,1.20.x 是最后一个支持此版本的。 环境变量 GOROOT go的安装目录(将go安装到哪里 which go、cat /etc/p…