Using ClickHouse like MySQL by ProxySQL

用戶訪問ClickHouse镐牺,需要默認的客戶端clickhouse-client吵护,但是這個工具不夠友好:

  1. 需要額外安裝远剩,并且使用上,不是那么nice
  2. clickhouse-client其實是clickhouse的軟連接宏悦,即要么全裝镐确,要么不用

啥最普及鞍摺?
答:MySQL

基本所有的服務(wù)器都裝了mysql源葫,注意漏策,這里指的是mysql-client,就是那個讓你用命令行連接到MySQL服務(wù)的那個命令

ProxySQL是眾多MySQL中間件中的佼佼者臼氨,一直被Percona推崇,最近他們也放出了支持ClickHouse的版本

因此芭届,今天的話題就是:
ClickHouse+ProxySQL = Using ClickHouse like MySQL

Install

  • 安裝依賴
yum -y install   perl-DBD-MySQL
  • 注意
    • 支持ClickHouse的ProxySQL版本储矩,只支持Ubuntu 16, Debian 9, CentOS 7, and Fedora 24,其他版本的不要往下看了

啟動ProxySQL

# 默認配置文件是這個:
/etc/proxysql.cnf 

# 默認是沒有這個數(shù)據(jù)目錄的:
mkdir /var/lib/proxysql

# 啟動
proxysql --clickhouse-server

# ProxySQL默認會以daemon的方式在后臺

創(chuàng)建ClickHouse用戶

  • 用戶通過MySQL協(xié)議褂乍,訪問ProxySQL持隧,ProxySQL代理請求訪問ClickHouse
  • 在第一步里,需要一個密碼逃片,這個密碼不是ClickHouse的屡拨,而是訪問ProxySQL的
# 登陸本地的ProxySQL
# ProxySQL端口是6032,默認用戶名密碼在配置文件里寫有

root@10.x.x.x.x:/root  # mysql -h 127.0.0.1 -P 6032  -uadmin -padmin
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.30 (ProxySQL Admin Module)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> INSERT INTO clickhouse_users VALUES ('clicku','clickp',1,100);
Query OK, 1 row affected (0.00 sec)

MySQL [(none)]> select * from clickhouse_users ; 
+----------+----------+--------+-----------------+
| username | password | active | max_connections |
+----------+----------+--------+-----------------+
| clicku   | clickp   | 1      | 100             |
+----------+----------+--------+-----------------+
1 row in set (0.00 sec)

MySQL [(none)]> LOAD CLICKHOUSE USERS TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> SAVE CLICKHOUSE USERS TO DISK;
Query OK, 0 rows affected (0.00 sec)

通過MySQL客戶端連接ClickHouse

  • ProxySQL默認開啟6090端口褥实,來接收用戶對ClickHouse的訪問
# 使用上面的用戶名和密碼
# 如果是不同機器呀狼,記得改IP

root@10.x.x.x.x:/root  # mysql -h 127.0.0.1 -P 6090  -uclicku -pclickp --prompt "ProxySQL-ClickHouse> " 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.5.30 (ProxySQL ClickHouse Module)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

ProxySQL-ClickHouse> 

執(zhí)行ClickHouse操作

MySQL [(none)]> select version(); 
+-------------------+
| version           |
+-------------------+
| 5.5.30-clickhouse |
+-------------------+
1 row in set (0.00 sec)


MySQL [(none)]> select now();
+---------------------+
| now()               |
+---------------------+
| 2017-12-19 15:45:26 |
+---------------------+
1 row in set (0.00 sec)

MySQL [(none)]> select today(); 
+------------+
| today()    |
+------------+
| 2017-12-19 |
+------------+
1 row in set (0.00 sec)

# 我們的某個表 600多億
ProxySQL-ClickHouse> select count(*) from XXXXX ; 
+-------------+
| count()     |
+-------------+
| 62699641362 |
+-------------+
1 row in set (11.20 sec)

# 另一個表 1300多億
ProxySQL-ClickHouse> select count(*) from edge_msg_all;
+--------------+
| count()      |
+--------------+
| 131929726359 |
+--------------+
1 row in set (5.30 sec)

缺點

  • 缺乏clickhouse-client默認的
    1. SQL格式化
    2. SQL進度條
  • 這2個功能非常之好用,格式化后的SQL非常美觀损离,如果是要發(fā)給其他人的SQL哥艇,會顯得非常專業(yè)
  • 進度條功能可以明顯看到SQL的執(zhí)行進度,對于明顯慢的不能再慢的SQL僻澎,可以及時終止掉貌踏,防止把集群資源跑滿

