TiDB教程(1)TiDB介绍与集群部署

TangLu 未命名 2021-06-17 3095 0

一、TiDB介绍

TiDB是一款国产开源分布式数据库(https://pingcap.com/)它结合了关系型和非关系型数据库的特点,将自己定位为HTAP(混合事务处理)数据库(OLTP + OLAP的结合)。一个合格的HTAP数据库需要包含以下特点:

· 无限水平扩展能力

· 分布式事务的支持,并且数据能保持强一致性

· 故障自恢复的高可用能力

· 高性能分析能力

· 混合应用下,OLAP分析不影响OLTP事务

目前来说TiDB符合了以上特性,并且兼容MySQL协议和生态,迁移便捷、运维成本低。


二、TiDB架构

TiDB集群主要包含TiDB Server、PD Server、TiKV Server三个核心组件,除此还有用于解决用户复杂OLAP需求的TiSpark组件和简化云上部署的TiDB Operator。

· TiDB Server负责处理SQL请求,为集群提供计算能力。该组件是无状态的,理论上可以无限扩展。建议部署至少两个实例,通过LVS等负载均衡组件对外提供服务。当某实例故障后会影响该实例上正在进行的Session,出现单次请求失败的情况,重新连接后即可继续获得服务。

· PD Server集群管理者,存储元数据(某个Key存储在哪个TiKV节点);进行任务调度和负载均衡;分配全局唯一事务ID。建议部署基数个节点(推荐至少3个),其中的Leader节点负责处理所有操作,其他节点保证高可用。如果Leader节点故障,会自动选出新Leader并自动恢复服务。选举过程中会有几秒钟无法对外提供服务。

· TiKV Server数据存储引擎,为集群提供存储能力,扩展方便。建议至少部署三个节点,每份数据默认为3个副本,通过PD Server进行负载均衡调度。单个节点故障并不会影响集群服务。当节点失效达到一定时间(默认 30 分钟)还无法恢复,PD Server会将该节点数据自动迁移到其他的TiKV 节点


三、TiDB 集群部署

1、下载并安装TiUP,TiUP是TiDB 4.0版本引入的集群运维工具,支持部署TiDB集群、TiFlash、TiDB Binlog、TiCDC以及监控

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
source .bash_profile


2、使用TiUP安装cluster组件,通过TiUP cluster可以进行日常的运维工作,包括部署、启动、关闭、销毁、弹性扩缩容、升级 TiDB 集群、集群参数调整等。 如果已经安装过TiUP cluster组件,也可以进行更新

tiup cluster  #安装cluster
tiup update --self && tiup update cluster  #升级cluster


3、TiDB yaml配置文件

global:
  user: "tidb"
  ssh_port: 22 
  deploy_dir: "/usr/local/tidb"
  data_dir: "/data/tidb/"

server_configs: 
  tidb: 
    log.slow-threshold: 300
    binlog.enable: true 
    binlog.ignore-error: true
  tikv:
    readpool.storage.use-unified-pool: false
    readpool.coprocessor.use-unified-pool: true
  pd:
    schedule.leader-schedule-limit: 4
    schedule.region-schedule-limit: 2048
    schedule.replica-schedule-limit: 64
 
pd_servers:
  - host: 172.20.1.150
  
tidb_servers: 
  - host: 172.20.1.150
  
tikv_servers: 
  - host: 172.20.1.151  
  - host: 172.20.1.152
  - host: 172.20.1.153

pump_servers: 
  - host: 172.20.1.151
  - host: 172.20.1.152
  - host: 172.20.1.153

drainer_servers:
  - host: 172.20.1.150
    port: 8249
    data_dir: "/data/tidb/binlog/drainer-8249"
    config:
      syncer.db-type: "tidb"
      syncer.to.host: "172.20.1.150"
      syncer.to.user: "root"
      syncer.to.password: ""
      syncer.to.port: 4000


tiflash_servers:
  - host: 172.20.1.150


4、执行集群部署命令,由于会通过SSH连接到yaml配置中所指定的机器,可以提前做好免密登录,就不用手动指定用户名和密码了。如果配置文件没有问题,会输出提示说哪个节点要安装什么服务以及安装路径

# 查看当前支持部署的 TiDB 版本
tiup list tidb
 
# tiup cluster deploy <cluster-name> <tidb-version> /tidb.yaml  <--user> <-p>
tiup cluster deploy mytidb v5.0.0 /tidb.yaml



tidb.png


6、查看集群信息并启动集群

tiup cluster list
tiup cluster start mytidb


7、访问集群,每个TD Server上都会有一个4000端口用于提供服务
mysql -h 192.168.100.1 -P 4000 -u root

8、集群成功运行后访问任何一个PD Server节点2379端口都可以打开dashboard界面,默认用户名为 root,密码为空

curl http://{pd-ip}:2379/dashboard


9、查看集群拓扑结构和状态

tiup cluster display mytidb

评论