真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么實(shí)現(xiàn)高可用 高性能MYSQL

基于MySQL雙主的高可用解決方案理論及實(shí)踐

MySQL在互聯(lián)網(wǎng)應(yīng)用中已經(jīng)遍地開花,但是在銀行系統(tǒng)中,還在生根發(fā)芽的階段。本文記錄的是根據(jù)某生產(chǎn)系統(tǒng)實(shí)際需求,對(duì)數(shù)據(jù)庫(kù)高可用方案從需求、各高可用技術(shù)特點(diǎn)對(duì)比、實(shí)施、測(cè)試等過程進(jìn)行整理,完善Mysql高可用方案,同時(shí)為后續(xù)開展分布式數(shù)據(jù)庫(kù)相關(guān)測(cè)試做相應(yīng)準(zhǔn)備。

岳池網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),岳池網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為岳池成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的岳池做網(wǎng)站的公司定做!

存儲(chǔ)復(fù)制技術(shù): 傳統(tǒng)IOE架構(gòu)下,常用高可用方案,靠存儲(chǔ)底層復(fù)制技術(shù)實(shí)現(xiàn)數(shù)據(jù)的一致性,優(yōu)點(diǎn)數(shù)據(jù)安全性有保障,限制在于是依賴存儲(chǔ)硬件,實(shí)施成本較高。

keepalived+雙主復(fù)制: 兩臺(tái)MySQL互為主從關(guān)系,即雙主模式,通過Keepalived配置虛擬IP,實(shí)現(xiàn)當(dāng)其中的一臺(tái)數(shù)據(jù)庫(kù)故障時(shí),自動(dòng)切換VIP到另外一臺(tái)MySQL數(shù)據(jù)庫(kù),備機(jī)快速接管業(yè)務(wù)來保證數(shù)據(jù)庫(kù)的高可用。

MHA: MHA部署在每臺(tái)mysql服務(wù)器上,定時(shí)探測(cè)集群中的master節(jié)點(diǎn),當(dāng)master出現(xiàn)故障時(shí),它可以自動(dòng)將最新的slave提升為新的master,然后將所有其他的slave重新指向新的master,優(yōu)點(diǎn)在最大程度保證數(shù)據(jù)的一致性的前提下實(shí)現(xiàn)快速切換,最少需要3臺(tái)服務(wù)器,存在數(shù)據(jù)丟失的可能性。

PXC: Percona eXtra Cluster是Percona基于galera cluster封裝的集群方案。不同于普通多主復(fù)制,PXC保障強(qiáng)一致性和實(shí)時(shí)同步,故障切換更快。但是也需要3個(gè)節(jié)點(diǎn),配置相對(duì)復(fù)雜,對(duì)性能也稍有影響。

除了上述方案外,還有MMM、Heartbeat+DRBD等高可用方案,此處不做詳細(xì)介紹。

綜合評(píng)估下,本次實(shí)施采用了 keepalived+mysql雙主實(shí)現(xiàn)數(shù)據(jù)庫(kù)同城雙機(jī)房的高可用。MySQL版本為: 5.7.21。操作系統(tǒng):Red Hat Enterprise Linux Server 7.3。

配置過程如下:

Mysql-master1: IP地址1 --以下簡(jiǎn)稱master1

Mysql-master2: IP地址2 --以下簡(jiǎn)稱master2

Mysql-vip : VIP地址 --應(yīng)用連接使用

Mysql復(fù)制相關(guān)概念描述:

1、 Mysql主從復(fù)制圖示:

2、 Mysql主從復(fù)制過程描述:

(1)master記錄二進(jìn)制日志:在每個(gè)事務(wù)更新數(shù)據(jù)完成之前,master在二進(jìn)制日志記錄這些改變。MySQL將事務(wù)寫入二進(jìn)制日志。在事務(wù)寫入二進(jìn)制日志完成后,master通知存儲(chǔ)引擎提交事務(wù)。

