TiDB追番手帐(上)

TiDB追番记录

1.很有帮助的几个网站

  • 官方文档:https://pingcap.com/docs-cn/v3.0/

    • 完整准确的学习指南,可以了解到原理,部署,指南,版本历程等所有和TiDB相关的一切,有疑问或者遇到问题的时候,右上角搜索能解决大部分的问题,有问题先查官方文档~~~
  • TUG文档社区:https://asktug.com/

    • TiDB User Group 成员共同建立的问答社区网站,有问题查完官方文档,再来这里搜一搜,基本能解决大部分的问题啦~
  • 实战案例:https://pingcap.com/cases-cn/

    • 可以看到分享案例,了解不同场景下的处理方案和调整过程,学习解决问题的思路~
  • 官方分享视频:https://space.bilibili.com/86485707

    • Meetup活动视频,Paper Reading,官方活动直播,B站认证账号哦,是的,没错,好好学习在B站~~~
  • 成为参与者:https://pingcap.com/community-cn/

    • 回馈开源社区
  • TiDB-OPS:https://docs.tidb.cc/

    • 白盒内容:围绕 TiDB 为中心测试记录、运维总结;
    • 黑盒分析请看 https://bbs.tidb.cc
  • 运行在浏览器的TiDB: http://play.pingcap.com/ - 打开浏览器,可以直接创建数据库,对数据进行增删改查。关掉浏览器,一切都消失了,干净绿色环保

2.部署tips

以下描述基于V3.0.3版本,目标是常规部署适用,按照详细的官方文档指导步骤操作即可,每一步如果有问题,一定解决掉再进行下一步~

  • 服务器前置条件注意互信配置,ntp,cpu调度设置,磁盘格式

  • inventory.ini 文件内容建议每个作用域别名指定实例,方便识别及监控数据对应,举2个具体的:chestnut:

    • tidb节点

        1.别名tidb-1,
        2.节点IP,默认端口号4000,如果同一台服务器,多节点部署,可以指定其他端口号
        3.部署路径,默认全局统一部署路径,也可以根据服务器配置指定不同部署路径
        
        eg:
        [tidb_servers]
        tidb-1 ansible_host=x.x.x.x deploy_dir=/xxx/xxx
      
    • tikv节点

        1.别名tidb-1,
        2.节点IP,默认端口号20160,状态端口号20180,如果同一台服务器,多节点部署,可以指定其他端口号。另外,如果kv节点单服务器多实例部署,注意调节conf/tikv.toml CPU和内存资源分配,详情见官方文档说明
        3.部署路径,默认全局统一部署路径,也可以根据服务器配置指定不同部署路径
        4.labels信息,指定服务器的物理位置,作用在于多数据中心的场景下副本调度均衡
        
        eg:
        [tikv_servers]
        tikv-1  ansible_host=x.x.x.x  deploy_dir=/xxx/xxx tikv_port=20160 tikv_status_port=20180 			labels="zone=xxx,rack=xxx,host=xxx"
      
    • 全局配置

        1.部署路径,默认的安装及日志存储路径:
        	deploy_dir = XXXX
        2.是否开启binlog:
        	enable_binlog = False
        3.指定版本,下载各组件时根据这一项的配置拉取文件
        	tidb_version = v3.0.3
      
  • conf/tikv.toml 配置指定每个kv实例基础配置,比如对资源的利用限制,特殊存储引擎设置,日志相关设置等 详细配置请戳:tikv参数调优

常用配置项 类型 说明
sysnc-log bool 默认为 true,表示强制将数据刷到磁盘上。如果是非金融安全级别的业务场景,建议设置成 false,以便获得更高的性能
info-log-size string 日志大小上线,eg: 1GB
info-log-num int 日志保留个数,eg: 20
  • conf/tidb.toml 配置指定每个db实例基础配置,比如对资源的利用限制,安全设置,协议层设置,日志相关设置等。tidb的设置跟tikv,binlog等配置紧密相关,关联到上层服务接入,下游数据消费等,根据适用场景调整。详细配置说明请戳:tidb调优

  • group_vars/all.yml 全局配置,各组件默认端口号,日志相关设置等

  • 安装部署启动三个剧本,按照ansible-playbook的编剧模式依次演出

      1.local_prepare.yml,下载各组件
      2.bootstrap.yml,参数调整,基准条件测试,如果是测试环境,机器配置不能满足线上标准配置,可以调整剧本的测试选项跳过
      3.deploy.yml,按照配置剧本指定项通过中控机生成各路文件及脚本
      4.start.yml,启动整个集群
    
  • 第一次启动后,调整db实例配置,完成部署

      1.设置GC时间,决定可以数据闪回的时间上限制
      	update mysql.tidb set VARIABLE_VALUE="24h" where VARIABLE_NAME="tikv_gc_life_time";
      2.初始化用户,跟其他数据库一样,最基础的安全防护
      3.备份配置或者不配置,从心就好
    
  • 检查监控图及告警配置,根据每家公司的基础服务配置调整

