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

溫馨提示×

溫馨提示×

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

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

MySQL數據庫之讀寫分離

發布時間:2020-08-19 02:26:04 來源:網絡 閱讀:1578 作者:紫玉麒麟 欄目:MySQL數據庫

一、概述:

    MySQL數據庫主從結構配置以后,正常情況下數據庫的所有讀寫操作全部都在主數據庫上面,從數據庫僅僅作為數據備份使用,顯然無法有效的使用服務器資源,那么實現讀寫分離的需求就不可避免。

二、拓撲圖說明:

MySQL數據庫之讀寫分離

    如上圖所示,本文要實現的是讀MySQL數據庫的寫入操作(增刪改)等在Master服務器(192.168.4.10)上面實現,而對MySQL數據庫的讀取操作(查詢)等在Slave服務器(192.168.4.20)上面完成。

    如果在程序員編程時創建兩個數據庫連接Connection,在程序中對數據庫的讀取操作使用一個數據庫Connection,而對數據庫的寫入操作使用另外一個數據庫Connection,也可以實現對數據庫的讀寫分離。但是顯然這種實現方式不夠靈活,因此一般不使用這種方式。

    本文中將使用MaxScale軟件來實現MySQL數據庫的讀寫分離。MaxScale是由http://www.skysql.com/開發的一款MySQL數據庫中間件,支持高可用,負載均衡,具有良好的可擴展性,高性能的基于事件驅動的同時具有代理和管理功能的中間件。該軟件將部署在拓撲圖中的MySQL代理服務器(192.168.4.100)上,客戶機的訪問請求指向MySQL代理服務器,該服務器將把對數據庫的寫入操作指向到192.168.4.10,對數據庫的讀取操作指向到192.168.4.20。

三、配置說明:

1、MaxScale配置

  (1)修改配置文件:

      [root@100 ~]# vim /etc/maxscale.cnf

          A、指定數據庫服務器
             [server1]
                type=server
                address=192.168.4.10       
                port=3306
                protocol=MySQLBackend
 
             [server2]
                type=server
                address=192.168.4.20
                port=3306
                protocol=MySQLBackend

          B、指定要監控的數據庫服務器
             [MySQL Monitor]
               type=monitor
               module=mysqlmon
               servers=server1,server2
               user=scalemon                #代理服務器監控服務連接數據庫服務器的用戶名(需要在數據庫服務器上面授權)
               passwd=123456                #代理服務器監控服務連接數據庫服務器的密碼

               monitor_interval=10000        //活躍檢查時間間隔,10000毫秒=10秒
          C、指定讀寫分離在哪些主機之間執行
             [Read-Write Service]
                 type=service
                 router=readwritesplit
                 servers=server1,server2
                 user=maxscale               #用于檢查用戶連接數據庫時用的授權用戶是否合法的用戶名(需要對mysql數據庫有select權限)
                 passwd=123456               #用于檢查用戶連接數據庫時用的授權用戶是否合法的用戶名         

                 max_slave_connections=100%
          D、定義管理服務和方式(不用改)
             [MaxAdmin Service]
                 type=service
                 router=cli
          E、只讀服務器配置選項(不用,全部注釋掉)
             [Read-Only Service]
                 #type=service
                 #router=readconnroute
                 #servers=server1
                 #user=myuser
                 #passwd=mypwd
                 #router_options=slave

                 #[Read-Only Listener]
                 #type=listener
                 #service=Read-Only Service
                 #protocol=MySQLClient
                 #port=4008
          F、讀寫分離的監聽端口配置
             [Read-Write Listener]
                 type=listener
                 service=Read-Write Service
                 protocol=MySQLClient
                 port=4006                    //客戶端讀寫分離服務訪問端口
         G、管理服務的監聽端口配置
            [MaxAdmin Listener]
                 type=listener
                 service=MaxAdmin Service
                 protocol=maxscaled
                 socket=default
                 port=4009                    //管理服務使用的端口

2、在主數據庫服務器添加授權

   mysql > grant replication slave,replication client on *.* to scalemon@"%" identified by "123456";
   mysql > grant select on mysql.* to maxscale@"%" identified by "123456";

3、在代理服務器上面啟動服務并檢查數據庫服務器狀態

  (1)啟動服務:

        [root@100 ~]# maxscale --config=/etc/maxscale.cnf

  (2)檢查狀態

        [root@100 ~]# maxadmin -uadmin -pmariadb -P4009
            MaxScale> list servers
            -------------------+-----------------+-------+-------------+--------------------
            Server             | Address         | Port  | Connections | Status              
            -------------------+-----------------+-------+-------------+--------------------
            server1            | 192.168.4.11    |  3306 |           0 | Master, Running
            server2            | 192.168.4.12    |  3306 |           0 | Slave, Running
            -------------------+-----------------+-------+-------------+--------------------

4、驗證測試

    在192.168.4.120上使用授權用戶連接代理服務器(192.168.4.100:4006),在從數據庫服務器(192.168.4.20)上面Insert一些數據,在客戶端可以讀到,那么說明客戶端讀數據時是在從數據庫(192.168.4.20);在192.168.4.120上使用授權用戶連接代理服務器(192.168.4.100:4006),Insert一些數據成功,在主從數據庫上面都可以看到,說明客戶端寫數據時是在主數據庫服務器(192.168.4.10)上面。        

向AI問一下細節

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

AI

无锡市| 温宿县| 姜堰市| 潞西市| 桑植县| 扶风县| 宁陕县| 武胜县| 呈贡县| 汤阴县| 上杭县| 曲沃县| 彭山县| 齐河县| 新宾| 浦县| 峨山| 桐庐县| 台中县| 古丈县| 喀喇| 阜新| 峨边| 丹阳市| 临江市| 渑池县| 镇雄县| 屏东县| 汉中市| 邵阳县| 新邵县| 金门县| 荣成市| 灯塔市| 红桥区| 双流县| 巴林右旗| 墨竹工卡县| 孝感市| 永州市| 赞皇县|