(2)slave將master的binarylog拷貝到自己的中繼日志:首先,slave開始一個(gè)工作線程——I/O線程。I/O線程在master上打開一個(gè)普通的連接,然后開始binlog dump process。Binlog dump process從master的二進(jìn)制日志中讀取事務(wù),如果已經(jīng)同步了master,它會(huì)睡眠并等待master產(chǎn)生新的事件。I/O線程將這些事務(wù)寫入中繼日志。

(3)SQL slave thread處理該過程的最后一步:SQL線程從中繼日志讀取事務(wù),并重放其中的事務(wù)而更新slave的數(shù)據(jù),使其與master中的數(shù)據(jù)一致。只要該線程與I/O線程保持一致,中繼日志通常會(huì)位于OS的緩存中,所以中繼日志的開銷很小。

主主同步就是兩臺(tái)機(jī)器互為主的關(guān)系,在任何一臺(tái)機(jī)器上寫入都會(huì)同步至備端。

為了便于后續(xù)數(shù)據(jù)庫(kù)服務(wù)器的擴(kuò)展,且在整個(gè)復(fù)制環(huán)境中能夠自動(dòng)地切換,降低運(yùn)維成本,引入了當(dāng)前主流的基于Mysql GTID的復(fù)制特性,工作原理及優(yōu)缺點(diǎn)簡(jiǎn)介如下。

3、 GTID工作原理簡(jiǎn)介:

(1) master更新數(shù)據(jù)時(shí),會(huì)在事務(wù)前產(chǎn)生GTID,一同記錄到Binlog日志中。

(2) slave的I/O線程將變更的binlog寫入到本地的relay log中。

(3) slave的sql線程從relay log中獲取GTID,然后對(duì)比slave端的binlog是否有記錄。

(4) 如果有記錄說明該GTID的事務(wù)已經(jīng)執(zhí)行,slave會(huì)忽略。

(5) 如果沒有記錄,slave就會(huì)從relay log中執(zhí)行該GTID的事務(wù),并記錄到binlog。

(6) 在解析的過程中會(huì)判斷是否有主鍵,如果有就用索引,如果沒有就用全部掃描。

4、 GTID優(yōu)點(diǎn):

(1) 一個(gè)事務(wù)對(duì)應(yīng)一個(gè)唯一的ID,一個(gè)GTID在一個(gè)服務(wù)器上 只會(huì)執(zhí)行一次。(2) GTID是用來替代傳統(tǒng)復(fù)制的方法,GTID復(fù)制與普通復(fù)制模式的最大不同就是不需要指定二進(jìn)制文件名和位置。

(3) 減少手工干預(yù)和降低服務(wù)故障時(shí)間,當(dāng)主機(jī)宕機(jī)之后會(huì)通過軟件從眾多的備機(jī)中提升一臺(tái)備機(jī)為新的master。

5、 GTID也存在一些限制:

(1) 不支持非事務(wù)引擎。

(2) 不支持create table … select 語(yǔ)句復(fù)制(主庫(kù)直接報(bào)錯(cuò))。

(3) 不允許一個(gè)sql同時(shí)更新一個(gè)事務(wù)引擎表和非事務(wù)引擎表。

(4) 在一個(gè)復(fù)制組中,必須要求統(tǒng)一開啟GTID或者是統(tǒng)一關(guān)閉GTID。

(5) 開啟GTID需要重啟(5.7版本除外)。

(6) 開啟GTID后,就不再使用原理的傳統(tǒng)復(fù)制方式。

(7) 不支持create temporary table 和 drop temporary table語(yǔ)句。

(8) 不支持sql_slave_skip_counter。

前置條件:

主備兩個(gè)節(jié)點(diǎn)使用行內(nèi)統(tǒng)一的安裝部署腳本安裝mysql5.7.21介質(zhì)(略)

Master1端創(chuàng)建應(yīng)用的數(shù)據(jù)庫(kù)(略)

1、 修改MySQL配置文件

參考相關(guān)配置規(guī)范,分別設(shè)置master1、master2的my.cnf文件,

其中server-id參數(shù)設(shè)置為不同值;

