国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
(轉(zhuǎn))Atlas讀寫分離Mysql集群的搭建

Atlas源代碼用C語言編寫,它對(duì)于WebServer相當(dāng)于是DB,相對(duì)于DB相當(dāng)于是Client,如果把Atlas的邏輯放到WebServer程序里去處理,這樣會(huì)大大增加WebServer程序的復(fù)雜度,同時(shí)WebServer和DB之間的耦合度也相當(dāng)高,因?yàn)橹灰狣B增加/減少服務(wù),WebServer就有可能要發(fā)生代碼改變,若代碼不改變,就得通過中間關(guān)系表與心跳機(jī)制來維護(hù)Server之間的關(guān)系,這樣會(huì)帶來性能的損耗,而Atlas是架設(shè)在WebServer與DB之間的一個(gè)中間件,WebServer與DB之間的耦合關(guān)系放到了Atlas來處理,既做到了靈活也保留了性能,這也是Atlas存在的價(jià)值。

 

       Atlas支持表的水平切分,支持讀寫分離,對(duì)數(shù)據(jù)實(shí)時(shí)性要求較高的項(xiàng)目可以在select語句前增加強(qiáng)制讀主庫(kù),主從MySql數(shù)據(jù)庫(kù)之間數(shù)據(jù)的同步需要自己配置,主從MySql數(shù)據(jù)庫(kù)數(shù)據(jù)主從復(fù)制的配置方法參見博客:

        http://blog.csdn.net/jhq0113/article/details/44263367

         

       1.安裝

         注意:只能安裝在64位的Linux操作系統(tǒng)上,CentOS官方建議rpm安裝方式

         獲取地址:https://github.com/Qihoo360/Atlas/releases

        目前最新的版本為:

         Atlas-2.2.1.el5.x86_64.rpm                      CentOS5.*  版本

          Atlas-2.2.1.el6.x86_64.rpm                      CentOS6.*  版本

          

        我的環(huán)境是CentOS6.6 Basic Server x86_64

          

        安裝命令:

        [root@jhq0229src]# rpm -i Atlas-2.2.1.el6.x86_64.rpm

         

        安裝位置:

        /usr/local/mysql-proxy

        配置文件:

        /usr/local/mysql-proxy/conf/test.cnf

        

        重要配置文件詳解:

        (1)線程數(shù)

        event-threads項(xiàng)設(shè)置,過小無法充分發(fā)揮多核CPU的性能,過大造成不必要的線程切換開銷,推薦設(shè)置為CPU的核數(shù)。

     (2)最小空閑連接數(shù)(2.x以上版本不需要該項(xiàng),1.x版本需要)

        min-idle-connections項(xiàng)設(shè)置,過小則在高并發(fā)下會(huì)有報(bào)錯(cuò),過大雖然不報(bào)錯(cuò)但在測(cè)試時(shí)不容易看出讀寫分離效果,推薦設(shè)置為比客戶端的并發(fā)峰值稍大,詳見《配置參數(shù)詳解》。上面的配置范例是針對(duì)Atlas2.X版本,沒有該選項(xiàng)。對(duì)于Atlas1.X版本的配置文件,需要加入該配置選項(xiàng)

     (3)Atlas的工作端口

        proxy-address項(xiàng)配置,例如proxy-address=0.0.0.0:1234代表客戶端應(yīng)該使用1234這個(gè)端口連接Atlas來發(fā)送SQL請(qǐng)求。

    (4)Atlas的管理端口

        admin-address項(xiàng)配置,例如admin-address=0.0.0.0:2345代表DBA應(yīng)該使用2345這個(gè)端口連接Atlas來執(zhí)行運(yùn)維管理操作。

   (5)管理接口的用戶名和密碼

       admin-username項(xiàng)和admin-password項(xiàng)設(shè)置,這兩項(xiàng)是用來進(jìn)入Atlas的管理界面的,與后端連接的MySQL沒有關(guān)系,所以可以任意設(shè)置,不需要MySQL在配置上做任何改動(dòng)。

  (6)日志級(jí)別

       以log-level項(xiàng)配置,分為message、warning、critical、error、debug五個(gè)級(jí)別。

  (7)日志路徑

      以log-path項(xiàng)配置,如log-path= /usr/local/mysql-proxy/log。

  (8)主庫(kù)的IP和端口

      proxy-backend-addresses =192.168.0.12:3306

  (9)從庫(kù)的IP和端口,@后面的數(shù)字代表權(quán)重,用來作負(fù)載均衡,若省略則默認(rèn)為1,可設(shè)置多項(xiàng),用逗號(hào)分隔。如果想讓主庫(kù)也能分擔(dān)讀請(qǐng)求的話,只需要將主庫(kù)信息加入到下面的配置項(xiàng)中。

      proxy-read-only-backend-addresses= 192.168.0.13:3306,192.168.0.14:3306

  (10)用戶名與其對(duì)應(yīng)的加密過的MySQL密碼,密碼使用PREFIX/bin目錄下的加密程序encrypt加密,用戶名與密碼之間用冒號(hào)分隔。主從數(shù)據(jù)庫(kù)上需要先創(chuàng)建該用戶并設(shè)置密碼(用戶名和密碼在主從數(shù)據(jù)庫(kù)上要一致)。比如用戶名為myuser,密碼為mypwd,執(zhí)行./encryptmypwd結(jié)果為HJBoxfRsjeI=。如果有多個(gè)用戶用逗號(hào)分隔即可。則設(shè)置如下行所示:

     pwds= myuser: HJBoxfRsjeI=,myuser2:HJBoxfRsjeI=

 (11)分表設(shè)置,此例中person為庫(kù)名,mt為表名,id為分表字段,3為子表數(shù)量,可設(shè)置多項(xiàng),以逗號(hào)分隔,若不分表則不需要設(shè)置該項(xiàng),子表需要事先建好,子表名稱為表名_數(shù)字,數(shù)字范圍為[0,子表數(shù)-1],如本例里,子表名稱為mt_0、mt_1、mt_2

   tables= person.mt.id.3

 ------------------------------------------------------------------------------------------

   我的配置:

