公众号:offer多多
2022/01/27阅读:161主题:橙心
Lesson 23:数据丢失快速恢复(作者:高振娇)
Lesson 23:数据丢失快速恢复(作者:高振娇)
-
Q1:什么操作导致的 ?
DDL误操作

2.Q2 ddl 和dml操作恢复有区别吗?


FLASHBACK TABLE 语句来恢复被 DROP 或 TRUNCATE 删除的表以及数据


为什么 TiKV 容易出现 OOM?
tiKV 的内存占用主要来自于 RocksDB 的 block-cache,默认为系统总内存的 40%。
当 TiKV 容易出现 OOM 时,检查 block-cache-size 配置是否过高
TiKV block cache 有哪些特性?
TiKV 使用了 RocksDB 的 Column Family (CF) 特性,KV 数据最终存储在默认 RocksDB 内部的 default、write、lock 3 个 CF 内。
default CF 存储的是真正的数据,与其对应的参数位于 [rocksdb.defaultcf] 项中。
write CF 存储的是数据的版本信息 (MVCC)、索引、小表相关的数据,相关的参数位于 [rocksdb.writecf] 项中。
lock CF 存储的是锁信息,系统使用默认参数。
Raft RocksDB 实例存储 Raft log。
default CF 主要存储的是 Raft log,与其对应的参数位于 [raftdb.defaultcf] 项中。
所有 CF 共享一个 Block-cache,用于缓存数据块,加速 RocksDB 的读取速度。
Block-cache 的大小通过参数 block-cache-size 控制,block-cache-size 越大,能够缓存的热点数据越多,对读取操作越有利,同时占用的系统内存也会越多
。
每个 CF 有各自的 Write-buffer,大小通过 write-buffer-size 控制。
set @@tidb_mem_quota_query = 8 << 30;
https://docs.pingcap.com/zh/tidb/stable/tune-tikv-thread-performance
https://docs.pingcap.com/zh/tidb/stable/tune-tikv-memory-performance
https://github.com/pingcap/docs-cn/blob/release-5.3/tune-tikv-memory-performance.md
302 TiDB 高级系统管理 : 数据库 OOM 问题诊断与处理之 TiKV
3.Q3 TiKV 内存占用异常? https://asktug.com/t/topic/63556
-
TiKV 除了自身的 block cache 和 write buffer 会占用内存外,也是需要使用操作系统缓存的。如果前端有很多大查询 SQL,且部分查询的数据在内存中不存在,那需要将 KV 底层 SST 文件中的数据先读取到操作系统 page cache ,然后再加载到 block cache 中, 这时就可能导致总体内存使用率很高





-
Linux Page Cache的理解
https://qinglinmao8315.github.io/linux/2018/03/14/linux-page-cache.html https://en.wikipedia.org/wiki/Page_cache
社区 tikv节点cpu高IO高OOM排查 https://asktug.com/t/topic/513121
Lesson 26:数据库热点问题诊断与处理(作者:高振娇)

-
rpo =0 不丢数据


TiKV 线程池性能调优
UnifyReadPool 线程池:由 Coprocessor 线程池与 Storage Read Pool 合并而来,所有的读取请求包括 kv get、kv batch get、raw kv get、coprocessor 等都会在这个线程池中执行。
Raftstore 线程池:负责处理所有的 Raft 消息以及添加新日志的提议 (Propose)、将日志写入到磁盘,当日志在多数副本中达成一致后,它就会把该日志发送给 Apply 线程
UnifyReadPool 负责处理所有的【读】取请求。默认配置 (readpool.unified.max-thread-count) 大小为机器 CPU 数的 80% (如机器为 16 核,则默认线程池大小为 12)。
p Raftstore 线程池是 TiKV 最为复杂的一个线程池, 默认大小 (raftstore.store-pool-size) 为 2, 所有的写请求都会先在 Raftstore 线程 fsync 的方式写入 RocksDB



-
evict-leader-scheduler


作者介绍