TiDB教程(1)TiDB介绍与集群部署
一、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
6、查看集群信息并启动集群
tiup cluster list tiup cluster start mytidb
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
评论