参考资料:https://www.cnblogs.com/plyx/archive/2018/12/21/10158615.html

一、TiDB数据简介

  TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。

TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和

OLAP (Online Analytical Processing) 场景提供一站式的解决方案。


  TiDB 具备如下特性:

1、高度兼容 MySQL

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


2、水平弹性扩展

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


3、分布式事务

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

4、真正金融级高可用

  相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,

  可以实现故障的自动恢复 (auto-failover),无需人工介入。


5、一站式 HTAP 解决方案
  TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解决方案,一份存储同时处理 OLTP & OLAP,

  无需传统繁琐的 ETL 过程。


6、云原生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,免除用户数据同步的烦恼。

 二、生产环境部署推荐

  标准 TiDB 集群需要 6 台机器:
###########################################################################
2 个 TiDB 节点
3 个 PD 节点
3 个 TiKV 节点,第一台 TiDB 机器同时用作监控机
默认情况下,单台机器上只需部署一个 TiKV 实例。如果你的 TiKV 部署机器 CPU 及内存配置是部署
建议的两倍或以上,并且拥有两块 SSD 硬盘或单块容量超 2T 的 SSD 硬盘,可以考虑部署两实例,
但不建议部署两个以上实例。

单机单 TiKV 实例集群拓扑
Name    Host IP    Services
node1    172.16.10.1    PD1, TiDB1
node2    172.16.10.2    PD2, TiDB2
node3    172.16.10.3    PD3
node4    172.16.10.4    TiKV1
node5    172.16.10.5    TiKV2
node6    172.16.10.6    TiKV3
###########################################################################

三、个人演示环境部署

分配机器资源
# 单机Tikv实例
Name HostIP Services
bj-db-m1 10.10.146.28 PD1, TiDB1, TiKV1
bj-db-m2 10.10.1.139  PD2, TiDB2, TiKV2
bj-db-m3 10.10.173.84 PD3, TiKV3

10.10.69.73     bj-db-manage

3-1、安装中控机软件

yum -y install epel-release git curl sshpass atop vim htop net-tools 
yum -y install python-pip

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

# 创建tidb用户
useradd -m -d /home/tidb tidb
echo tidbpwd | passwd --stdin tidb

3-3、配置tidb用户sudo权限

# 配置tidb用户sudo权限
visudo
tidb ALL=(ALL) NOPASSWD: ALL


# 或者 
cat >>/etc/sudoers<<"EOF"
tidb    ALL=(ALL)      NOPASSWD: ALL
EOF

3-4、设置ssh免秘钥登录

  

# 使用tidb账户生成 ssh key
su - tidb 
ssh-keygen -t rsa 

# 一路回车
[root@bj-db-manage ~]# su - tidb
[tidb@bj-db-manage ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tidb/.ssh/id_rsa):
Created directory '/home/tidb/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tidb/.ssh/id_rsa.
Your public key has been saved in /home/tidb/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:XcP3rQqjGN1TDdMsjpy9vsTN+vl+jicsLknJHjx9UIk tidb@bj-db-manage
The key's randomart image is:
+---[RSA 2048]----+
|             . . |
|           .Eoo  |
|            B.+  |
|         o *.B ..|
|        So=o+.. o|
|       . .Bo.+.. |
|      . .o=++o+  |
|       o .+*.oooo|
|      . .  o*++*=|
+----[SHA256]-----+
[tidb@bj-db-manage ~]$

四、在中控机器上下载 TiDB-Ansible

1、# 下载Tidb-Ansible 版本
  cd /home/tidb && git clone -b release-2.0 https://github.com/pingcap/tidb-ansible.git
2、# 安装ansible及依赖
  cd /home/tidb/tidb-ansible/ && pip install -r ./requirements.txt

五、在中控机上配置部署机器ssh互信及sudo 规则

# 配置hosts.ini
su - tidb && cd /home/tidb/tidb-ansible
[tidb@bj-db-manage tidb-ansible]$ cat /home/tidb/tidb-ansible/hosts.ini 
[servers]
10.10.146.28
10.10.1.139
10.10.173.84

[all:vars]
username = tidb
ntp_server = pool.ntp.org
[tidb@bj-db-manage tidb-ansible]$ # 配置ssh 互信 ansible
-playbook -i hosts.ini create_users.yml -u root -k
[tidb@bj-db-manage tidb-ansible]$ ansible-playbook -i hosts.ini create_users.yml -u root -k
SSH password:

PLAY [all] **************************************************************************************************************************

TASK [create user] ******************************************************************************************************************
changed: [10.10.1.139]
changed: [10.10.146.28]
changed: [10.10.173.84]

TASK [set authorized key] ***********************************************************************************************************
changed: [10.10.146.28]
changed: [10.10.1.139]
changed: [10.10.173.84]

TASK [update sudoers file] **********************************************************************************************************
ok: [10.10.1.139]
ok: [10.10.146.28]
ok: [10.10.173.84]

PLAY RECAP **************************************************************************************************************************
10.10.1.139                : ok=3    changed=2    unreachable=0    failed=0   
10.10.146.28               : ok=3    changed=2    unreachable=0    failed=0   
10.10.173.84               : ok=3    changed=2    unreachable=0    failed=0   

Congrats! All goes well. :-)
[tidb@bj-db-manage tidb-ansible]$ # 需要输入root的密码 0zWYbnc55Wh20eDwbRHx

六、在目标机器上安装ntp服务

# 中控机器上给目标主机安装ntp服务
 cd /home/tidb/tidb-ansible
 ansible-playbook -i hosts.ini deploy_ntp.yml -u tidb -b

七、目标机器上调整cpufreq

  备注:传统物理机器需要,我的环境是云主机,不适合

1、 # 查看cpupower 调节模式,目前虚拟机不支持,调节10服务器cpupower
2、 cpupower frequency-info --governors
3、 analyzing CPU 0:
4、 available cpufreq governors: Not Available
5、 # 配置cpufreq调节模式
6、 cpupower frequency-set --governor performance
View Code

相关文章:

  • 2022-12-23
  • 2021-07-15
  • 2022-12-23
  • 2021-06-28
  • 2021-09-28
  • 2021-09-16
  • 2021-12-22
猜你喜欢
  • 2022-12-23
  • 2021-12-06
  • 2022-12-23
  • 2021-09-19
  • 2021-08-27
  • 2021-12-31
相关资源
相似解决方案