tidb真的有吹的那么神吗 tidb( 三 )


6、查看 tidb 版本信息
select tidb_version();
Release Version: v2.1.0-rc.3-24-g23f90a6
Git Commit Hash: 23f90a68be321e724280da6033a2b63ebf6cc7dd
Git Branch: HEAD
UTC Build Time: 2018-10-10 09:18:39
GoVersion: go version go1.11 linux/amd64
Race Enabled: false
TiKV Min Version: 2.1.0-alpha.1-ff3dd160846b7d1aed9079c389fc188f7f5ea13e
Check Table Before Drop: false
7、备份 tidb 数据
全量备份可以采用 mydumper,增量备份需要开启 binlog,实时恢复采用商业版工具 reparo 。
8、查看监控数据
在 ansible 的配置文件 inventory.ini 里,有一个监控服务器的配置
[monitoring_servers]
10.1.163.87
deploy 的时候会默认在这个配置服务器上部署 grafana 组件,通过
admin/admin访问
具体一些常见的监控指标,请参考:
9、收集统计信息
set @@tidb_build_stats_concurrency=20;
set @@tidb_distsql_scan_concurrency=100;
set @@tidb_index_serial_scan_concurrency=20;
analyze table xxx index xxx;
修改上面三个参数可以提升 scan 效率 。
具体统计信息相关,请参考: 统计信息简介
1、Transaction too large
TiDB 对于事务有限制,简单来说以下几点:
单个事务的SQL 语句数量不能超过5000,( 在 tidb.yml 可配 stmt-count-limit )
单条 KV entry 不超过 6MB
KV entry 的总条数不超过 30w
KV entry 的总大小不超过 100MB
备注:假设某张表有4个索引,那么一条数据对应的 kv entry 为数据+索引,一共5个kv 记录 。
如果是批量 insert 或delete,建议先修改
set tidb_batch_insert = 1;
set tidb_batch_delete = 1;
update mysql.tidb set variable_value='https://www.doubo5.com/24h' where variable_name='tikv_gc_life_time';
再执行 SQL 。
如果是批量 update,建议采用 limit 循环的方式执行 。
2、GC life time is shorter than transaction duration
GC Life Time 间隔时间过短,长事务本应读到的数据可能被清理了,可使用如下命令增加 GC Life Time :
update mysql.tidb set variable_value='https://www.doubo5.com/30m' where variable_name='tikv_gc_life_time';
3、Lost connection to MySQL server during query
log 中是否有 panic
dmesg 中是否有 oom,命令: dmesg -T | grep -i oom
长时间没有访问,也会收到这个报错,一般是 tcp 超时导致的,tcp 长时间不用, 会被操作系统 kill 。
一个tidb集群表数量一个tidb集群表数量是40+个 。
1、在业务初期,数据量不大,业务流量和压力不大的时候,基本随便什么数据库都能够搞定,但很多时候业务的爆发性增长可能是没有办法预期的 。
2、省掉了开发人员去分库分表的代价,去掉中间件 。
3、目前tidb单集群最大的节点数大概是40+个,单表有最大上千亿条记录 。
4、活动流量高峰可直接新增机器就能解决,平常流量很低,可以直接下掉多余机器 。
5、存储是tikv的一个集群,计算是tidb的一个集群,这样就实现了存储与计算分离 。

秒懂生活扩展阅读