關(guān)于Databend部署-集群版

一钻哩、準(zhǔn)備工作

  • 下載databend【根據(jù)各自的系統(tǒng)颜价,下載對(duì)應(yīng)的版本: uname -a】
    databend下載地址
  • 解壓對(duì)應(yīng)的壓縮包
  • 查看當(dāng)前系統(tǒng)是否支持avx/sse/avx2等指令集
# macos查看cpu支持的指令集
sysctl -a | grep machdep.cpu.features

# macos 查看cpu是否支持SSE 4.2
sysctl -a | grep machdep.cpu.features | grep SSE

# 查看支持的所有的指令集
sysctl machdep.cpu
  • 集群規(guī)劃:3個(gè)meta實(shí)例+3個(gè)query實(shí)例
    注意不同實(shí)例的端口配置答恶,確保集群唯一蔚晨,不沖突

接下來(lái)就是開始配置:【注:當(dāng)前采用的是單機(jī)多實(shí)例的方式部署齿诞,故數(shù)據(jù)存儲(chǔ)采用的是fs】

二、配置

關(guān)于databend-meta配置乞巧,主要配置的內(nèi)容:【 注意端口和raft_id的唯一性

# 指定日志的目錄
log_dir            = "~/tests/databend/logs/log1"
# meta的管理地址
admin_api_address  = "0.0.0.0:28101"
# 讀寫meta的rpc地址
grpc_api_address   = "0.0.0.0:28102"

#### 關(guān)于meta集群化的raft配置:注意不同的實(shí)例id是不同的
[raft_config]
id            = 1
raft_dir      = "~/tests/databend/metas/meta1"
raft_api_port = 28103

# Assign raft_{listen|advertise}_host in test config.
# This allows you to catch a bug in unit tests when something goes wrong in raft meta nodes communication. 
raft_listen_host = "0.0.0.0"
raft_advertise_host = "localhost"

# 集群模式配置一
# 首先第一個(gè)啟動(dòng)的meta節(jié)點(diǎn)采用single方式
# Start up mode: single node cluster
single        = true

# 集群模式配置一
# 當(dāng)新增新的meta節(jié)點(diǎn)時(shí)配置
join                = ["0.0.0.0:28103"]
# Start up mode: single node cluster
single        = false
  • 樣例配置:meta集群第一個(gè)node
log_dir            = "~/tests/databend/logs/log1"
admin_api_address  = "0.0.0.0:28101"
grpc_api_address   = "0.0.0.0:28102"

[raft_config]
id            = 1
raft_dir      = "~/tests/databend/metas/meta1"
raft_api_port = 28103

# Assign raft_{listen|advertise}_host in test config.
raft_listen_host = "0.0.0.0"
raft_advertise_host = "localhost"

# Start up mode: single node cluster
single        = true
  • 新增新節(jié)點(diǎn)時(shí)的配置,以此類推調(diào)整對(duì)應(yīng)的配置文件join和single的配置
log_dir            = "~/tests/databend/logs/log2"
admin_api_address  = "0.0.0.0:28201"
grpc_api_address   = "0.0.0.0:28202"

[raft_config]
id            = 2
raft_dir      = "~/tests/databend/metas/meta2"
raft_api_port = 28203

# Assign raft_{listen|advertise}_host in test config.
# This allows you to catch a bug in unit tests when something goes wrong in raft meta nodes communication. 
raft_listen_host = "0.0.0.0"
raft_advertise_host = "localhost"

# 代表當(dāng)前節(jié)點(diǎn)要加入已存在的meta集群摊鸡,可以指定多個(gè)已存在的meta raft地址
join                = ["0.0.0.0:28103"]
# 此時(shí)對(duì)應(yīng)的single需設(shè)置為false
# Start up mode: single node cluster
single        = false

接下來(lái)就是關(guān)于databend-query配置
主要的配置項(xiàng)如下:

[query]
max_active_sessions = 256
wait_timeout_mills = 5000

# For flight rpc.
# 主要是進(jìn)行shuffle時(shí)使用地址
flight_api_address = "0.0.0.0:19091"

# query節(jié)點(diǎn)的http地址
# Databend Query http address.
# For admin RESET API.
admin_api_address = "0.0.0.0:18081"

