溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL開源cetus簡析

發布時間:2020-04-26 15:32:36 來源:億速云 閱讀:217 作者:三月 欄目:MySQL數據庫

下文內容主要給大家帶來MySQL開源cetus簡析,這里所講到的知識,與書籍略有不同,都是億速云專業技術人員在與用戶接觸過程中,總結出來的,具有一定的經驗分享價值,希望給廣大讀者帶來幫助。

Cetus
簡介
Cetus是由C語言開發的關系型數據庫MySQL的中間件,主要提供了一個全面的數據庫訪問代理功能。Cetus連接方式與MySQL基本兼容,應用程序幾乎不用修改即可通過Cetus訪問數據庫,實現了數據庫層的水平擴展和高可用。
主要功能特性
Cetus分為讀寫分離和分庫(分表是分庫的一種特殊形式)兩個版本。
針對讀寫分離版本:

MySQL開源cetus簡析

  • 多進程無鎖提升運行效率
  • 支持透明的后端連接池
  • 支持SQL讀寫分離
  • 增強SQL路由解析與注入
  • 支持prepare語句
  • 支持結果集壓縮
  • 支持安全性管理
  • 支持狀態監控
  • 支持tcp stream流式
  • 支持域名連接后端
  • SSL/TLS支持(客戶端)
  • MGR支持
  • 讀強一致性支持(待實現)
    針對分庫版本:
  • 多進程無鎖提升運行效率
  • 支持透明的后端連接池
  • 支持SQL讀寫分離
  • 支持數據分庫
  • 支持分布式事務處理
  • 支持insert批量操作
  • 支持有條件的distinct操作
  • 增強SQL路由解析與注入
  • 支持結果集壓縮
  • 具有性能優越的結果集合并算法
  • 支持安全性管理
  • 支持狀態監控
  • 支持tcp stream流式
  • 支持域名連接后端
  • SSL/TLS支持(客戶端)
  • MGR支持
  • 讀強一致性支持(待實現)
    ==環境準備
    架構:
    主:192.168.1.222    從:192.168.1.223    cetus:192.168.1.221
    數據庫對cetus用戶授權
    CREATE database if not exists testdb;
    create user 'cetus_app'@'192.168.1.221' identified by 'cetus@123';
    GRANT all ON testdb.* TO 'cetus_app'@'192.168.1.221';

    主從延遲檢測準備
    創建心跳庫和心跳表,并為用戶授權
    例如:
    Cetus所在的主機ip為192.168.1.221

    create database if not exists proxy_heart_beat; 
    use proxy_heart_beat;
    CREATE TABLE if not exists tb_heartbeat ( p_id varchar(128) NOT NULL , p_ts timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY (p_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    GRANT ALL ON proxy_heart_beat.* TO 'cetus_app'@'192.168.1.221';

    注意:創建心跳表時p_ts精度必須到小數點后,否則會影響主從延遲檢測的準確度

    (cetus會額外啟動一個長連接連接主庫,一直執行類似語句:
    INSERT INTO proxy_heart_beat.tb_heartbeat (p_id, p_ts) VALUES ('/home/user/cetus_install/conf_2033375456_2567636547', '2019-02-27 17:03:37.106285') ON DUPLICATE KEY UPDATE p_ts='2019-02-27 17:03:37.106285'

    同時啟動一個長連接連接從庫庫,一直執行類似語句:

    select p_ts from proxy_heart_beat.tb_heartbeat where p_id='/home/user/cetus_install/conf_2070313331_376322286'
    主庫寫入時間戳,從庫讀取時間戳,與本地時間做差值,計算主從延遲
    )

    ==安裝cetus
    環境依賴

    yum install cmake gcc glib2-devel flex mysql-devel gperftools-libs zlib-devel -y 
    cd /usr/local/ && git clone https://github.com/Lede-Inc/cetus.git
    cd /usr/local/cetus/
    mkdir build/
    cd build/

    編譯
    讀寫分離版本:

    CFLAGS='-g -Wpointer-to-int-cast' cmake ../ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/home/user/cetus_install -DSIMPLE_PARSER=ON

    分庫版本:

    CFLAGS='-g -Wpointer-to-int-cast' cmake ../ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/home/user/cetus_install -DSIMPLE_PARSER=OFF
    make install
    cd /home/user/cetus_install/conf/

    配置文件在make insatll后存在示例文件,以.example結尾,目錄為/home/user/cetus_install/conf/,包括用戶設置文件(users.json)、變量處理配置文件(variables.json)、分庫版本的分片規則配置文件(sharding.json)、讀寫分離版本的啟動配置文件(proxy.conf)和分庫版本的啟動配置文件(shard.conf)。
    根據具體編譯安裝的版本編輯相關配置文件,若使用讀寫分離功能則需配置users.json和proxy.conf,若使用sharding功能則需配置users.json、sharding.json和shard.conf,其中兩個版本的variables.json均可選配。
    讀寫分離:

    cp proxy.conf.example proxy.conf
    cp users.json.example  users.json

    users.json用來配置用戶登陸信息,采用鍵值對的結構,其中鍵是固定的,值是用戶在MySQL創建的登陸用戶名和密碼。
    其中user的值是用戶名;client_pwd的值是前端登錄Cetus的密碼;server_pwd的值是Cetus登錄后端的密碼。

    chmod 660 conf/*
    啟動服務:
    bin/cetus --defaults-file=conf/proxy.conf

    客戶端連接數據庫:密碼為users.json中的client_pwd,地址端口為proxy.conf中的proxy-address

    mysql -ucetus_app -p'cetus@123' -P6001 -h292.168.1.221

    cetus本機登錄管理端口:

    mysql -h227.0.0.1 -uadmin -padmin -P7001
  • 對于以上關于MySQL開源cetus簡析,如果大家還有更多需要了解的可以持續關注我們億速云的行業推新,如需獲取專業解答,可在官網聯系售前售后的,希望該文章可給大家帶來一定的知識更新。

     

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女