由于后續(xù)keepalived會(huì)掛起VIP,應(yīng)用通過VIP連接數(shù)據(jù)庫(kù),為了避免應(yīng)用程序無(wú)法通過VIP訪問,需將兩個(gè)節(jié)點(diǎn)的bind-address參數(shù)注釋掉;

2、 設(shè)置master1端自動(dòng)半同步模式

Mysql的同步模式主要有如下3種:

a. 主從同步復(fù)制:數(shù)據(jù)完整性好,但是性能消耗略高;

b. 主從異步復(fù)制:性能消耗低,但容易出現(xiàn)不一致;

c. 主從半自動(dòng)復(fù)制:介于上述兩種之間,既保持了數(shù)據(jù)的完整性,又提高了性能;

基于上述特性,建議采用半自動(dòng)同步模式,由于后續(xù)要配置為雙主模式,因此任一節(jié)點(diǎn)其角色既為master又為slave,因此相關(guān)的master/slave插件要同時(shí)配置,過程如下。

(1) 首先查看庫(kù)是否支持動(dòng)態(tài)加載(默認(rèn)都支持)

(2) 主從庫(kù)上分別安裝插件

作為主庫(kù),安裝插件semisync_master.so

作為從庫(kù),安裝插件semisync_slave.so

(3) 安裝完成后,從plugin表中能夠看到剛剛安裝的插件

(4) 分別打開主從庫(kù)半同步復(fù)制

同時(shí)添加到各自的my.cnf中,在后續(xù)數(shù)據(jù)庫(kù)實(shí)例重啟時(shí)自動(dòng)加載該配置。

此時(shí)查看狀態(tài)還沒有啟動(dòng)

(5) 兩個(gè)節(jié)點(diǎn)分別啟動(dòng)IO進(jìn)程

(6) 查看半同步狀態(tài)

3、 將master1設(shè)為master2的主服務(wù)器

(1)在master1主機(jī)上創(chuàng)建授權(quán)賬戶,允許在master2主機(jī)上連接

(2)將主庫(kù)master1數(shù)據(jù)導(dǎo)出

(3)將master.sql傳輸?shù)絤aster2上并導(dǎo)入

(4)在master2端將master1設(shè)置為自己的主庫(kù),并開啟slave功能

在master2上查看slave狀態(tài)

至此master1到master2的主從復(fù)制關(guān)系已經(jīng)建立完成。

4、 將master2設(shè)為master1的主服務(wù)器

在master1上執(zhí)行

在master1上查看slave狀態(tài)

1、keepalived相關(guān)概念說明:

keepalived是集群管理中保證集群高可用的一個(gè)軟件解決方案,其功能類似于heartbeat,用來防止單點(diǎn)故障

keepalived是以VRRP協(xié)議為實(shí)現(xiàn)基礎(chǔ)的,VRRP全稱VirtualRouter Redundancy Protocol,即虛擬路由冗余協(xié)議。

虛擬路由冗余協(xié)議,可以認(rèn)為是實(shí)現(xiàn)路由器高可用的協(xié)議,即將N臺(tái)提供相同功能的路由器組成一個(gè)路由器組,這個(gè)組里面有一個(gè)master和多個(gè)backup,master上面有一個(gè)對(duì)外提供服務(wù)的vip,master會(huì)發(fā)組播(組播地址為224.0.0.18),當(dāng)backup收不到vrrp包時(shí)就認(rèn)為master宕掉了,這時(shí)就需要根據(jù)VRRP的優(yōu)先級(jí)來選舉一個(gè)backup當(dāng)master,這樣的話就可以保證路由器的高可用了。

keepalived主要有三個(gè)模塊,分別是core 、check和vrrp。core模塊為keepalived的核心,負(fù)責(zé)主進(jìn)程的啟動(dòng)、維護(hù)以及全局配置文件的加載和解析。check負(fù)責(zé) 健康 檢查,包括常見的各種檢查方式。vrrp模塊是來實(shí)現(xiàn)VRRP協(xié)議的。同時(shí)為了避免出現(xiàn)腦裂,應(yīng)關(guān)閉防火墻或者開啟防火墻但允許接收VRRP協(xié)議。