3.常驻嘉宾tips

3.1 升级集群

  • 对比配置文件项差异

  • 注意inventory.ini文件中的版本标示

  • common_tasks/add_evict_leader_scheduler.yml

      storage调度leader策略配置,如果是线上环境,建议调大retries次数,
      避免leader还没有调度结束的kv节点在滚动过程中被强制起停
    
  • 2个剧本需要注意

      1.local_prepare.yml 下载指定版本的文件
      2.rolling_update.yml 2.X系列升级3.X系列需要使用excessive_rolling_update.yml,
      也可以指定tags来滚动更新特定组建的配置
    
  • 别忘记监控一起滚呀滚

3.2.扩容/缩容组件

按照官方文档一步一步走即可,不要着急,不要放过任何一个报错

  • 扩容/缩容 tidb/tikv组件 修改inventory.ini指定项,-l指定项部署及启动即可
  • 扩容/缩容 pd组件需要单独操作,因为涉及到这个集群的调度管理,保证pd实例节点数量奇数存活。
    • 扩容pd节点,inventory.ini 添加新的pd节点,deploy指定部署新增节点后,修改该节点的启动文件,将新增pd节点添加到当前集群

        1.编辑新增节点的启动文件 {deploy_dir}/scripts/run_pd.sh
        	1.1.移除 --initial-cluster="xxxx"
        	1.3.添加 --join="http://xx.xx.xx.xx:2379"
        2.启动该节点
        3.滚动整个集群及监控,更新元数据信息
      
    • 缩容pd节点

        1.通过pd-ctl工具下线pd节点pd-pd41,pd-ctl -u "http://xx.xx.xx.xx:2379" -d member delete name pd_pd41
        2.ansible-playbook stop.yml -l pd41 #指定停止要下线的pd节点
        3.inventory.ini 删除要先下线的pd节点
        4.滚动整个集群及监控,更新元数据信息
      

##下期预告

1.监控指南

  • overview 面板,集群概况,各组件主要信息状态

    • Services Port Status,各组件状态,异常么有显示具体组件地址,结合告警信息查看
    • PD,集群容量,region 基本健康状态信息
    • TiDB,db组件状态,直接反映集群对外提供服务的健康程度,QPS,Duration现象直观
    • TiKV,kv组件状态,存储层资源状态,容量使用情况等
    • System Info,服务器层概况,CPU,内存,IO,网络四大名捕
  • 根据告警或者应用的反馈情况,配合监控分类定位问题

    • tikv-details面板
      • 写热点
        • thread cpu & raft store cpu
        • gRPC
      • 读热点
        • gRPC,gRPC message count
        • coprocess,coprocess cpu & scan keys
    • overview 面板
      • 事务冲突
        • tidb,Lock Resolve OPS & KV Backoff OPS
    • tikv-trouble-shooting面板,见文知意

2.友情客串tips

  • 从哪里来

    • 从MySQL来,可以选择的交通方式有
      • drianer
      • syncer
      • lighting
      • DM
    • 从Amazon Aurora来,可选择的交通方式有
      • DM
    • 从CSV来,可选择的交通方式有
      • lighting
  • 到哪里去

    • 去MySQL/TiDB
    • 去Kafka
    • 去flash
    • 去file
  • 我是谁

    • TP主打
    • AP主打
    • 需要跨数据中心
4赞

感谢整理分享:+1:

这篇文章应该纳入 “如果我参加 TiDB 认证考试前就看过这篇文章多好” 系列,期待下集:laughing:

强 膜拜大佬