# metrics的地址
# Databend Query metrics RESET API.
metric_api_address = "0.0.0.0:17071"

# mysql client的http訪問(wèn)地址
# Databend Query MySQL Handler.
mysql_handler_host = "0.0.0.0"
mysql_handler_port = 3307

# clickhouse client訪問(wèn)的http地址
# Databend Query ClickHouse Handler.
clickhouse_http_handler_host = "0.0.0.0"
clickhouse_http_handler_port = 18125

# http handler地址(采用curl之類的方式)
# Databend Query HTTP Handler.
http_handler_host = "0.0.0.0"
http_handler_port = 18001

# 用來(lái)標(biāo)識(shí)租戶id和集群id
tenant_id = "test_tenant"
cluster_id = "test_cluster"

table_engine_memory_enabled = true
database_engine_github_enabled = true

table_cache_enabled = true
table_memory_cache_mb_size = 1024
table_disk_cache_root = "_cache"
table_disk_cache_mb_size = 10240

# 日志相關(guān)配置
[log]
level = "ERROR"
dir = "~/tests/databend/logs/log1"
query_enabled = true

# meta server相關(guān)配置:主要是endpoints
[meta]
endpoints = ["0.0.0.0:28102","0.0.0.0:28202","0.0.0.0:28203"]
embedded_dir = "~/tests/databend/metas/meta_embedded_1"
# address = "0.0.0.0:9191"
username = "root"
password = "root"
client_timeout_in_second = 60
auto_sync_interval = 60

# 采用的存儲(chǔ)類型
# Storage config.
[storage]
# fs | s3 | azblob
type = "fs"

# 當(dāng)使用fs時(shí)需要指定一個(gè)本地路徑
# Set a local folder to store your data.
# Comment out this block if you're NOT using local file system as storage.
[storage.fs]
data_path = "~/tests/databend/datas/stateless_test_data"

配置時(shí)需要注意meta部分和storage部分
meta因?yàn)槭莄luster模式绽媒,需要指定endpoints; storage因?yàn)槭鞘褂玫膄s免猾,需要確保最終的數(shù)據(jù)存放到一個(gè)共享目錄或共享存儲(chǔ)還可以使用分布式文件存儲(chǔ)系統(tǒng)是辕,確保數(shù)據(jù)能夠被所有的databend-query節(jié)點(diǎn)共享。

  • 樣例配置如下: databend-query配置基本無(wú)差別( 注意端口的唯一性 )
[query]
max_active_sessions = 256
wait_timeout_mills = 5000

# For flight rpc.
flight_api_address = "0.0.0.0:19091"

# Databend Query http address.
# For admin RESET API.
admin_api_address = "0.0.0.0:18081"

# Databend Query metrics RESET API.
metric_api_address = "0.0.0.0:17071"

# Databend Query MySQL Handler.
mysql_handler_host = "0.0.0.0"
mysql_handler_port = 3307

# Databend Query ClickHouse Handler.
clickhouse_http_handler_host = "0.0.0.0"
clickhouse_http_handler_port = 18125

# Databend Query HTTP Handler.
http_handler_host = "0.0.0.0"
http_handler_port = 18001

tenant_id = "test_tenant"
cluster_id = "test_cluster"

table_engine_memory_enabled = true
database_engine_github_enabled = true

table_cache_enabled = true
table_memory_cache_mb_size = 1024
table_disk_cache_root = "_cache"
table_disk_cache_mb_size = 10240

[log]
level = "ERROR"
dir = "~/tests/databend/logs/log1"
query_enabled = true

[meta]
endpoints = ["0.0.0.0:28102","0.0.0.0:28202","0.0.0.0:28203"]
# To enable embedded meta-store, set address to "".
embedded_dir = "~/tests/databend/metas/meta_embedded_1"
# address = "0.0.0.0:9191"
username = "root"
password = "root"
client_timeout_in_second = 60
auto_sync_interval = 60

# Storage config.
[storage]
# fs | s3 | azblob
type = "fs"

# Set a local folder to store your data.
# Comment out this block if you're NOT using local file system as storage.
[storage.fs]
data_path = "~/tests/databend/datas/stateless_test_data"

三猎提、啟動(dòng)集群

  • 首先要啟動(dòng)meta