2、keepalived的安裝配置

(1)配置本地yum源,在master1和master2兩臺(tái)服務(wù)器上安裝keepalived的相關(guān)依賴包Kernel-devel/openssl-devel/popt-devl等

配置指向rhel-7.5.iso的yum本地源,步驟略

注意:如不知道keepalived需要哪些依賴包,可到下載后的源碼解壓目錄下查看INSTALL 文件內(nèi)容,安裝需要的依賴包,源碼安裝任何一個(gè)軟件都要養(yǎng)成查看源碼包文檔的習(xí)慣,比如INSTALL,README,doc等文檔,可以獲得很多有用的信息。

(2)在兩臺(tái)mysql上解壓縮并編譯安裝keepalived

(3)master1、master2上分別配置keepalived.conf

注意上圖紅色字體中兩個(gè)節(jié)點(diǎn)配置相同處及差異。

說明:keepalived只有一個(gè)配置文件keepalived.conf,里面主要包括以下幾個(gè)配置區(qū)域:

· global_defs:主要是配置故障發(fā)生時(shí)的通知對(duì)象以及機(jī)器標(biāo)識(shí)。

· vrrp_instance:用來定義對(duì)外提供服務(wù)的VIP區(qū)域及其相關(guān)屬性。

· virtual_server:虛擬服務(wù)器定義

(4)同時(shí)兩個(gè)節(jié)點(diǎn)上都需要添加檢測(cè)腳本

作用:是當(dāng)mysql停止工作時(shí)自動(dòng)關(guān)閉本機(jī)的keeplived服務(wù),從而實(shí)現(xiàn)將故障主機(jī)踢出熱備組,因每臺(tái)機(jī)器上keepalived只添加了本機(jī)為realserver,所以當(dāng)mysqld正常啟動(dòng)后,我們還需要手動(dòng)啟動(dòng)keepalived服務(wù)。

(5)分別啟動(dòng)兩個(gè)節(jié)點(diǎn)的keepalived服務(wù)

檢查兩個(gè)節(jié)點(diǎn)keepalived啟動(dòng)進(jìn)程

檢查兩個(gè)節(jié)點(diǎn)的vip掛載情況

(6)主備機(jī)故障切換測(cè)試

停止master2的mysql服務(wù),看keepalived 健康 檢查程序是否會(huì)觸發(fā)腳本,自動(dòng)進(jìn)行故障切換,步驟略

查看master1節(jié)點(diǎn)的VIP掛載情況,驗(yàn)證是否實(shí)現(xiàn)了自動(dòng)切換,步驟略

說明在master2服務(wù)器的mysql服務(wù)發(fā)生故障時(shí),觸發(fā)了腳本,自動(dòng)完成了切換。

(7)現(xiàn)在我們把master2的mysql服務(wù)開起來,并且keepalived的服務(wù)也需要啟動(dòng)。

即便master2的mysql服務(wù)和keepalived服務(wù)都重新開啟了,master1仍然是主master了,master2未對(duì)主master的權(quán)利進(jìn)行搶奪,說明設(shè)置的nopreempt參數(shù)生效了,為了保證群集的穩(wěn)定性,生產(chǎn)環(huán)境不允許搶占配置,只有當(dāng)master1的mysql服務(wù)壞掉的時(shí)候,master2才會(huì)再次成為主master,否則它永遠(yuǎn)只能當(dāng)master1的備份。(注:nopreempt一般是在優(yōu)先級(jí)高的mysql上設(shè)置)

Sysbench是一個(gè)模塊化的、跨平臺(tái)、多線程基準(zhǔn)測(cè)試工具,可用于評(píng)估數(shù)據(jù)庫(kù)負(fù)載情況,通過sysbench命令配置IP地址、端口號(hào)、用戶名、密碼連接到指定的數(shù)據(jù)庫(kù)db1中,創(chuàng)建多個(gè)表,并快速插入指定條數(shù)的記錄,觀察主備庫(kù)同步效率

