<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        高可用的Mysql雙機熱備(Mysql_HA)

        來源:懂視網 責編:小采 時間:2020-11-09 13:09:55
        文檔

        高可用的Mysql雙機熱備(Mysql_HA)

        高可用的Mysql雙機熱備(Mysql_HA):1.KeepAlived+Mysql 使用KeepAlived實現高可用的MYSQL_HA集群環境中,MYSQL為(Master/Master)主/主同步復制關系,保證MYSQL服務器數據的一致性,用KeepAlived提供虛擬IP,通過KeepAlived來進行故障監控,實現Mysql故障時自動切換。 布署環境拓
        推薦度:
        導讀高可用的Mysql雙機熱備(Mysql_HA):1.KeepAlived+Mysql 使用KeepAlived實現高可用的MYSQL_HA集群環境中,MYSQL為(Master/Master)主/主同步復制關系,保證MYSQL服務器數據的一致性,用KeepAlived提供虛擬IP,通過KeepAlived來進行故障監控,實現Mysql故障時自動切換。 布署環境拓

        1.KeepAlived+Mysql 使用KeepAlived實現高可用的MYSQL_HA集群環境中,MYSQL為(Master/Master)主/主同步復制關系,保證MYSQL服務器數據的一致性,用KeepAlived提供虛擬IP,通過KeepAlived來進行故障監控,實現Mysql故障時自動切換。 布署環境拓樸如下: ?Mysq

        1.KeepAlived+Mysql

        使用KeepAlived實現高可用的MYSQL_HA集群環境中,MYSQL為(Master/Master)主/主同步復制關系,保證MYSQL服務器數據的一致性,用KeepAlived提供虛擬IP,通過KeepAlived來進行故障監控,實現Mysql故障時自動切換。

        布署環境拓樸如下:

        ?Mysql?VIP :192.168.187.61

        Master1:192.168.187.129

        Master:192.168.187.132

        OS 環境:Cent OS 5.9

        Mysql版本:Mysql5.5.31


        2.安裝mysql

        2.1.Mysql升級安裝

        因為CentOS的Mysql還是停留在5.0.19,而我們做Mysql之間的同步復制,Mysql版本至少要在Mysql5.1以上,所以要對其進行升級安裝。

        >>使用 yum安裝, yum 可以幫你解決依賴于沖突

        # rpm –Uvh ?http://repo.webtatic.com/yum/centos/5/latest.rpm?? //安裝最新的mysql的yum源

        # yum –y install Mysql55 MySQL55-* --enablerepo=webtatic?? //安裝Mysql,--enablerepo參數是用來指定源

        ?

        >>開啟mysql服務

        # service mysqld start ?//開啟mysql服務

        ?

        >>剛安裝密碼為空,設置root密碼

        # mysqladmin –u root password ‘1234’ ?//設置root密碼?????

        >>更改mysql配置文件

        # cp /usr/share/mysql/my-medium.cnf? /etc/my.cnf? //在etc目錄下建立mysql的配置文件my.cnf

        # service mysqld restart//重啟mysql服務

        ?

        >>登陸Mysql

        # mysql –u root –p 1234?? ?//設置root密碼

        Mysql>??? ?//登陸進了mysql

        2.2.Mysql主/主配置

        2.2.1 設置配置文件

        Mysql是通過日志進行同步復制的,先建立日志文件

        #touch /var/log/mysql/mysql-bin.log?? //建立日志文件

        #chown mysql.mysql /var/log/mysql/mysql-bin.log ?//將日志文件的所屬用戶和用戶組更改成mysql

        在兩臺要進行備份的mysql服務器上的my.cnf文件進行配置如下(將下面的配置分別加入相關服務器的my.cnf):

        Master1(192.168.187.129)

        Master(192.168.187.132)

        #主標服務標識號,必需唯一

        server-id = 1

        #因為MYSQL是基于二進制的日志來做同步的,每個日志文件大小為 1G

        log-bin=/var/log/mysql/mysql-bin.log

        #要同步的庫名

        binlog-do-db = test

        #不記錄日志的庫,即不需要同步的庫

        binlog-ignore-db=mysql

        #用從屬服務器上的日志功能

        log-slave-updates

        #經過1日志寫操作就把日志文件寫入硬盤一次(對日志信息進行一次同步)。n=1是最安全的做法,但效率最低。默認設置是n=0。

        sync_binlog=1

        # auto_increment,控制自增列AUTO_INCREMENT的行為

        用于MASTER-MASTER之間的復制,防止出現重復值,

        auto_increment_increment=n有多少臺服務器,n 就設置為多少,

        auto_increment_offset=1設置步長,這里設置為1,這樣Master的auto_increment字段產生的數值是:1, 3, 5, 7, …等奇數ID

        auto_increment_offset=1

        auto_increment_increment=2

        #進行鏡像處理的數據庫

        replicate-do-db = test

        #不進行鏡像處理的數據庫

        replicate-ignore-db= mysql

        #主標服務標識號,必需唯一

        server-id = 2

        #因為MYSQL是基于二進制的日志來做同步的,每個日志文件大小為 1G

        log-bin=/var/log/mysql/mysql-bin.log

        #要同步的庫名

        binlog-do-db = test

        #不記錄日志的庫,即不需要同步的庫

        binlog-ignore-db=mysql

        #用從屬服務器上的日志功能

        log-slave-updates

        #經過1日志寫操作就把日志文件寫入硬盤一次(對日志信息進行一次同步)。n=1是最安全的做法,但效率最低。默認設置是n=0。

        sync_binlog=1

        # auto_increment,控制自增列AUTO_INCREMENT的行為

        用于MASTER-MASTER之間的復制,防止出現重復值,

        auto_increment_increment=n有多少臺服務器,n 就設置為多少,

        auto_increment_offset=2設置步長,這里設置為2,這樣Master的auto_increment字段產生的數值是:2, 4, 6, 8, …等奇數ID

        auto_increment_offset=2

        auto_increment_increment=2

        #進行鏡像處理的數據庫

        replicate-do-db = test

        #不進行鏡像處理的數據庫

        replicate-ignore-db= mysql

        2.2.2查看配置情況

        按上面的配置將兩臺服務器配置好以后,重新啟動mysql服務,用showmaster status查看一下兩臺服務器的Master配置情況,可以看出已經配置成功,如下:

        NO1:Master1(192.168.187.129)的情況

        # mysql –u root –p 1234

        mysql> show master status;

        +------------------+----------+--------------+------------------+

        | File ????????????| Position | Binlog_Do_DB | Binlog_Ignore_DB |

        +------------------+----------+--------------+------------------+

        | mysql-bin.000001|????? 107 | test???????? | mysql??????????? |

        +------------------+----------+--------------+------------------+

        NO2:Master1(192.168.187.132)的情況

        # mysql –u root –p 1234

        mysql> show master status;

        +------------------+----------+--------------+------------------+

        | File???????????? | Position | Binlog_Do_DB | Binlog_Ignore_DB |

        +------------------+----------+--------------+------------------+

        | mysql-bin.000001|????? 107 | test???????? | mysql??????????? |

        +------------------+----------+--------------+------------------+

        2.2.3建立權限帳戶,實現同步

        a.創建賬戶并授予REPLICATION SLAVE權限

        mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '1234'; ??//建立一個用戶名為slave的帳戶

        mysql> FLUSH PRIVILEGES;?? //刷新相關權限表

        因為進行雙向復制,兩邊服務器都需要建立一個用于復制的的用戶。兩邊可以復用上面的語句,用戶名和密碼可以自行進行修改。

        b.同步設置

        Master1(192.168.187.129)上操作如下:

        mysql> stop slave; ?//停止slave

        mysql>change master to master_host='192.168.187.132', master_user='slave', master_password='1234', master_log_file='mysql-bin.000001', master_log_pos=107;? //修改當前的Master的值,因為是互為備份,所以Master1(192.168.187.129)的master為Master2(192.168.187.132),Master2設置復制的用戶名為slave,密碼是1234,上面通過 show master status我們得知,log_file是mysql-bin.000001,postion是107。

        mysql>start slave;??? //開始salve,開始同步

        mysql>show slave status; ??//檢測slave狀態,如果Slave_IO_Running: Yes??? Slave_SQL_Running: Yes??? Seconds_Behind_Master: 0就OK了

        ?

        Master2(192.168.187.132)上面操作如下:

        mysql> stop slave;? //停止slave

        mysql>change master to master_host='192.168.187.129', master_user='slave', master_password='1234', master_log_file='mysql-bin.000001', master_log_pos=107; ?//修改當前的Master的值,因為是互為備份,所以Master2(192.168.187.132)的master為Master2(192.168.187.129),Master1設置復制的用戶名為slave,密碼是1234,上面通過 show master status我們得知,log_file是mysql-bin.000001,postion是107。

        mysql>start slave;??? //開始salve,開始同步

        mysql>show slave status;? //檢測slave狀態,如果Slave_IO_Running: Yes??? Slave_SQL_Running: Yes??? Seconds_Behind_Master: 0就OK了

        c.測試情況:

        Step1:建一個測試表Test,兩個字段,id與name字段,id字段為自增,兩個服務器上面都是同樣的結構,如下圖:

        Step2:我在Master1(192.168.187.129)表上執行一個insert語句,并進行查詢,如下圖:

        Step3:在Master2(192.168.187.132)中查詢,可以發現數據已經同步過來了,如下圖:

        ?

        3KeepAlived安裝配置

        3.1 KeepAlived的安裝方法

        ?可參照“高可用的負載均衡配置方法(Haproxy+KeepAlived)” 5.1 中KeepAlived的安裝方法

        3.2將keepalived加入服務

        可參照“高可用的負載均衡配置方法(Haproxy+KeepAlived)” 5.2 ?中將keepalived加入服務

        3.3 KeepAlived的配置

        安裝好以后,對其進行配置如下:

        有兩臺機器(MASTER1)所在的 192.168.187.129與(Master2) 192.168.187.132,用(VIP)192.168.187.61做虛擬IP。

        在兩臺服各器中的/etc/keepalived文件夾中的keepalived.conf下進行配置:

        Master1的設置?

        192.168.187.129

        global_defs {

        ?? router_id Mysql_HA  #當前節點名

        }

        vrrp_instance VI_1{

        ??? state BACKUP???????#兩臺配置節點均為BACKUP

        interface eth0?????? #綁定虛擬IP的網絡接口

        virtual_router_id 51 #VRRP組名,兩個節點的設置必須一樣,以指明各個節點屬于同一VRRP組

        priority 100???????? #節點的優先級,另一臺優先級改低一點

        acvert_int 1???????? #組播信息發送間隔,兩個節點設置必須一樣

        nopreempt ?????#不搶占,只在優先級高的機器上設置即可,優先級低的機器不設置

        authentication{????? #設置驗證信息,兩個節點必須一致

        ??? auth_type? PASS

        ??? auth_pass? 1111

        }

        Virtual_ipaddress{?? #指定虛擬IP, 兩個節點設置必須一樣

        192.168.187.61

        ???? }

        ?? }

        virtual_server 192.168.187.61 3306 { ??#linux虛擬服務器(LVS)配置

        delay_loop 2??? ?#每個2秒檢查一次real_server狀態

        lb_algo wrr ?????#LVS調度算法, rr|wrr|lc|wlc|lblc|sh|dh

        lb_kind DR???? ?#LVS集群模式 , NAT|DR|TUN

        persistence_timeout 60?? ?#會話保持時間

        protocol TCP ???#使用的協議是TCP還是UDP

        real_server 192.168.187.129 3306 {

        weight 3 ??#權重

        notify_down ?/usr/local/bin/mysql.sh?? ?#檢測到服務down后執行的腳本

        TCP_CHECK {

        connect_timeout 10 ??#連接超時時間

        nb_get_retry 3??????#重連次數

        delay_before_retry 3?#重連間隔時間

        connect_port 3306 ???#健康檢查端口

        }

        }

        ?

        Master2的設置?

        192.168.187.132

        global_defs {

        ?? router_id Mysql_HA  #當前節點名

        }

        vrrp_instance VI_1{

        ??? state BACKUP???????#兩臺配置節點均為BACKUP

        interface eth0?????? #綁定虛擬IP的網絡接口

        virtual_router_id 51 #VRRP組名,兩個節點的設置必須一樣,以指明各個節點屬于同一VRRP組

        priority 90???????? #節點的優先級,另一臺優先級改低一點

        acvert_int 1???????? #組播信息發送間隔,兩個節點設置必須一樣

        authentication{????? #設置驗證信息,兩個節點必須一致

        ??? auth_type? PASS

        ??? auth_pass? 1111

        }

        Virtual_ipaddress{?? #指定虛擬IP, 兩個節點設置必須一樣

        192.168.187.61

        ???? }

        ?? }

        virtual_server 192.168.187.61 3306 { ??#linux虛擬服務器(LVS)配置

        delay_loop 2??? ?#每個2秒檢查一次real_server狀態

        lb_algo wrr ?????#LVS調度算法, rr|wrr|lc|wlc|lblc|sh|dh

        lb_kind DR???? ?#LVS集群模式 , NAT|DR|TUN

        persistence_timeout 60?? ?#會話保持時間

        protocol TCP ???#使用的協議是TCP還是UDP

        real_server 192.168.187.132 3306 {

        weight 3 ??#權重

        notify_down ??/usr/local/bin/mysql.sh?? ?#檢測到服務down后執行的腳本

        TCP_CHECK {

        connect_timeout 10 ??#連接超時時間

        nb_get_retry 3??????#重連次數

        delay_before_retry 3?#重連間隔時間

        connect_port 3306 ???#健康檢查端口

        }

        }

        腳本/usr/local/bin/mysql.sh

        #vi? /usr/local/bin/mysql.sh

        #!/bin/sh

        killall keepalived

        ?

        3.4 KeepAlived測試

        可參照“高可用的負載均衡配置方法(Haproxy+KeepAlived)” 5.4 中KeepAlived測試

        4.Mysql測試

        Step1:打開三個服務器進行查看,剛開始三個都為空


        Step2:在VIP(192.168.187.61)服務器中插入一條數據


        Step3:再查看三個服務器中的數據都已經同步過來了


        當關掉做為主機的192.168.187.129做為宕機處理,同樣也不會出問題,虛擬IP由192.168.187.129漂移

        到192.168.187.132上面。

        ?

        5.安裝時出現的問題及處理方法

        NO1: Slave將無法鏈接到 Master情況

        錯誤:Slave將無法鏈接到 Master??

        原因:bind-address默認是127.0.0.1你必須更改它

        解決辦法:修改my.cnf,加上如下圖紅框所示的配置!


        NO2: mysql error 1129 錯誤

        錯誤:mysql 1129錯誤!如下圖:

        ?????

        原因:是因為mysql將ip連接阻塞了。

        解決辦法:登錄到mysql數據庫服務器端,使用命令:

        #?mysqladmin -u root -p ?flush-hosts; ?

        Enter password:

        ?

        作者:xuejiazhi 發表于2013-5-17 17:36:01 原文鏈接

        閱讀:0 評論:0 查看評論

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        高可用的Mysql雙機熱備(Mysql_HA)

        高可用的Mysql雙機熱備(Mysql_HA):1.KeepAlived+Mysql 使用KeepAlived實現高可用的MYSQL_HA集群環境中,MYSQL為(Master/Master)主/主同步復制關系,保證MYSQL服務器數據的一致性,用KeepAlived提供虛擬IP,通過KeepAlived來進行故障監控,實現Mysql故障時自動切換。 布署環境拓
        推薦度:
        標簽: 用的 雙機 mysql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲日本一区二区三区在线| 在线观看国产情趣免费视频| 亚洲人成人一区二区三区| 成人婷婷网色偷偷亚洲男人的天堂 | 国产亚洲美女精品久久久| 免费视频精品一区二区| 国产a级特黄的片子视频免费| 直接进入免费看黄的网站| 免费人成网站在线播放| 中文字幕免费在线视频| 亚洲大尺度无码无码专区| 久久午夜伦鲁片免费无码| 亚洲欧洲视频在线观看| 免费无码又爽又刺激聊天APP| 亚洲人成未满十八禁网站| 国产三级免费电影| 亚洲精品视频免费| 久久国产亚洲电影天堂| 2021国产精品成人免费视频| 亚洲一线产区二线产区区| 可以免费观看的一级毛片| 美女网站在线观看视频免费的| 亚洲av综合色区| 国产va精品免费观看| 男性gay黄免费网站| 久久久亚洲精品视频| 国产一卡2卡3卡4卡无卡免费视频| 无码免费又爽又高潮喷水的视频 | 亚洲精品456人成在线| 日本一道本高清免费| 国产免费牲交视频免费播放| 亚洲欧洲精品一区二区三区| 大香人蕉免费视频75| 国产男女爽爽爽免费视频| 亚洲欧洲精品在线| 亚洲精品一级无码中文字幕| 91精品视频在线免费观看| 久久久久亚洲AV无码去区首| 亚洲AV无码久久精品狠狠爱浪潮| 人禽杂交18禁网站免费| 久久av免费天堂小草播放|