問題

  • ProxySQL目前對后端的ClickHouse支持很弱,必須是本地的ClickHouse窟勃,并且祖乳,這個ClickHouse不能有密碼,目前是寫死的秉氧,不支持修改

總結(jié)

  • MySQL方式訪問ClickHouse眷昆,可以減少ClickHouse對于新手的陌生感,非常值得一試
  • ProxySQL還有很多先進的功能汁咏,這里沒有展開隙赁。不確定是否提供了SQL的控制功能,如果有梆暖,那簡直太好了

Reference

Update

  • 調(diào)研ProxySQL其實有一個明顯的目的伞访,那就是支持可視化方面的需求
  • 在github上有非常多的數(shù)據(jù)可視化項目,如Superset轰驳、SQLPad厚掷、Metabase弟灼、Franchise等,但是只有Superset官方支持了ClickHouse冒黑,其他幾個都不支持田绑,但是支持MySQL
  • 雖然ProxySQL給ClickHouse做了一層包裝,可以用MySQL協(xié)議訪問ClickHouse抡爹,但是由于各家具體產(chǎn)品在實際操作過程中的命令不同掩驱,導(dǎo)致無法使用
  • Metabase
    • 執(zhí)行了一個命令,select CONCAT(DATE_FORMAT(current_timestamp, '%Y-%m-%d %H:%i:%S.%f' ), ' ', @@system_time_zone);冬竟,這做不到啊
  • SqlPad
    • 獲取DB信息的時候欧穴,需要查詢INFORMATION_SCHEMA.columns,這個也做不到啊
  • Franchise直接沒跑通
  • Redash
    • 安裝復(fù)雜泵殴,還要額外依賴PG和Redis涮帘,沒試
  • 我們覺得還是繼續(xù)用Superset吧。笑诅。调缨。。

ProxySQL在ClickHouse里能干嗎吆你?

  • 之所以討論這個問題弦叶,原因是有的同學(xué)對中間件產(chǎn)生了誤會,誤以為ProxySQL會主動幫你把MySQL的函數(shù)轉(zhuǎn)換成ClickHouse的函數(shù)
  • 然鵝并不是這個意思
  • ProxySQL的意義妇多,是提供了一個MySQL協(xié)議的通訊方式湾蔓,具體的SQL還得是ClickHouse自己的
  • 說白了,以前你用Python的mysqldb模塊砌梆,寫MySQL專有的函數(shù)操作MySQL,現(xiàn)在數(shù)據(jù)庫操作類咸包、方法不用變桃序,把SQL寫成ClickHouse專門的函數(shù)或者語法,ProxySQL幫你去操作ClickHouse
  • 注意一點烂瘫,如果是mysqldb模塊媒熊,需要在SQL里用db.tb的方式來指定數(shù)據(jù)庫名
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市坟比,隨后出現(xiàn)的幾起案子芦鳍,更是在濱河造成了極大的恐慌,老刑警劉巖葛账,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柠衅,死亡現(xiàn)場離奇詭異,居然都是意外死亡籍琳,警方通過查閱死者的電腦和手機菲宴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門贷祈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喝峦,你說我怎么就攤上這事势誊。” “怎么了谣蠢?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵粟耻,是天一觀的道長。 經(jīng)常有香客問我眉踱,道長挤忙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任勋锤,我火速辦了婚禮,結(jié)果婚禮上侥祭,老公的妹妹穿的比我還像新娘叁执。我一直安慰自己,他們只是感情好矮冬,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布谈宛。 她就那樣靜靜地躺著,像睡著了一般胎署。 火紅的嫁衣襯著肌膚如雪吆录。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天琼牧,我揣著相機與錄音恢筝,去河邊找鬼。 笑死巨坊,一個胖子當著我的面吹牛撬槽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播趾撵,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼侄柔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了占调?” 一聲冷哼從身側(cè)響起暂题,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎究珊,沒想到半個月后薪者,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡剿涮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年赶站,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贝椿。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡烙博,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渣窜,到底是詐尸還是另有隱情宪躯,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布详瑞,位于F島的核電站臣缀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏精置。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一番宁、第九天 我趴在偏房一處隱蔽的房頂上張望赖阻。 院中可真熱鬧,春花似錦播聪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沉眶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谎倔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工片习, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人状知。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓饥悴,卻偏偏與公主長得像盲再,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子洲胖,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348