(1) 下載開源工具sysbench-0.4.12.14.tar.gz,放置在相應(yīng)目錄下并解壓

(2) 使用iso配置本地yum源并安裝Sysbench如下的依賴包(步驟略):autoconf/automake/cdbs/debhelper(=9)/docbook-xml/docbook-xsl/libmysqlclient15-dev/libtool/xsltproc

(3) 編譯sysbench

編輯配置文件/etc/ld.so.conf中添加mysql lib目錄/mysql/app/5.7.21/lib,并執(zhí)行命令ldconfig生效

(4) 執(zhí)行sysbench壓測(cè)

使用sysbench工具向主節(jié)點(diǎn)的db1數(shù)據(jù)庫(kù)中創(chuàng)建5張表,并且每張表分別插入10萬(wàn)條記錄

同時(shí)觀察備機(jī)同步效率

幾個(gè)重要的參數(shù)說明:

B、半自動(dòng)同步模式、異步模式切換測(cè)試

(1) 檢查主備同步狀態(tài),及同步參數(shù)設(shè)置

rpl_semi_sync_master_enabled參數(shù)表示啟用半同步模式;

rpl_semi_sync_master_timeout參數(shù)單位為毫秒,表示主庫(kù)事務(wù)等待從庫(kù)返回commit成功信息超過10秒就降為異步模式,不再等待從庫(kù),等探測(cè)到從庫(kù)io線程恢復(fù)后,再返回為半自動(dòng)同步;

rpl_semi_sync_master_wait_no_slave參數(shù)表示事務(wù)提交后需要等待從庫(kù)返回確認(rèn)信息;

(2) 將slave的io線程停止

(3) 使用sysbench向master寫入少量的數(shù)據(jù),本例創(chuàng)建一張表,并插入10條記錄,命令包裝在1.sh測(cè)試腳本中

通過記錄的時(shí)間戳發(fā)現(xiàn),master在等待了slave10秒無(wú)響應(yīng),自動(dòng)切換為異步模式,將數(shù)據(jù)寫入本地。

(4) Slave啟動(dòng)io線程,數(shù)據(jù)自動(dòng)追平

至此MySQL主主復(fù)制配置完成,運(yùn)行在半自動(dòng)同步模式,通過keepalived實(shí)現(xiàn)Mysql的HA高可用。

上線后應(yīng)符合統(tǒng)一的標(biāo)準(zhǔn)監(jiān)控策略,添加備份協(xié)議對(duì)數(shù)據(jù)進(jìn)行周期備份并保存到帶庫(kù)中,以及定期的數(shù)據(jù)恢復(fù)測(cè)試。

由于是靠keepalived實(shí)現(xiàn)的高可用,還應(yīng)將如下資源添加到監(jiān)控管理平臺(tái):

1、 對(duì)每臺(tái)數(shù)據(jù)庫(kù)主機(jī)的3個(gè)keepalived進(jìn)程進(jìn)行監(jiān)控;

2、 對(duì)主備節(jié)點(diǎn)的io線程、sql線程工作狀態(tài)進(jìn)行監(jiān)控;

Mysql 高可用方案 Keepalived

查看keepalived的配置文件位置,修改配置文件

chk_mysql.sh的目的是監(jiān)控mysql是否還存活,如果mysql掛掉,則停止本機(jī)器的keepalived,keepalived會(huì)自動(dòng)切換另一個(gè)mysql來使用

查看ip后,發(fā)現(xiàn)vip已經(jīng)生成,此時(shí)通過vip 192.168.200.100訪問mysql

bash restart.sh

查看日志

docker logs -f --tail 100 keepalived

ip a

此時(shí)也顯示構(gòu)建成功

MySQL高可用實(shí)戰(zhàn)( MHA)

修改mysql的所有節(jié)點(diǎn)mysql的主配置文件 ( /etc/my.cnf )

Master 節(jié)點(diǎn)

Slave1,Slave2節(jié)點(diǎn)

MHA官網(wǎng):

