創建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 副本的錯。

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