# 以single方式啟動(dòng)第一個(gè)meta節(jié)點(diǎn)
./bin/databend-meta -c  configs/databend-meta-1.toml > logs/meta_1.log 2>&1 &
# 新增其他節(jié)點(diǎn)到已存在的集群
./bin/databend-meta -c  configs/databend-meta-2.toml > logs/meta_2.log 2>&1 &
./bin/databend-meta -c  configs/databend-meta-3.toml > logs/meta_3.log 2>&1 &

驗(yàn)證meta集群

curl -s http://127.0.0.1:28101/v1/cluster/nodes
或者
# 確認(rèn)單個(gè)節(jié)點(diǎn)是否健康
curl -I http://127.0.0.1:28101/v1/health 
  • 啟動(dòng)databendq-query節(jié)點(diǎn)
./bin/databend-meta -c  configs/databend-query-1.toml > logs/query_1.log 2>&1 &

./bin/databend-meta -c  configs/databend-query-2.toml > logs/query_2.log 2>&1 &

./bin/databend-meta -c  configs/databend-query-3.toml > logs/query_3.log 2>&1 &

驗(yàn)證是否正常

 curl -I http://127.0.0.1:18081/v1/health

四获三、測(cè)試

1、官方性能測(cè)試用例:databend-performance
2锨苏、sql測(cè)試: databend-sql
3疙教、msyql client測(cè)試用例

注意3個(gè)databend-query的端口不同

mysql -h 127.0.0.1 -P 3307 -u root

create databease if not exists test_db;
use test_db;
create table if not exists tb_a(a int);
show create table tb_a;
insert into tb_a values(1), (2),(3),(4);
select * from tb_a;

五、部署過(guò)程中出現(xiàn)的問(wèn)題

1伞租、ERROR 1105 (HY000): Code: 3001, displayText = entity not found (object error:

* 大概率是databend-query數(shù)據(jù)存儲(chǔ)路徑不共享贞谓,并不是所有的實(shí)例都是可用的 *

2、新增meta實(shí)例后葵诈,啟動(dòng)沒(méi)有成功,

一般是join部分配置存在問(wèn)題裸弦, 可以將當(dāng)前集群已存在的節(jié)點(diǎn)都添加到待添加的新meta節(jié)點(diǎn)的配置文件join項(xiàng)中祟同;
或者時(shí)進(jìn)行單機(jī)多實(shí)例時(shí)端口沖突;
或者當(dāng)前meta節(jié)點(diǎn)raft_id是否全局唯一烁兰;

3耐亏、啟動(dòng)query節(jié)點(diǎn)失敗

注意meta配置的endpoints項(xiàng)是否正確;見上面的databend-query.toml模版

4沪斟、部署時(shí)多參考官方文檔
databend-standalone部署
databend-manage
關(guān)于Databend部署-單機(jī)版(測(cè)試)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末广辰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子主之,更是在濱河造成了極大的恐慌择吊,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件槽奕,死亡現(xiàn)場(chǎng)離奇詭異几睛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)粤攒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門所森,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人夯接,你說(shuō)我怎么就攤上這事焕济。” “怎么了盔几?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵晴弃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我逊拍,道長(zhǎng)上鞠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任芯丧,我火速辦了婚禮芍阎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缨恒。我一直安慰自己能曾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布肿轨。 她就那樣靜靜地躺著寿冕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪椒袍。 梳的紋絲不亂的頭發(fā)上驼唱,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音驹暑,去河邊找鬼玫恳。 笑死辨赐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的京办。 我是一名探鬼主播掀序,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惭婿!你這毒婦竟也來(lái)了不恭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤财饥,失蹤者是張志新(化名)和其女友劉穎换吧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钥星,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沾瓦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谦炒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贯莺。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宁改,靈堂內(nèi)的尸體忽然破棺而出乖篷,到底是詐尸還是另有隱情,我是刑警寧澤透且,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站豁鲤,受9級(jí)特大地震影響秽誊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜琳骡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一锅论、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧楣号,春花似錦最易、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至视译,卻和暖如春嬉荆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背酷含。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工鄙早, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汪茧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓限番,卻偏偏與公主長(zhǎng)得像舱污,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弥虐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容