GitHub地址:

文檔:

當(dāng)一個(gè) master 崩潰時(shí),MHA 會(huì)恢復(fù)下面的 rest slave。

MHA 由 MHA Manager 和 MHA Node 組成,如下所示:

下載地址:

下載地址:

/opt/mysql-mha/master_ip_failover ,下面配置文件中會(huì)用到

給該腳本添加可執(zhí)行權(quán)限:

candidate_master=1

check_repl_delay=0

第一次配置需要在master節(jié)點(diǎn)上手動(dòng)啟動(dòng)虛擬IP,標(biāo)簽要和master_ip_faioverl配置文件中my $key = '1'; 一樣

先在當(dāng)前的主庫(kù)服務(wù)器slave1上查看二進(jìn)制日志和同步點(diǎn)

再在 原master 服務(wù)器上執(zhí)行同步操作

通常用什么模型來解決mysql高可用性

Asynchronous?Replication?Automatic failover

其原理是在一條異步復(fù)制通道上配置多個(gè)可用復(fù)制源,當(dāng)某個(gè)復(fù)制源不可用時(shí)(宕機(jī)、復(fù)制鏈路中斷),且 slave 的 IO 線程嘗試重連無(wú)效,自動(dòng)根據(jù)權(quán)重選擇新的源繼續(xù)同步。

準(zhǔn)備一個(gè) MGR 集群和單實(shí)例,模擬復(fù)制鏈路切換,當(dāng) primary 故障,slave 自動(dòng)切換到其他節(jié)點(diǎn)。dbdeployer?deploy?replication?--topology=group?8.0.22?--single-primarydbdeployer deploy single 8.0.22

2. 在從機(jī)上建立指向 MGR 主節(jié)點(diǎn)的復(fù)制通道,

change master to master_user='msandbox',master_password='msandbox', master_host='127.0.0.1',master_auto_position=1,source_connection_auto_failover=1,master_port=23223,master_retry_count=6,master_connect_retry=10 for channel 'mgr-single';

在 master_retry_count 和 master_connect_retry 的設(shè)置上要考慮嘗試重連多久才切換復(fù)制源。

3. 在從機(jī)上配置 asynchronous connection auto failover

配置 asynchronous connection auto failover 的兩個(gè)函數(shù):

asynchronous_connection_failover_add_source(channel-name,host,port,network-namespace,weight)

asynchronous_connection_failover_delete_source(channel-name,host,port,network-namespace)

權(quán)重值大的被優(yōu)先級(jí)選擇,可以配合MGR的選舉權(quán)重配置 asynchronous_connection_failover 的權(quán)重。當(dāng) MGR 節(jié)點(diǎn)切換,異步復(fù)制也能切換到新的主節(jié)點(diǎn)。

SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23223,null,100); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23224,null,80); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23225,null,50);start?slave?for?channel?'mgr-single';

4. 檢查異步復(fù)制通道是否啟用 failover。

mysql SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schema.replication_connection_configuration; +--------------+---------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------+---------------------------------+|?mgr-single?? |??1??????????????????????????????|+--------------+---------------------------------+1 row in set (0.01 sec

5. 把 MGR 的 primary 節(jié)點(diǎn) kill 掉,這個(gè)從節(jié)點(diǎn)會(huì)在嘗試幾輪重連失敗后自動(dòng)切換到次權(quán)重的復(fù)制源,其日志中會(huì)輸出切換信息。

注意:當(dāng)主節(jié)點(diǎn)故障,一旦復(fù)制鏈路成功 failover 后,在新的復(fù)制鏈路沒有故障時(shí),如果原主節(jié)點(diǎn)恢復(fù),是不會(huì)回切的。如果當(dāng)前復(fù)制鏈路發(fā)生故障,會(huì)再次選擇權(quán)重高的進(jìn)行切換。

怎么實(shí)現(xiàn)mysql的高可用

mysql是通過復(fù)制實(shí)現(xiàn)高可用的。主節(jié)點(diǎn)宕掉了可以繼續(xù)使用復(fù)制節(jié)點(diǎn)。有主從,主主等多種方式。

MySQL之keepalived高可用

使用keepalived做mysql主從切換的高可用

keepalived切換的優(yōu)缺點(diǎn)

1.可以切換虛擬IP

2.可能發(fā)生裂腦,就是主從服務(wù)器都同時(shí)出現(xiàn)一樣的VIP,導(dǎo)致寫入數(shù)據(jù)的時(shí)候,往主從都寫入了數(shù)據(jù)

3.可能導(dǎo)致主從mysql數(shù)據(jù)不一致。主在down機(jī)的時(shí)候,有部分?jǐn)?shù)據(jù)還沒同步到從mysql

