公众号:offer多多

V1

2022/01/27阅读:74主题:橙心

Lesson 23:数据丢失快速恢复(作者:高振娇)

Lesson 23:数据丢失快速恢复(作者:高振娇) 欢迎关注

  1. 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 不丢数据
async 不保证
async 不保证

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

分类:

后端

标签:

后端

作者介绍

公众号:offer多多
V1