1.  [mysql-proxy]  

2.    

3.  #管理接口的用戶名  

4.  admin-username = user  

5.    

6.  #管理接口的密碼  

7.  admin-password = pwd  

8.    

9.  #Atlas后端連接的MySQL主庫(kù)的IP和端口,可設(shè)置多項(xiàng),用逗號(hào)分隔  

10. proxy-backend-addresses = 192.168.1.18:3306  

11.   

12. #從庫(kù)  

13. proxy-read-only-backend-addresses = 192.168.1.16:3306@1  

14. #用戶名和密碼配置項(xiàng),需要和主從復(fù)制配置的用戶名和密碼配置一樣  

15. #pwds = user1:+jKsgB3YAG8=, user2:GS+tr4TPgqc=  

16. pwds = mastt:/iZxz+0GRoA=  

17.   

18. #后臺(tái)運(yùn)行  

19. daemon = true  

20.   

21. keepalive = true  

22.   

23. #工作線程數(shù),對(duì)Atlas的性能有很大影響,可根據(jù)情況適當(dāng)設(shè)置  

24. event-threads = 8  

25.   

26. #日志級(jí)別,分為message、warning、critical、error、debug五個(gè)級(jí)別  

27. log-level = message  

28.   

29. #日志存放的路徑  

30. log-path = /usr/local/mysql-proxy/log  

31.   

32. #SQL日志的開關(guān),可設(shè)置為OFF、ON、REALTIME,OFF代表不記錄SQL日志,ON代表記錄SQL日志,REALTIME代表記錄SQL日>志且實(shí)時(shí)寫入磁盤,默認(rèn)為OFF  

33. #sql-log = OFF  

34.   

35. #慢日志輸出設(shè)置。當(dāng)設(shè)置了該參數(shù)時(shí),則日志只輸出執(zhí)行時(shí)間超過sql-log-slow(單位:ms)的日志記錄。不設(shè)置該參數(shù)  

36. 則輸出全部日志。  

37. #sql-log-slow = 10  

38.   

39. #實(shí)例名稱,用于同一臺(tái)機(jī)器上多個(gè)Atlas實(shí)例間的區(qū)分  

40. #instance = test  

41.   

42. #Atlas監(jiān)聽的工作接口IP和端口  