此實(shí)驗(yàn)在mysql使用gtid同步實(shí)現(xiàn)的前提下的

192.168.209.132 master

192.168.209.131 slave

1.安裝keepalived

直接yum安裝或者編譯安裝都可以,生產(chǎn)環(huán)境也是ok的

2.配置keepalived的配置文件

keepalived配置文件默認(rèn)放在/etc/keepalived/文件夾下

如果不把配置文件放這里,那么啟動(dòng)keepalived的時(shí)候,需要用參數(shù)指定配置文件的位置

這里我用默認(rèn)安裝和默認(rèn)配置文件位置

192.168.209.132:

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

}

router_id SLAVE

}

vrrp_script chk_mysql {

script "/data/script/mysql_check.sh"

interval 2

weight -20

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

nopreempt

virtual_router_id 131

priority 100

advert_int 1

authentication {

? ? auth_type PASS

? ? auth_pass 1111

}

virtual_ipaddress {

? ? 192.168.209.16

}

track_script {

? ? chk_mysql

}

}

監(jiān)控腳本:

vim /data/script/mysql_check.sh

#!/bin/sh

mysqlstr=/usr/local/mysql/bin/mysql

host=localhost

user=root

password=123456

port=33061

mysql_status=1

$mysqlstr -h $host -u $user -p$password -P $port -e "show status;" /dev/null 21

if [ $? = 0 ] ;then

echo "mysql_status=1"

exit 0

else

pkill keepalived

fi

192.168.209.131:

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

}

router_id SLAVE

}

vrrp_script chk_mysql {

script "/data/script/mysql_check.sh"

interval 2

weight -20

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

nopreempt

virtual_router_id 131

priority 90

advert_int 1

authentication {

? ? auth_type PASS

? ? auth_pass 1111

}

virtual_ipaddress {

? ? 192.168.209.16

}

track_script {

? ? chk_mysql

}

}

配置文件:

vim /data/script/mysql_check.sh

#!/bin/sh

mysqlstr=/usr/local/mysql/bin/mysql

host=localhost

user=root

password=123456

port=33061

mysql_status=1

$mysqlstr -h $host -u $user -p$password -P $port -e "show status;" /dev/null 21

if [ $? = 0 ] ;then

echo "mysql_status=1"

exit 0

else

pkill keepalived

fi

對(duì)實(shí)驗(yàn)結(jié)果開始進(jìn)行驗(yàn)證

192.168.209.132上獲取到vip

把192.168.209.132上的mysqld給干掉

查看192.168.209.132上的mysqld和keepalived進(jìn)程是否都被干掉了;虛擬IP是否切換到192.168.209.131上了

查看192.168.209.131上是否有VIP

把192.168.209.132上的keepalived和mysqld都啟動(dòng)起來。先啟mysqld再起keepalived

此時(shí)keepalived啟動(dòng)起來了,雖然權(quán)重比192.168.209.131的高,但是設(shè)置了不搶奪,所以192.168.209.132上的keepalived不會(huì)切換vip過來

此時(shí),把192.168.209.131上的mysql停掉它

查看131上的mysql和keepalived是否已經(jīng)都停止了

查看192.168.209.132上是否有VIP了


標(biāo)題名稱:mysql怎么實(shí)現(xiàn)高可用 高性能MYSQL
文章源于:http://weahome.cn/article/hipjsd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部