创建TiFlash副本

官网
官方资料

创建TiFlash副本

TiFlash 接入 TiKV 集群后,默认不会开始同步数据。可通过 MySQL 客户端向 TiDB 发送 DDL 命令来为特定的表建立 TiFlash 副本:
1、为表建立副本(可以参考自身配置的tiflash数量配置副本数量):

#test1 测试表 创建一个tiflash副本
ALTER TABLE test1 SET TIFLASH REPLICA 1

删除副本(命令备用):

ALTER TABLE test1 SET TIFLASH REPLICA 0

假设有一张表 t已经通过上述的 DDL 语句同步到 TiFlash,则通过以下语句创建的表也会自动同步到 TiFlash(命令备用):

CREATE TABLE table_name like t

2、查看表同步进度
可通过如下 SQL 语句查看特定表(通过 WHERE 语句指定,去掉 WHERE 语句则查看所有表)的 TiFlash 副本的状态:

SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = '<db_name>' and TABLE_NAME = '<table_name>'

注:查询结果中:
AVAILABLE 字段表示该表的 TiFlash 副本是否可用。1 代表可用0 代表不可用
PROGRESS 字段代表同步进度,在 0.0~1.0 之间,1 代表至少 1 个副本已经完成同步。

使用案例:

SELECT * FROM information_schema.tiflash_replica

在这里插入图片描述
验证查询所走的是kv还是tiflash副本

-- 验证是否使用副本
-- explain analyze select * from test1

手动指定查询所使用的存储模块(tikv/tiflash)

select /*+ read_from_storage(tikv[test1] )*/ * from test1;
select /*+ read_from_storage(tiflash[test1] )*/ * from test1;

所使用的引擎

Engine 隔离是通过配置变量来指定所有的查询均使用指定 engine 的副本,可选 engine 为 tikv 和 tiflash,分别有 2 个配置级别:

1、会话级别,即 SESSION 级别。设置语句:

#查询默认配置的引擎
select @@session.tidb_isolation_read_engines
#设置
set @@session.tidb_isolation_read_engines = "逗号分隔的 engine list";set SESSION tidb_isolation_read_engines = "逗号分隔的 engine list";

会话级别的默认配置继承自 TiDB 实例级别的配置,见 2。

2、TiDB 实例级别,即 INSTANCE 级别,和会话级别配置是交集关系。比如实例级别配置了 “tikv, tiflash”,而会话级别配置了 “tikv”,则只会读取 TiKV。

在 TiDB 的配置文件添加如下配置项:

[isolation-read]
engines = ["tikv", "tiflash"]

实例级别的默认配置为 [“tikv”, “tiflash”]。

当 engine 配置为 “tikv, tiflash”,即可以同时读取 TiKV 和 TiFlash 副本,优化器会自动选择。
指定了 engine 后,对于查询中的表没有对应 engine 副本的情况(因为 TiKV 副本是必定存在的,因此只有配置了 engine 为 tiflash 而 TiFlash 副本不存在这一种情况),查询会报该表不存在该 engine 副本的错。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章