43. proxy-address = 192.168.1.18:8060  

44.   

45. #Atlas監(jiān)聽的管理接口IP和端口  

46. admin-address = 192.168.1.18:2345  

47.   

48. #分表設(shè)置,此例中person為庫(kù)名,mt為表名,id為分表字段,3為子表數(shù)量,可設(shè)置多項(xiàng),以逗號(hào)分隔,若不分表則不需  

49. 要設(shè)置該項(xiàng)  

50. #tables = person.mt.id.3  

51. tables=orders.my_orders.year.2015  

52.   

53. #默認(rèn)字符集,設(shè)置該項(xiàng)后客戶端不再需要執(zhí)行SET NAMES語句  

54. charset = utf8  

55.   

56. #允許連接Atlas的客戶端的IP,可以是精確IP,也可以是IP段,以逗號(hào)分隔,若不設(shè)置該項(xiàng)則允許所有IP連接,否則只允  

57. 許列表中的IP連接  

58. #client-ips = 127.0.0.1, 192.168.1  

59.   

60. #Atlas前面掛接的LVS的物理網(wǎng)卡的IP(注意不是虛IP),若有LVS且設(shè)置了client-ips則此項(xiàng)必須設(shè)置,否則可以不設(shè)置  

61. #lvs-ips = 192.168.1.1  

 ----------------------------------------------------------------------------------------------

從以上配置可以清楚看到:

主庫(kù):192.168.1.18:3306

從庫(kù):192.168.1.16:3306    權(quán)重為1

注意:主從復(fù)制需要自行配置。

 

AtlasProxy的ip和端口為:192.168.1.18:8060

主從復(fù)制的用戶和密碼為:mastt    123456,以上的pwds的密碼是經(jīng)過加密處理的

若用Navicat登陸,就用AtlasProxy的ip和端口,用戶名和密碼用主從復(fù)制的,主從復(fù)制的賬戶需要設(shè)置可以在Navicat上登陸。

 

分表配置項(xiàng):

1.  tables=orders.my_orders.year.2015 

 

我的主從庫(kù)名稱是orders,里有三張表,分別是my_orders_0,my_orders_1,my_orders_2,按year字段進(jìn)行分表,雖然分了2015張表,但是你的數(shù)據(jù)庫(kù)里不一定有這么多張表,這里的2015只是取模的一個(gè)基數(shù),按照此規(guī)律去找到相應(yīng)的表,例如year=2015,數(shù)據(jù)請(qǐng)求會(huì)發(fā)送到my_orders_0表。

 

編寫簡(jiǎn)單Atlas的啟動(dòng)腳本:

[root@jhq0229 ~]#vim /etc/init.d/atlas

 

內(nèi)容如下:

-------------------------------?-----------------------------

  • #!/bin/sh  
  • #  
  • #atlas:    Atlas Daemon  
  • #  
  • # chkconfig:    - 90 25  
  • # description:  Atlas Daemon  
  • #  
  • # Source function library.  
  • start()  
  • {  
  •         echo -n $"Starting atlas: "  
  •         /usr/local/mysql-proxy/bin/mysql-proxyd test start  
  •         echo   
  • }  
  • stop()  
  • {  
  •         echo -n $"Shutting down atlas: "  
  •         /usr/local/mysql-proxy/bin/mysql-proxyd test stop  
  •         echo  
  • }  
  • ATLAS="/usr/local/mysql-proxy/bin/mysql-proxyd"  
  • [ -f $ATLAS ] || exit 1  
  • # See how we were called.  
  • case "$1" in  
  •         start)  
  •                 start  
  •                 ;;  
  •         stop)  
  •                 stop  
  •                 ;;  
  •         restart)  
  •                 stop  
  •                 sleep 3  
  •                 start  
  •                 ;;  
  •         *)  
  •                 echo $"Usage: $0 {start|stop|restart}"  
  •                 exit 1  
  • esac  
  • exit 0
  • -------------------------?-------------------------------------------

授權(quán)并加入開機(jī)啟動(dòng)

[root@jhq0229 ~]#chmod +x /etc/init.d/atlas[root@jhq0229~]# chkconfig atlas on

 

啟動(dòng)atlas服務(wù)

[root@jhq0229 ~]#service atlas start

 

2.功能測(cè)試:

1).利用mastt用戶123456密碼Navicat登陸到192.168.1.18:8060查看數(shù)據(jù)庫(kù)表,開始數(shù)據(jù)庫(kù)中沒有數(shù)據(jù)。

表結(jié)構(gòu)如下:

1.  CREATE TABLE `my_orders_0` (  

2.    `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '表主鍵',  

3.    `pid` int(10) unsigned NOT NULL COMMENT '產(chǎn)品ID',  

4.    `price` decimal(15,2) NOT NULL COMMENT '單價(jià)',  

5.    `num` int(11) NOT NULL COMMENT '購(gòu)買數(shù)量',  

6.    `person` varchar(255) NOT NULL COMMENT '客戶姓名',  

7.    `atime` int(10) unsigned NOT NULL COMMENT '下單時(shí)間',  

8.    `utime` int(10) unsigned NOT NULL COMMENT '修改時(shí)間',  

9.    `isdel` tinyint(4) NOT NULL DEFAULT '0' COMMENT '軟刪除標(biāo)識(shí)',  

10.   `year` smallint(5) unsigned NOT NULL COMMENT '年',  

11.   PRIMARY KEY (`id`)  

12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

插入數(shù)據(jù)

1.  INSERT INTO `my_orders`(`pid`,`price`,`num`,`person`,`atime`,`utime`,`year`) VALUES ('1', '123.54', '1', '周潤(rùn)發(fā)', '1426335606', '1426335606','2015');  

2.  INSERT INTO `my_orders`(`pid`,`price`,`num`,`person`,`atime`,`utime`,`year`) VALUES ('3', '13.67', '4', '周迅', '1426338765', '1426338765', '2016');  

3.  INSERT INTO `my_orders`(`pid`,`price`,`num`,`person`,`atime`,`utime`,`year`) VALUES ('4', '44.44', '4', '郭敬明', '1426754324', '1426754324','2017');  

此時(shí)我們會(huì)看到my_orders_0,1,2表中分別有一條數(shù)據(jù),15年的在0表,16年在1表,17年的在2表。

 

查詢測(cè)試,如果不指定表的全名,查詢時(shí)需要year字段作為where條件,否則不會(huì)通過,測(cè)試結(jié)果如下圖:

讀寫分離測(cè)試,為了達(dá)到測(cè)試效果,我們?cè)趶膸?kù)的my_orders_0表手動(dòng)添加一條數(shù)據(jù),語句如下:

1.  INSERT INTO `my_orders_0`(`pid`,`price`,`num`,`person`,`atime`,`utime`,`year`) VALUES ('2', '212.54', '1', '梁朝偉', '1426335606', '1426335606','2015');  

此時(shí),主庫(kù)的0表只有一條數(shù)據(jù),從表里有兩條數(shù)據(jù),如果我們執(zhí)行查詢語句

SELECT * FROMmy_orders WHERE`year`=2015出現(xiàn)一條結(jié)果,則都的是主庫(kù),若出現(xiàn)兩條則為從庫(kù),結(jié)果如下圖:

證明已經(jīng)讀的是從庫(kù)。

測(cè)試強(qiáng)制讀主庫(kù),若執(zhí)行語句 SELECT * FROM my_orders WHERE`year`=2015有兩條記錄則讀的是從庫(kù),如果是一條記錄都的是主庫(kù),測(cè)試結(jié)果只有周潤(rùn)發(fā)一條記錄。

至此,Atlas的配置完畢,如果將Atlas與Mysql表的分區(qū)聯(lián)合使用可以大大提高大數(shù)據(jù)的處理能力,希望可以幫助到你。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
mysql中間件研究(Atlas,cobar,TDDL) | 日志 | 果殼網(wǎng) 科技有意思
『互聯(lián)網(wǎng)架構(gòu)』軟件架構(gòu)
MySQL HA方案之MySQL半復(fù)制+MHA+Keepalived+Atlas+LVS
Mysql讀寫分離集群中間件—Atlas完美配置,So easy!5分鐘搞定!
java面試題 --- MySQL④
Mysql-proxy主從搭建讀寫分離全過程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服