- 介绍
- 部署
- 安全
- 操作
- 备份和恢复
- 使用S3兼容存储进行备份和恢复
- 使用GCS进行备份和恢复
- 使用持久卷进行备份和恢复
- 备份和恢复
- 灾难恢复
- 参考文献
- TiDB运营商路线图
- 发行说明
- v1.2
- v1.1
- v1.0
- v0
在GCP GKE上部署TiDB
本文档描述如何部署GCP Google Kubernetes引擎(GKE)集群和在GCP GKE上部署TiDB集群。
要在自我管理的Kubernetes环境中部署TiDB Operator和TiDB群集,请参阅<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/deploy-tidb-operator.md">部署TiDB操作员和<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/deploy-on-general-kubernetes.md">在Kubernetes将军中部署TiDB.
先决条件
在GCP GKE上部署TiDB群集之前,请确保满足以下要求:
安装<一个href="https://helm.sh/docs/intro/install/">舵手3:用于部署TiDB操作员。
安装<一个href="https://cloud.google.com/sdk/gcloud">gcloud:用于创建和管理GCP服务的命令行工具。
完成中的操作在你开始之前的部分<一个href="https://cloud.google.com/kubernetes-engine/docs/quickstart">GKE快速入门.
本指南包括以下内容:
- 启用Kubernetes API
- 配置足够的配额
配置GCP服务
配置您的GCP项目和默认区域:
gcloud配置集核心/项目<gcp项目>gcloud配置集计算/区域<gcp-region>
创建GKE集群和节点池
创建GKE集群和默认节点池:
gcloud容器集群创建tidb--区域us-east1--机器类型n1-standard-4--num节点=1
- 上面的命令创建一个区域集群。
- 的
--节点数=1
Option表示在每个zone中创建一个节点。因此,如果区域中有三个zone,则总共有三个节点,这确保了高可用性。 - 建议在生产环境中使用区域集群。有关其他类型的群集,请参阅<一个href="https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters">GKE簇的类型.
- 上面的命令在默认网络中创建集群。如果要指定网络,请使用
--网络/子网
选择。欲了解更多信息,请参阅<一个href="https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-regional-cluster">创建区域集群.
为PD、TiKV和TiDB创建单独的节点池:
gcloud容器节点池创建pd--集群tidb--机器类型n1-standard-4--num节点=1\--节点标签=专用的=pd - node-taints=专用的=pd:NoSchedule gcloud容器节点池创建tikv——集群tidb——机器类型n1-highmem-8——num节点=1\--节点标签=专用的=tikv——节点污染=专用的=tikv:NoSchedule gcloud容器节点池创建tidb——cluster tidb——machine-type n1-standard-8——num-nodes=1\--节点标签=专用的=tidb——节点污染=专用的=tidb: NoSchedule
这个过程可能需要几分钟。
部署TiDB操作员
要在GKE上部署TiDB操作员,请参阅<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/get-started.md">部署TiDB操作员.
部署一个TiDB集群和监控组件
介绍如何在GCP GKE上部署TiDB集群及其监控组件。
创建名称空间
要创建命名空间以部署TiDB群集,请运行以下命令:
kubectl创建命名空间tidb集群
注:
一个<一个href="https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/">
名称空间
是由同一个物理集群支持的虚拟集群。这个文档需要tidb-cluster
举个例子。如果要使用其他命名空间,请修改的相应参数-n
或——名称空间
.
部署
首先,下载示例潮团
和TidbMonitor
配置文件:
卷曲-Ohttps://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/gcp/tidb-cluster.yaml&&\卷曲-Ohttps://raw.githubusercontent.com/pingcap/tidb-operator/master/examples/gcp/tidb-monitor.yaml
提到<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/configure-a-tidb-cluster.md">配置TiDB集群在应用之前进一步自定义和配置CR。
部署潮团
和TidbMonitor
在GKE集群中,运行以下命令:
kubectl create-f tidb-cluster.yaml-n tidb cluster&&\kubectl创建-f tidb-monitor.yaml-n tidb集群
将上述yaml文件应用于Kubernetes群集后,TiDB操作符将根据yaml文件创建所需的TiDB群集及其监视组件。
查看集群状态
要查看正在启动的TiDB群集的状态,请运行以下命令:
kubectl get pods-n tidb集群
当所有的豆荚都在跑步
或准备好的
状态,TiDB群集已成功启动。例如:
名称就绪状态重新启动老化tidb-discovery-5cb8474d89-n8cxk 1/1运行0 47h tidb-monitor-6fbcc68669-dsjlc 3/3运行0 47h tidb-pd-0 1/1运行0 47h tidb-pd-1/1运行0 46h tidb-pd-2 1/1运行0 46h tidb-tidb-0 2/2运行0 47h tidb-tidb-tikv-0 1/1运行0 47h tidb-tidb-1/1运行0.47小时
访问TiDB数据库
部署TiDB集群后,可以通过MySQL客户端访问TiDB数据库。
准备一个堡垒主机
为TiDB集群创建的LoadBalancer是一个内部网LoadBalancer。您可以创建<一个href="https://cloud.google.com/solutions/connecting-securely">堡垒主机在集群VPC中访问数据库。
gcloud计算实例创建堡垒\--机器类型=n1-标准-4\--形象工程=centos-cloud\——image-family=centos-7\--地带=${您所在的地区}-a
注:
${your region}-a
是一个
集群区域中的区域,例如美国中央银行
. 也可以在同一区域的其他区域中创建堡垒主体。
安装MySQL客户端并连接
创建bastion主机后,可以通过SSH连接到bastion主机,并通过MySQL客户端访问TiDB集群。
通过SSH连接到bastion主机:
gcloud计算sshtidb@bastion
安装MySQL客户端:
苏多百胜安装mysql - y
将客户端连接到TiDB群集:
mysql - h${tidb nlb dnsname}-P4000-根
${tidb nlb dnsname}
是TiDB服务的负载平衡器IP。您可以在中查看IP外部IP
场的Kubectl get SVC basic-tidb -n tidb-cluster
执行结果。例如:
$mysql-h10.128.15.243 - p4000-u root欢迎使用MariaDB监控器。命令结尾;或\g. MySQL连接id是7823服务器版本:5.7.25-TiDB-v4.0.4 TiDB服务器(Apache许可2)社区版,MySQL5.7兼容版权(c)2000,2018、甲骨文、马里亚布公司和其他公司。类型“救命或“\ h”为救命啊。类型'\c'到清楚的当前输入语句。MySQL[(没有一个)]>显示状态;+--------------------+--------------------------------------+|Variable_name|价值|+--------------------+--------------------------------------+|Ssl_密码|||Ssl\u密码\u列表|||Ssl_verify_mode|0||Ssl_version|||ddl_模式_版本|22||服务器id|717420直流- 0例乙脑- 4 - d4a - 951 d - 0 - d393aff295a|+--------------------+--------------------------------------+6排在集(0.01证券交易委员会)
注:
- MySQL 8.0的默认身份验证插件更新自
mysql\u本机\u密码
到缓存\u sha2\u密码
. 因此,如果使用MySQL 8.0中的MySQL客户端访问TiDB服务(TiDB版本--默认auth=mysql\u本机\u密码参数 - 默认情况下,TiDB(从v4.0.2开始)定期与PingCAP共享使用细节,以帮助了解如何改进产品。共享的内容和关闭共享的方法请参见<一个href="//www.schmieso.com/docs/tidb/stable/telemetry">遥测.
访问Grafana监控仪表板
获取Grafana的负载平衡器IP:
Kubectl -n tidb-cluster get SVC basic-grafana
例如:
$ kubectl -n tidb-cluster get svc basic-grafana NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE basic-grafana LoadBalancer 10.15.255.169 34.123.168.114 3000:30657/TCP 35m
在上面的输出中外部IP
列是LoadBalancer IP。
您可以访问${grafana lb}:3000
地址使用您的web浏览器查看监控指标。取代${grafana lb}
使用LoadBalancer IP。
注:
默认的Grafana用户名和密码都是
管理
.
升级
要升级TiDB群集,请编辑规格版本
通过执行kubectl编辑tc basic-n tidb群集
.
升级过程不会立即完成。您可以通过执行kubectl获得吊舱-n tidb集群-观察
.
向外扩展
在扩展集群之前,需要扩展相应的节点池,以便新实例有足够的资源进行操作。
本节介绍如何向外扩展EKS节点组和TiDB组件。
扩展GKE节点组
下面的示例展示了如何向外扩展tikv
服务器的节点池蒂德
集群到6个节点:
Gcloud容器集群调整大小tidb——node-pool tikv——num-nodes2
注:
在区域集群中,节点创建在3个分区中。因此,向外扩展后,节点数为
2 * 3 = 6
.
按比例缩小TiDB组件
在那之后,执行kubectl编辑tc basic-n tidb群集
并对每个组件进行修改副本
复制到所需数量的副本。然后完成扩展过程。
有关管理节点池的详细信息,请参阅<一个href="https://cloud.google.com/kubernetes-engine/docs/concepts/node-pools">节点池.
部署TiFlash和TiCDC
TiFlash是TiKV的柱状存储扩展。
TiCDC是一种通过提取TiKV更改日志来复制TiDB增量数据的工具。
这两个部分是不需要的在部署。本节展示一个快速启动示例。
创建新节点池
为TiFlash创建节点池:
Gcloud容器节点池创建tiflash——cluster tidb——machine-type n1-high - mem-8——num-nodes=1\--节点标签专用的=tiflash--节点污染专用的=tiflash:NoSchedule
为TiCDC创建节点池:
gcloud容器节点池创建ticdc——集群tidb——机器类型n1-standard-4——num节点=1\--节点标签专用的=ticdc——节点污染专用的=ticdc:NoSchedule
配置和部署
如果需要部署TiFlash,请配置
规格闪光
在tidb-cluster.yaml
.例如:规格:...鞭笞:基本图像:pingcap/tiflash副本:1storageClaims:-资源:请求:存储:100年胃肠道nodeSelector:专用的:鞭笞容忍:-影响:NoSchedule钥匙:专用的操作人员:相等的价值:鞭笞
其他参数的配置请参见<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/configure-a-tidb-cluster.md">配置TiDB群集.
警告:
TiDB操作员自动安装PVs按照配置的顺序在
storageClaims
列表因此,如果需要为TiFlash添加磁盘,请确保添加磁盘仅限于原始配置的末尾在名单上。此外,你必须不更改原始配置的顺序。要部署TiCDC,请配置
规格ticdc
在tidb-cluster.yaml
.例如:规格:...ticdc:基本图像:pingcap / ticdc副本:1nodeSelector:专用的:ticdc容忍:-影响:NoSchedule钥匙:专用的操作人员:相等的价值:ticdc
修改
副本
根据你的需要。
最后,执行kubectl-n tidb cluster apply-f tidb-cluster.yaml
更新TiDB群集配置。
有关详细的CR配置,请参阅<一个href="https://github.com/pingcap/tidb-operator/blob/master/docs/api-references/docs.md">API参考和<一个href="//www.schmieso.com/docs/tidb-in-kubernetes/stable/configure-a-tidb-cluster.md">配置TiDB群集.
部署TiDB企业版
如需部署TiDB/PD/TiKV/TiFlash/TiCDC企业版,请配置规范[tidb | pd | tikv | tiflash | ticdc].baseImage
在tidb-cluster.yaml
作为企业形象。企业形象格式为pingcap / [tidb | pd | tikv | tiflash | ticdc)企业
.
例如:
规格:...pd:基本图像:pingcap/pd-企业...tikv:基本图像:pingcap/tikv-企业
使用本地存储
使用<一个href="https://cloud.google.com/compute/docs/disks">区域持续的磁盘作为主要的生产配置。为了模拟裸金属性能,一些GCP实例类型提供了额外的功能<一个href="https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd">本地存储卷.您可以为TiKV节点池选择这样的实例,以实现更高的IOPS和更低的延迟。
注:
不能动态更改正在运行的TiDB集群的存储类。您可以创建一个新的集群来进行测试。
在GKE升级期间,<一个href="https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd">本地存储器中的数据将丢失由于节点重建。当节点重构发生时,您需要迁移TiKV中的数据。如果不需要迁移数据,建议不要在生产环境中使用本地磁盘。
为TiKV创建具有本地存储的节点池:
gcloud容器节点池创建tikv--集群tidb--机器类型n1-standard-4--num节点=1--本地ssd计数1\--节点标签专用的=tikv——节点污染专用的=tikv:NoSchedule
如果TiKV节点池已经存在,您可以删除旧的池,然后创建一个新的,或者更改池名称以避免冲突。
部署本地卷供应器。
你需要使用<一个href="https://sigs.k8s.io/sig-storage-local-static-provisioner">local-volume-provisioner查找和管理本地存储。执行以下命令将部署并创建
本地存储
存储类别:kubectl应用-fhttps://raw.githubusercontent.com/pingcap/tidb-operator/master/manifests/gke/local-ssd-provision/local-ssd-provision.yaml
使用本地存储。
完成上述步骤后,本地卷供应器可以发现群集中的所有本地NVMe SSD磁盘。
修改
tikv.storageClassName
在tidb-cluster.yaml
归档本地存储
.