TiDB追番记录
1.很有帮助的几个网站
-
官方文档:https://pingcap.com/docs-cn/v3.0/
- 完整准确的学习指南,可以了解到原理,部署,指南,版本历程等所有和TiDB相关的一切,有疑问或者遇到问题的时候,右上角搜索能解决大部分的问题,有问题先查官方文档~~~
-
TUG文档社区:https://asktug.com/
- TiDB User Group 成员共同建立的问答社区网站,有问题查完官方文档,再来这里搜一搜,基本能解决大部分的问题啦~
-
实战案例:https://pingcap.com/cases-cn/
- 可以看到分享案例,了解不同场景下的处理方案和调整过程,学习解决问题的思路~
-
官方分享视频:的个人空间_哔哩哔哩_Bilibili
- 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个具体的
-
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面板,见文知意
- tikv-details面板
2.友情客串tips
-
从哪里来
- 从MySQL来,可以选择的交通方式有
- drianer
- syncer
- lighting
- DM
- 从Amazon Aurora来,可选择的交通方式有
- DM
- 从CSV来,可选择的交通方式有
- lighting
- 从MySQL来,可以选择的交通方式有
-
到哪里去
- 去MySQL/TiDB
- 去Kafka
- 去flash
- 去file
-
我是谁
- TP主打
- AP主打
- 需要跨数据中心
阅读更多: