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,免除用户数据同步的烦恼。
Linux 操作系统平台 |
版本 |
---|---|
Red Hat Enterprise Linux | 7.3 及以上 |
CentOS | 7.3 及以上 |
Oracle Enterprise Linux | 7.3 及以上 |
Ubuntu LTS | 16.04 及以上 |
备注:公司内部系统版本为 【 CentOS Linux release 7.3.1611 (Core) 】
TiDB 作为开源分布式 NewSQL 数据库,其正常运行需要网络环境提供如下的网络端口配置要求,管理员可根据实际环境中 TiDB 组件部署的方案,在网络侧和主机侧开放相关端口:
组件 |
默认端口 |
说明 |
---|---|---|
TiDB | 4000 | 应用及 DBA 工具访问通信端口 |
TiDB | 10080 | TiDB 状态信息上报通信端口 |
TiKV | 20160 | TiKV 通信端口 |
PD | 2379 | 提供 TiDB 和 PD 通信端口 |
PD | 2380 | PD 集群节点间通信端口 |
Pump | 8250 | Pump 通信端口 |
Drainer | 8249 | Drainer 通信端口 |
Prometheus | 9090 | Prometheus 服务通信端口 |
Pushgateway | 9091 | TiDB,TiKV,PD 监控聚合和上报端口 |
Node_exporter | 9100 | TiDB 集群每个节点的系统信息上报通信端口 |
Blackbox_exporter | 9115 | Blackbox_exporter 通信端口,用于 TiDB 集群端口监控 |
Grafana | 3000 | Web 监控服务对外服务和客户端(浏览器)访问端口 |
Grafana | 8686 | grafana_collector 通信端口,用于将 Dashboard 导出为 PDF 格式 |
Kafka_exporter | 9308 | Kafka_exporter 通信端口,用于监控 binlog kafka 集群 |
建议 4 台及以上,TiKV 至少 3 实例,且与 TiDB、PD 模块不位于同一主机
备注:标红部分为离线安装部署注意事项
1.在中控机上安装系统依赖包
在线安装:
以 root
用户登录中控机
如果中控机是 CentOS 7 系统,执行以下命令:
# yum -y install epel-release git curl sshpass # yum -y install python-pip
离线安装:
下载 :https://download.pingcap.org/ansible-system-rpms.el7.tar.gz 上传至中控系统,该离线包仅支持 CentOS 7 系统,包含 pip
及 sshpass
。
# tar -xzvf ansible-system-rpms.el7.tar.gz
# cd ansible-system-rpms.el7
# chmod u+x install_ansible_system_rpms.sh
# ./install_ansible_system_rpms.sh
安装完成后,可通过 pip -V
验证 pip 是否安装成功:
2.在中控机上创建 tidb 用户,并生成 ssh key
useradd -m -d /home/tidb tidb
passwd tidb
编辑 /etc/sudoers
# visudo
tidb ALL=(ALL) NOPASSWD: ALL
su - tidb
ssh-keygen -t rsa
$ cd /home/tidb/tidb-ansible
$ sudo pip install -r ./requirements.txt
$ ansible --version
离线安装:
(1)下载 Ansible 2.5 离线安装包 上传至中控机
# tar -xzvf ansible-2.5.0-pip.tar.gz
# cd ansible-2.5.0-pip/
# chmod u+x install_ansible.sh
# ./install_ansible.sh
验证:ansible --version
(2)解压tidb-ansible.tar.gz 到/home/tidb下,剩下操作正常进行即可
tidb-ansible.tar.gz为本地压缩的文件包,实际备份在192.168.0.81 服务器 ,路径为:/home/tidb/tidb-ansible.tar.gz
以 tidb
用户登录中控机,将你的部署目标机器 IP 添加到 hosts.ini
文件 [servers]
区块下。
$ ansible-playbook -i hosts.ini create_users.yml -u root -k
执行以下命令如果所有 server 返回 tidb
表示 ssh 互信配置成功。
|
执行以下命令如果所有 server 返回 root
表示 tidb
用户 sudo 免密码配置成功。
|
5.执行 local_prepare.yml
playbook,联网下载 TiDB binary 到中控机:
|
6.初始化系统环境,修改内核参数
|
7.部署 TiDB 集群软件
|
部署成功展示:
执行成功后节点tidb用户目录下会出现deploy的文件夹
8.启动 TiDB 集群
|
启动成功截图:
9.测试集群
1.deploy 时提示Make sure NTP service is runnning and ntpstat is synchronised
2.启动集群节点时报 Could not find the requested service node_exporter-9100.service: host"
问题:安装部署配置不完善(具体原因待查明)
解决方案:安装第四步骤加上 -k 参数 如下:
ansible-playbook deploy.yml -k