利用keepalived構(gòu)建高可用MYSQL-HA_第1頁
利用keepalived構(gòu)建高可用MYSQL-HA_第2頁
利用keepalived構(gòu)建高可用MYSQL-HA_第3頁
利用keepalived構(gòu)建高可用MYSQL-HA_第4頁
利用keepalived構(gòu)建高可用MYSQL-HA_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、利用keepalived構(gòu)建高可用MySQL-HA在MySQL-HA環(huán)境中,MySQL互為主從關(guān)系,這樣就保證了兩臺MySQL數(shù)據(jù)的一致性,然后用keepalived實現(xiàn)虛擬IP,通過keepalived自帶的服務(wù)監(jiān)控功能來實現(xiàn)MySQL故障時自動切換。構(gòu)架環(huán)境拓撲如下1. MySQL-VIP:  2. MySQL-master1:  3. MySQL-master2:   4. OS版本:redhat 5.55.6. Keepalived版本: 一、MySQL master-master配置1、修改MySQL配置文件兩臺MySQL均如要開啟b

2、inlog日志功能,開啟方法:在MySQL配置文件MySQLd段中加上log-bin=MySQL-bin選項兩臺MySQL的server-ID不能一樣,默認情況下兩臺MySQL的serverID都是1,需將其中一臺修改為2即可2、將設(shè)為的主服務(wù)器在上新建授權(quán)用戶1. MySQL> grant replication slave on *.* to 'replication''%' identified by 'replication' 

3、60;2. Query OK, 0 rows affected (0.00 sec)  3.  4. MySQL> show master status;  5. +-+-+-+-+  6. | File             | Position | Binlog_Do_DB |

4、 Binlog_Ignore_DB |  7. +-+-+-+-+  8. | MySQL-bin.000003 |      374 |              |             

5、60;    |   9. +-+-+-+-+  10. 1 row in set (0.00 sec) 在上將設(shè)為自己的主服務(wù)器1. MySQL> change master to master_host='',master_user='replication',master_password='replication',master_log_file='MySQ

6、L-bin.000003',master_log_pos=374;  2. Query OK, 0 rows affected (0.05 sec)  3.  4. MySQL> start slave;  5. Query OK, 0 rows affected (0.00 sec)  6.  7. MySQL> show slave statu

7、sG  8. * 1. row *  9.              Slave_IO_State: Waiting for master to send event  10.               &#

8、160; Master_Host:   11.                 Master_User: replication  12.                 Master_Port: 3306  

9、13.               Connect_Retry: 60  14.             Master_Log_File: MySQL-bin.000003  15.         Read_Maste

10、r_Log_Pos: 374  16.              Relay_Log_File: MySQL-master2-relay-bin.000002  17.               Relay_Log_Pos: 235  18.   

11、    Relay_Master_Log_File: MySQL-bin.000003  19.            Slave_IO_Running: Yes  20.           Slave_SQL_Running: Yes  21.    &#

12、160;        Replicate_Do_DB:   22.         Replicate_Ignore_DB:   23.          Replicate_Do_Table:   24.      Replicate_

13、Ignore_Table:   25.     Replicate_Wild_Do_Table:   26. Replicate_Wild_Ignore_Table:   27.                  Last_Errno: 0  28.      

14、;            Last_Error:   29.                Skip_Counter: 0  30.         Exec_Master_Log_Pos: 374

15、 31.             Relay_Log_Space: 235  32.             Until_Condition: None  33.             &

16、#160;Until_Log_File:   34.               Until_Log_Pos: 0  35.          Master_SSL_Allowed: No  36.          M

17、aster_SSL_CA_File:   37.          Master_SSL_CA_Path:   38.             Master_SSL_Cert:   39.           Master_SSL

18、_Cipher:   40.              Master_SSL_Key:   41.       Seconds_Behind_Master: 0  42. 1 row in set (0.00 sec) 3、將設(shè)為的主服務(wù)器在上新建授權(quán)用戶1. MySQL> 

19、;grant replication slave on *.* to 'replication''%' identified by 'replication'  2. Query OK, 0 rows affected (0.00 sec)  3.  4. MySQL> show master status;  5. +-+

20、-+-+-+  6. | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |  7. +-+-+-+-+  8. | MySQL-bin.000003 |      374 |  &#

21、160;           |                  |   9. +-+-+-+-+  10. 1 row in set (0.00 sec) 在上,將設(shè)為自己的主服務(wù)器1. MySQL> 

22、;change master to master_host='',master_user='replication',master_password='replication',master_log_file='MySQL-bin.000003',master_log_pos=374;  2. Query OK, 0 rows affected (0.05 sec)  3.  4. MySQL> 

23、start slave;  5. Query OK, 0 rows affected (0.00 sec)  6.  7. MySQL> show slave statusG  8. * 1. row *  9.              Slave_IO_State: W

24、aiting for master to send event  10.                 Master_Host:   11.                 Master_User:

25、 replication  12.                 Master_Port: 3306  13.               Connect_Retry: 60  14.     &#

26、160;       Master_Log_File: MySQL-bin.000003  15.         Read_Master_Log_Pos: 374  16.              Relay_Log_File: MySQL-master1-rela

27、y-bin.000002  17.               Relay_Log_Pos: 235  18.       Relay_Master_Log_File: MySQL-bin.000003  19.            Sl

28、ave_IO_Running: Yes  20.           Slave_SQL_Running: Yes  21.             Replicate_Do_DB:   22.         Replicate_Igno

29、re_DB:   23.          Replicate_Do_Table:   24.      Replicate_Ignore_Table:   25.     Replicate_Wild_Do_Table:   26. Replicate_Wild_Ignore_Table:   27.  &

30、#160;               Last_Errno: 0  28.                  Last_Error:   29.        

31、0;       Skip_Counter: 0  30.         Exec_Master_Log_Pos: 374  31.             Relay_Log_Space: 235  32.      

32、;       Until_Condition: None  33.              Until_Log_File:   34.               Until_Log_Pos: 0 

33、0;35.          Master_SSL_Allowed: No 36.          Master_SSL_CA_File:   37.          Master_SSL_CA_Path:   38.     

34、;        Master_SSL_Cert:   39.           Master_SSL_Cipher:   40.              Master_SSL_Key:   41.   &

35、#160;   Seconds_Behind_Master: 0  42. 1 row in set (0.00 sec) 4、MySQL同步測試如上述均正確配置,現(xiàn)在任何一臺MySQL上更新數(shù)據(jù)都會同步到另一臺MySQL,MySQL同步在此不再演示二、keepalived安裝及配置1、服務(wù)器上keepalived安裝及配置安裝keepalived1. #tar zxvf keepalived-.tar.gz  2. #cd keepalived

36、-  3. #./configure -prefix=/usr/local/keepalived -with-kernel-dir=/usr/src/kernels/-164.el5-i686  4. #make && make install 配置keepalived我們自己在新建一個配置文件,默認情況下keepalived啟動時會去/etc/keepalived目錄下找配置文件1. #mkdir /etc/keepalived  2. #vi /etc/keepal

37、ived/keepalived.conf  3. ! Configuration File for keepalived  4. global_defs   5.      notification_email   6.      luwenju  7.        8.     

38、60;notification_email_from luwenju  9.10.      smtp_connect_timeout 30  11.      router_id MySQL-ha  12.        13.  14. vrrp_instance VI_1   15.     

39、 state BACKUP   #兩臺配置此處均是BACKUP  16.      interface eth0  17.      virtual_router_id 51  18.      priority 100   #優(yōu)先級,另一臺改為90  19.    &

40、#160; advert_int 1  20.      nopreempt  #不搶占,只在優(yōu)先級高的機器上設(shè)置即可,優(yōu)先級低的機器不設(shè)置  21.      authentication   22.      auth_type PASS  23.      auth_pass 111

41、1  24.        25.      virtual_ipaddress   26.       27.        28.        29.  30. virtual_server  3306   31. 

42、0;    delay_loop 2   #每個2秒檢查一次real_server狀態(tài)  32.      lb_algo wrr   #LVS算法  33.      lb_kind DR    #LVS模式  34.      persisten

43、ce_timeout 60   #會話保持時間  35.      protocol TCP  36.      real_server  3306   37.      weight 3  38.      notify_down /usr/local/My

44、SQL/bin/MySQL.sh  #檢測到服務(wù)down后執(zhí)行的腳本  39.      TCP_CHECK   40.      connect_timeout 10    #連接超時時間  41.      nb_get_retry 3       #重連

45、次數(shù)  42.      delay_before_retry 3   #重連間隔時間  43.      connect_port 3306   #健康檢查端口  44.        45.       編寫檢測服務(wù)down后所要執(zhí)行的腳本1. #vi /

46、usr/local/MySQL/bin/MySQL.sh  2. #!/bin/sh  3. pkill keepalived  4. #chmod +x /usr/local/MySQL/bin/MySQL.sh 注:此腳本是上面配置文件notify_down選項所用到的,keepalived使用notify_down選項來檢查real_server的服務(wù)狀態(tài),當(dāng)發(fā)現(xiàn)real_server服務(wù)故障時,便觸發(fā)此腳本;我們可以看到,腳本就一個命令,通過pkill keepalived強制殺死keepalived進程,從而實現(xiàn)了

47、MySQL故障自動轉(zhuǎn)移。另外,我們不用擔(dān)心兩個MySQL會同時提供數(shù)據(jù)更新操作,因為每臺MySQL上的keepalived的配置里面只有本機MySQL的IP+VIP,而不是兩臺MySQL的IP+VIP啟動keepalived1. #/usr/local/keepalived/sbin/keepalived D  2. #ps -aux | grep keepalived 測試找一臺局域網(wǎng)PC,然后去ping  MySQL的VIP,這時候MySQL的VIP是可以ping的通的停止MySQL服務(wù),看keepalived

48、健康檢查程序是否會觸發(fā)我們編寫的腳本2、上keepalived安裝及配置安裝keepalived1. #tar zxvf keepalived-.tar.gz  2. #cd keepalived-  3. #./configure -prefix=/usr/local/keepalived -with-kernel-dir=/usr/src/kernels/-164.el5-i686  4. #make && make install 配置keepalive

49、d這臺配置和上面基本一樣,但有三個地方不同:優(yōu)先級為90、無搶占設(shè)置、real_server為本機IP1. #mkdir /etc/keepalived  2. #vi /etc/keepalived/keepalived.conf  3. ! Configuration File for keepalived  4. global_defs   5.      notification_email   6. 

50、60;    luwenju  7.        8.      notification_email_from luwenju  9.10.      smtp_connect_timeout 30  11.      router_id MySQL-ha  12. 

51、0;      13.  14. vrrp_instance VI_1   15.      state BACKUP  16.      interface eth0  17.      virtual_router_id 51  18.      

52、;priority 90  19.      advert_int 1  20.      authentication   21.      auth_type PASS  22.      auth_pass 1111  23.       &#

53、160;24.      virtual_ipaddress   25.        26.        27.        28.  29. virtual_server  3306   30.      delay_loop 2

54、 31.      lb_algo wrr  32.      lb_kind DR  33.      persistence_timeout 60  34.      protocol TCP  35.      real_server 

55、0;3306   36.      weight 3  37.      notify_down /usr/local/MySQL/bin/MySQL.sh  38.      TCP_CHECK   39.      connect_timeout 10  40.   

56、0;  nb_get_retry 3  41.      delay_before_retry 3  42.      connect_port 3306  43.        44.       編寫檢測服務(wù)down后所要執(zhí)行的腳本1. #vi /usr/local/MySQL/bin

57、/MySQL.sh  2. #!/bin/sh  3. pkill keepalived  4. #chmod +x /usr/local/MySQL/bin/MySQL.sh  5.  6. 啟動keepalived  7. #/usr/local/keepalived/sbin/keepalived D  8. #ps -aux | grep keepalived 測試停止MySQL服務(wù),看keepalived健康檢查程序是否會觸發(fā)我們編寫的腳本三、測試MySQL遠程登錄測試我們找一臺安裝有MySQL客戶端的windows,然后登錄VIP,看是否能登錄,在登錄之兩臺MySQL服務(wù)器都要授權(quán)允許從遠程登錄1. MySQL> grant all privileges on *.* to 'root''%'

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論