TIDB 数据库集群部署

 一、TiDB数据介绍  1.1、TiDB数据简介

TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

TiDB 具备如下特性:

高度兼容 MySQL

大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。

水平弹性扩展

通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。

分布式事务

TiDB 100% 支持标准的 ACID 事务。

真正金融级高可用

相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。

一站式 HTAP 解决方案

TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解决方案,一份存储同时处理 OLTP & OLAP,无需传统繁琐的 ETL 过程。

云原生 SQL 数据库

TiDB 是为云而设计的数据库,支持公有云、私有云和混合云,使部署、配置和维护变得十分简单。

TiDB Server

TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入地址。

PD Server

Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。

PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署 3 个节点

TiKV Server

TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度

TiSpark

TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将 Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼

1.2、Tidb 数据基本操作

创建、查看和删除数据库

CREATE DATABASE db_name [options];
CREATE DATABASE IF NOT EXISTS samp_db;
DROP DATABASE samp_db;
DROP TABLE IF EXISTS person;
CREATE INDEX person_num ON person (number);
ALTER TABLE person ADD INDEX person_num (number);
CREATE UNIQUE INDEX person_num ON person (number);
CREATE USER 'tiuser'@'localhost' IDENTIFIED BY '123456';
GRANT SELECT ON samp_db.* TO 'tiuser'@'localhost';
SHOW GRANTS for tiuser@localhost;
DROP USER 'tiuser'@'localhost';
GRANT ALL PRIVILEGES ON test.* TO 'xxxx'@'%' IDENTIFIED BY 'yyyyy';
REVOKE ALL PRIVILEGES ON `test`.* FROM 'genius'@'localhost';
SHOW GRANTS for 'root'@'%';
SELECT Insert_priv FROM mysql.user WHERE user='test' AND host='%';
FLUSH PRIVILEGES;

二、TiDB Ansible 部署  2.1、安装Tidb集群基础环境

使用三台物理机搭建Tidb集群,三台机器ip 为 172.16.5.50,172.16.5.51,172.16.5.10,其中172.16.5.51作为中控机。

软件安装如下:

172.16.5.51 TiDB,PD,TiKV

172.16.5.50 TiKV

172.16.5.10 TiKV

安装中控机软件

1  yum -y install epel-release git curl sshpass atop vim htop net-tools
2  yum -y install Python-pip

在中控机上创建 tidb 用户,并生成 ssh key

# 创建tidb用户
useradd -m -d /home/tidb tidb && passwd tidb
# 配置tidb用户sudo权限
visudo
tidb ALL=(ALL) NOPASSWD: ALL
# 使用tidb账户生成 ssh key
su tidb && ssh-keygen -t rsa -C mikel@tidb

在中控机器上下载 TiDB-Ansible

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/33c955f0f0a426c0d940d222a00b9e51.html