[关闭]
@zhangyy 2021-07-15T17:17:15.000000Z 字数 5926 阅读 244

tiup实操部署tidb5.1.0 最新版本

tidb系列


一:tidb简介与架构

1.1 tidb 简介

  1. TiDB PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。
  2. 更多详细参考官网:
  3. https://docs.pingcap.com/zh/tidb/stable

1.2 tidb架构

  1. TiDB 整体架构
  2. 与传统的单机数据库相比,TiDB 具有以下优势:
  3. 纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容
  4. 支持 SQL,对外暴露 MySQL 的网络协议,并兼容大多数 MySQL 的语法,在大多数场景下可以直接替换 MySQL
  5. 默认支持高可用,在少数副本失效的情况下,数据库本身能够自动进行数据修复和故障转移,对业务透明
  6. 支持 ACID 事务,对于一些有强一致需求的场景友好,例如:银行转账
  7. 具有丰富的工具链生态,覆盖数据迁移、同步、备份等多种场景
  8. 在内核设计上,TiDB 分布式数据库将整体架构拆分成了多个模块,各模块之间互相通信,组成完整的 TiDB 系统。对应的架构图如下:

image_1fakegnbn1gi1glc1tg0bvs1ifl9.png-284.1kB

  1. TiDB ServerSQL 层,对外暴露 MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。TiDB 层本身是无状态的,实践中可以启动多个 TiDB 实例,通过负载均衡组件(如 LVSHAProxy F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个 TiDB 实例上以达到负载均衡的效果。TiDB Server 本身并不存储数据,只是解析 SQL,将实际的数据读取请求转发给底层的存储节点 TiKV(或 TiFlash)。
  2. PD (Placement Driver) Server:整个 TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 IDPD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点,可以说是整个集群的“大脑”。此外,PD 本身也是由至少 3 个节点构成,拥有高可用的能力。建议部署奇数个 PD 节点。
  3. 存储节点
  4. TiKV Server:负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 RegionTiKV API KV 键值对层面提供对分布式事务的原生支持,默认提供了 SI (Snapshot Isolation) 的隔离级别,这也是 TiDB SQL 层面支持分布式事务的核心。TiDB SQL 层做完 SQL 解析后,会将 SQL 的执行计划转换为对 TiKV API 的实际调用。所以,数据都存储在 TiKV 中。另外,TiKV 中的数据都会自动维护多副本(默认为三副本),天然支持高可用和自动故障转移。
  5. TiFlashTiFlash 是一类特殊的存储节点。和普通 TiKV 节点不一样的是,在 TiFlash 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。

二:tidb的最新版本实操部署

2.1 采用tiup 实操部署tidb5.1.0

2.1.1 系统环境介绍

  1. 系统环境介绍:
  2. cat /etc/hosts
  3. ----
  4. 192.168.100.11 node01.flyfish.com
  5. 192.168.100.12 node02.flyfish.com
  6. 192.168.100.13 node03.flyfish.com
  7. 192.168.100.14 node04.flyfish.com
  8. 192.168.100.15 node05.flyfish.com
  9. 192.168.100.16 node06.flyfish.com
  10. 192.168.100.17 node07.flyfish.com
  11. 192.168.100.18 node08.flyfish.com
  12. 192.168.100.19 node09.flyfish.com
  13. ----
  14. 本次部署采取前6台服务器:

image_1fakept7nro2vvr16i18bh132f16.png-115kB

  1. tidb的下载试用:
  2. https://pingcap.com/download-cn/community/

image_1fakeu0g8lnsku6eo21vf716fa1j.png-211.2kB

2.1.2 系统环境初始化

  1. 系统环境语言:
  2. echo "export LANG=en_US.UTF8" >> ~/.bash_profile
  3. cat ~/.bash_profile
  4. 安装用户创建:
  5. useradd tidb && echo tidb |passwd tidb --stdin
  6. tidb用户提权:
  7. chmod +x /etc/sudoers
  8. -----
  9. tidb ALL=(ALL) NOPASSWD:ALL
  10. ----
  11. 系统句柄数与优化
  12. cat >> /etc/security/limits.conf << EOF
  13. root soft nofile 1048576
  14. root hard nofile 1048576
  15. tidb soft nproc 1048576
  16. tidb hard nproc 1048576
  17. tidb soft nofile 1048576
  18. tidb hard nofile 1048576
  19. tidb soft stack 10240
  20. tidb hard stack 32768
  21. tidb hard memlock unlimited
  22. tidb soft memlock unlimited
  23. EOF
  24. --------
  25. cat >> /etc/sysctl.conf << EOF
  26. fs.aio-max-nr = 1048576
  27. fs.file-max = 6815744
  28. net.ipv4.ip_local_port_range = 9000 65500
  29. net.ipv4.conf.default.accept_source_route = 0
  30. net.ipv4.tcp_max_syn_backlog = 4096
  31. net.ipv4.conf.all.arp_filter = 1
  32. net.core.rmem_default = 262144
  33. net.core.rmem_max = 4194304
  34. net.core.wmem_default = 262144
  35. net.core.wmem_max = 1048586
  36. kernel.sem = 204800 512000 3000 20480
  37. kernel.shmmax = 1073741824
  38. kernel.shmall = 262144
  39. kernel.shmmni = 4096
  40. kernel.sysrq = 1
  41. kernel.core_uses_pid = 1
  42. kernel.msgmnb = 65536
  43. kernel.msgmax = 65536
  44. kernel.msgmni = 2048
  45. vm.swappiness = 10
  46. vm.overcommit_memory = 2
  47. vm.overcommit_ratio = 95
  48. vm.zone_reclaim_mode = 0
  49. vm.dirty_expire_centisecs = 500
  50. vm.dirty_writeback_centisecs = 100
  51. vm.dirty_background_ratio = 3
  52. vm.dirty_ratio = 10
  53. #64g-
  54. #vm.dirty_background_ratio = 3
  55. #vm.dirty_ratio = 10
  56. #64g+
  57. #vm.dirty_background_ratio = 0
  58. #vm.dirty_ratio = 0
  59. #vm.dirty_background_bytes = 1610612736
  60. #vm.dirty_bytes = 4294967296
  61. EOF
  62. sysctl -p
  63. ----
  64. tidb 无密码认证:
  65. tidb用户无密钥认证
  66. su - tidb
  67. ssh-keygen ---一直敲回车到最后
  68. cat id_rsa.pub >> authorized_keys
  69. chmod 600 authorized_keys
  70. 将所有的公钥导入authorized_keys 分发到 所有的 机器的/home/tidb/.ssh/ 下面
  71. 然后测试
  72. 系统同步时间:ntp1.aliyun.com iburst
  73. chronyc sources -v

image_1fakh7tgrlu41bn71bul1ut3a6n9.png-170.8kB

image_1fakhahp77r71envol39rs1ujam.png-98.4kB

2.1.4 安装tidb5.1.0

  1. mv tidb-community-server-v5.1.0-linux-amd64.tar.gz /home/tidb/
  2. chown tidb:tidb /home/tidb/tidb-community-server-v5.1.0-linux-amd64.tar.gz
  3. tar -zxvf tidb-community-server-v5.1.0-linux-amd64.tar.gz
  4. source local_install.sh
  5. 加载tiup命令
  6. source /home/tidb/.bash_profile
  7. tiup --help

image_1faki4dggp4987b10l31f8n1t1v13.png-113.7kB

  1. 创建部署deploy_dir data_dir 目录[所有机器全部部署]
  2. sudo mkdir /tidb_deploy
  3. sudo mkdir /tidb_data
  4. sudo chmod 777 -R /tidb*

  1. 创建拓扑文件:
  2. su - tidb
  3. cd /home/tidb/
  4. vim topology.yaml
  5. ---
  6. # # Global variables are applied to all deployments and used as the default value of
  7. # # the deployments if a specific deployment value is missing.
  8. global:
  9. user: "tidb"
  10. ssh_port: 22
  11. deploy_dir: "/tidb-deploy"
  12. data_dir: "/tidb-data"
  13. server_configs:
  14. pd:
  15. replication.enable-placement-rules: true
  16. pd_servers:
  17. - host: 192.168.100.11
  18. - host: 192.168.100.12
  19. - host: 192.168.100.13
  20. tidb_servers:
  21. - host: 192.168.100.11
  22. - host: 192.168.100.12
  23. - host: 192.168.100.13
  24. tikv_servers:
  25. - host: 192.168.100.14
  26. - host: 192.168.100.15
  27. - host: 192.168.100.16
  28. tiflash_servers:
  29. - host: 192.168.100.14
  30. data_dir: /data/tiflash/data
  31. cdc_servers:
  32. - host: 192.168.100.14
  33. - host: 192.168.100.15
  34. - host: 192.168.100.16
  35. monitoring_servers:
  36. - host: 192.168.100.11
  37. grafana_servers:
  38. - host: 192.168.100.11
  39. alertmanager_servers:
  40. - host: 192.168.100.11
  41. ---
  42. 192.168.100.14:
  43. 创建tiflash文件
  44. sudo mkdir -p /data/tiflash/data/
  45. sudo chmod 777 -R /data/tiflash/data/
  46. 分发机器:
  47. su - tidb
  48. tiup cluster deploy tidb-test v5.0.1 topology.yaml --user tidb -i /home/tidb/.ssh/id_rsa
  49. 一直到机器分发完成。

image_1fakjtqrhaj51obpigl1k8d1f3420.png-289.4kB

image_1fakjufqr1uvc9jm4031fev151p2d.png-266.7kB

image_1fakjvl8aml2190q1vk8g31tag2q.png-206kB

image_1fakk06uf1cebe8arpm17759nu37.png-208.7kB

image_1fakk0jgtku9ltg1p5c1a3k17pe3k.png-212.9kB

  1. 启动tidb
  2. tiup cluster start tidb-test

image_1fakk7e5b4b5gti3dj1ps9f8f41.png-241.1kB

image_1fakk817h19d0cuvsb31m6e1oh24e.png-183.6kB

  1. 查看tidb的分布情况
  2. tiup cluster display tidb-test

image_1fakkdcc51tjf1amba86sshmcm4r.png-231kB

  1. 找一个pd 节点登录 [前提安装好mariadb 客户端工具有MySQL命令]
  2. mysql -uroot -h192.168.100.11 -P 4000 [就能登录tidb]
  3. 设置tidb的密码:
  4. set passwod = password(“123.com”)
  5. flush privileges;
  6. 推出在登录:
  7. mysql -uroot -h192.168.100.11 -P 4000 -p123.com
  8. 下面的操作就跟MySQL 是一样了。

image_1fakkkcnag4m1i1qf8u1bfqbhs68.png-157.9kB

  1. 打开web
  2. http://192.168.100.13:2379/dashboard
  3. 用户名:root
  4. 密码:123.com

image_1fakkmc92c59m6j1qgce051c496l.png-462.3kB

image_1fakkn85vs731d10341ibh1nid7i.png-494.2kB

image_1fakkpa228nef8c1kphv262ks8c.png-400kB

image_1fakko9fd12jdjsea8p15501rjr7v.png-526.8kB

  1. 打开prometheus:
  2. 192.168.100.11:9090

image_1fakl22qv10ekfa43ng6vr1avma0.png-160.5kB

image_1fakl2qf9jof9vg1nn03psc8pad.png-124.4kB

image_1fakl3jtd1mk62ik191m173ovpaaq.png-329kB

image_1fakl4ajfvgu167r1hnq1c284qb7.png-524kB

  1. grafana 监控打开:
  2. 192.168.100.11:3000
  3. 默认用户名密码:
  4. admin/admin

image_1fakkroir3u21vi911114h310b48p.png-117.9kB

image_1fakktnko1n5jd6u1a0r1ski16r996.png-872kB

image_1fakkv4p41bt6na2jlf1gmqqqg9j.png-381.6kB

  1. 插入表测试:
  2. mysql -uroot -h192.168.100.11 -P4000 -p123.com
  3. create database yangyang;
  4. use yangyang;
  5. 创建一个my_user表:
  6. CREATE TABLE `my_user` (
  7. `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  8. `account` varchar(255) DEFAULT NULL,
  9. `passwd` varchar(255) DEFAULT NULL,
  10. PRIMARY KEY (`id`)
  11. );
  12. 插入数据:
  13. INSERT INTO `my_user` VALUES ('1', 'admin', 'admin');
  14. INSERT INTO `my_user` VALUES ('2', 'pu', '12345');
  15. INSERT INTO `my_user` VALUES ('3', 'system', 'system');
  16. INSERT INTO `my_user` VALUES ('4', 'zxh', 'zxh');
  17. INSERT INTO `my_user` VALUES ('5', 'test', 'test');
  18. INSERT INTO `my_user` VALUES ('6', 'pudong', 'pudong');
  19. INSERT INTO `my_user` VALUES ('7', 'qiqi', 'qiqi');

image_1faklhl0r12f41s9gbnt188g1q1qbk.png-114.1kB

image_1fakli42grd61llo1tt715a2sjtc1.png-128.8kB

image_1faklioenpdq1eb61s1tod4l7uce.png-180.2kB

image_1faklj4uq1f31buv13bg15k2nm5cr.png-100.4kB


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注