关于TiDB数据存储问题,有几个疑问?请指教,多谢

1,TiDB里面有information schema表存储一些用户数据
和表的列数据等数据,还有用户新建的数据库表的元数据
,这些数据是保存在哪呢?我觉得这个表是在TiDB生成的,
是不是在tidb通过什么途经保存到数据库??

2,如果不同用户,是通过不同权限来做隔离吗??我试过
添加一个用户test,默认是只看到information schema表。
如果我又添加了一个用户test1,给了所有权限,这个用户就
能看到其他用户的数据表。所以我觉得是通过权限来隔离的
,不知道有没有其他方式??

3,我了解到etcdv3是能落库的。不知道PD中的region和store
的信息,保存在etcd里面,是否会通过etcd存到数据库?
还是这只保存在内存里面??

1 个赞

TiDB 支持 MySQL Grant 权限控制 https://docs.pingcap.com/zh/tidb/v5.0/privilege-management#授予权限 和 RBAC 权限控制 https://docs.pingcap.com/zh/tidb/v5.0/role-based-access-control

这些信息都是存储到 TiKV 的,也就是你说的磁盘。

1 个赞

etcd 本身就是 storage,它目前只是会保存一些元信息,TiDB 会用它来作 DDL 同步之类的分布式锁的作用。这部分是会落地到 etcd 的。其他的 region 信息,目前直接存储在 PD 里面自己维护的 storage,也会落盘。

1 个赞
权限部分那就和我理解的差不多。关于存储,

元数据也是存在TiKV(RocksDB)??
我之前理解分片的数据和raft-log才存储在
TiKV的RocksDB。元数据也没分片,看起来是在
TiDB层管理,这是怎么存储到tikv和RocksDB的?

1 个赞

1.我看到在TiDB的代码,在执行DDL命令时会调用CreateTable
将表的元数据按kv方式存到tikv中。

2.那么系统起来就存在的表呢??如INFORMATION_SCHEMA、
PERFORMANCE_SCHEMA、mysql和test。

3.我理解是这样,不知道是否正确??
1)我看TiDB初始化的时候会直接将表信息写到INFORMATION_SCHEMA和PERFORMANCE_SCHEMA的&model.DBInfo中,append到一个
virtualTableDriver中,没看到后续怎么存的。这部分是不是仅仅存在内存中??
2) mysql和test的表在bootstrap函数也会调用doDDLWorks将创建数据库
和表的sql命令执行一次.这里是否就走正常写流程,将这些表元数据写入Tikv了?

你好,我觉得pd的数据应该保存在自己的数据目录中吧,不用保存到tikv中吧。。:joy:
是嘛?

嗯,上面说的是数据表的元数据是存在tikv。
我理解,PD的数据就应该是通过etcd落盘吧,
包括 DDL 同步的分布式锁和region分布的信息。
不知道是否还有其他数据

嗯,通过etcd落盘,
具体信息我觉得应该就是一些控制的信息吧,路由,tikv整个集群的元信息,TSO,集群ID等吧

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。