中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

MySQL 中間件Atlas 實現讀寫分離

發布時間:2020-08-11 06:39:36 來源:ITPUB博客 閱讀:261 作者:神諭丶 欄目:MySQL數據庫
〇 Atlas架構介紹

Atlas是Qihoo360開發的一個中間件,位于Client和MySQL Server中間層,可以作為讀寫分離,分庫分表中間件。
對于MySQL Server而言,Atlas像是個Client,而對于Client而言,Atlas則是一個DB server。

MySQL 中間件Atlas 實現讀寫分離





〇 實驗結構

OS: CentOS 6.5 64bit
MySQL version: 5.6.30

Master:192.168.1.185
Slave:192.168.1.186
proxy(Atlas):192.168.1.187
客戶端:192.168.1.192




〇 MySQL部分:
(主從建立步驟略)
主/從上建立具有增刪改查賬號:
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'dev'@'192.168.1.187' IDENTIFIED BY 'dev';
  • FLUSH PRIVILEGES;

  • 從庫上可以設置:
    1. SET GLOBAL log_output='TABLE';
    2. SET GLOBAL general_log=on;

    master上創建一張測試表:
    1. master> CREATE TABLE test.a(id int);
    2. Query OK, 0 rows affected (0.03 sec)

    然后再到客戶端(192.168.1.192)嘗試對Atlas(192.168.1.187)發起增刪改查請求:

    此處寫了一個php腳本來模擬請求:
    1. <?php
    2. $con = mysql_connect("192.168.1.187","dev","dev");
    3. if (!$con){
    4.   die('connect error: ' . mysql_error());
    5.   }

    6. mysql_select_db("my_db", $con);

    7. mysql_query("INSERT INTO test.a SELECT 1;");
    8. mysql_query("UPDATE test.a SET id=222 WHERE id=1;");
    9. mysql_query("DELETE FROM test.a WHERE id=222;");
    10. mysql_query("INSERT INTO test.a SELECT 123456;");
    11. mysql_query("SELECT count(1) FROM test.a;");

    12. mysql_close($con);
    13. ?>

    此處可以通過 yum install -y php php-mysql 來安裝一下php相關依賴。

    執行這個php腳本后,可以分別檢查一下master(192.168.1.185)和從庫(192.168.1.186)的general log:
    1. master> SELECT user_host, argument
    2.     -> FROM mysql.general_log
    3.     -> WHERE user_host='dev[dev] @ [192.168.1.187]' ;
    4. +-----------------------------+-------------------------------------+
    5. | user_host                   | argument                            |
    6. +-----------------------------+-------------------------------------+
    7. | dev[dev] @ [192.168.1.187]  | INSERT INTO test.a SELECT 1         |
    8. | dev[dev] @ [192.168.1.187]   | UPDATE test.a SET id=222 WHERE id=1 |
    9. | dev[dev] @ [192.168.1.187]  | DELETE FROM test.a WHERE id=222     |
    10. | dev[dev] @ [192.168.1.187]  | INSERT INTO test.a SELECT 123456    |
    11. +-----------------------------+-------------------------------------+
    12. 4 rows in set (0.00 sec)

    13. slave> SELECT user_host, argument
    14.    -> FROM mysql.general_log
    15.    -> WHERE user_host='dev[dev] @ [192.168.1.187]' ;
    16. +-----------------------------+-----------------------------+
    17. | user_host                   | argument                    |
    18. +-----------------------------+-----------------------------+
    19. | dev[dev] @ [192.168.1.187 | SELECT count(1) FROM test.a |
    20. +-----------------------------+-----------------------------+
    21. 1 rows in set (0.00 sec)

    最后再檢查一下跑完這個php腳本后的test.a表的數據,是否和預期的一致:
    1. slave> SELECT * FROM test.a;
    2. +--------+
    3. | id     |
    4. +--------+
    5. | 123456 |
    6. +--------+
    7. 1 row in set (0.00 sec)


    當然,顯然是與預期一致。
    顯然Atlas作為proxy,已經將寫請求提交給master(192.168.1.185),將讀請求提交給slave(192.168.1.186)。
    對于客戶端和開發人員,只需要獲取一個Atlas的服務器地址、端口、用戶名及密碼便可使用讀寫分離。

    Atlas也可以實現分表功能,此處可自行翻閱Atlas Home。



    〇 參考文檔:
    https://github.com/Qihoo360/Atlas/releases
    https://github.com/Qihoo360/Atlas/wiki

    作者微信公眾號(持續更新)
    MySQL 中間件Atlas 實現讀寫分離




    向AI問一下細節

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

    AI

    大兴区| 牙克石市| 广西| 屯留县| 新巴尔虎左旗| 神池县| 永泰县| 阳高县| 石楼县| 永登县| 阜南县| 左权县| 治县。| 定陶县| 温州市| 勐海县| 邵阳县| 张家川| 鹰潭市| 长白| 韶关市| 黎平县| 文安县| 巴中市| 界首市| 翁源县| 神农架林区| 萨迦县| 新疆| 筠连县| 武宣县| 祁东县| 印江| 江孜县| 邻水| 比如县| 鄂温| 陈巴尔虎旗| 鹰潭市| 东丰县| 镇坪县|