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

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

MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用-創(chuàng)新互聯(lián)

        MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

作為一家“創(chuàng)意+整合+營(yíng)銷”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們?cè)跇I(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、創(chuàng)意表現(xiàn)、網(wǎng)頁(yè)制作、系統(tǒng)開(kāi)發(fā)以及后續(xù)網(wǎng)站營(yíng)銷運(yùn)營(yíng)等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營(yíng)模式與有效的網(wǎng)絡(luò)營(yíng)銷方法,創(chuàng)造更大的價(jià)值。

之前我們有學(xué)習(xí)過(guò)mysql的主從復(fù)制,主要是在工作環(huán)境當(dāng)中防止數(shù)據(jù)庫(kù)讀寫(xiě)在一臺(tái)數(shù)據(jù)庫(kù)上容易造成負(fù)載,實(shí)現(xiàn)讀寫(xiě)分離就是為了給服務(wù)器減輕工作壓力,就好比一個(gè)人的工作分成了兩個(gè)人來(lái)做,那么人也減輕了壓力。而且工作效率也提高了上去。但是要實(shí)現(xiàn)讀寫(xiě)分離的前提就是主從復(fù)制對(duì)吧?

主服務(wù)器為master;從服務(wù)器為slave。而我們今天帶來(lái)的和主從復(fù)制有點(diǎn)不一樣,多用與中小型公司,叫做主主復(fù)制。

注:在生產(chǎn)環(huán)境中一臺(tái)MySQL從在單點(diǎn)故障的缺陷,如果一旦發(fā)生意外,那么將會(huì)發(fā)生嚴(yán)重的后果,為公司造成嚴(yán)重的損失。

那么如果兩個(gè)的話那么將會(huì)效果好一點(diǎn);其中一臺(tái)宕掉,另一臺(tái)會(huì)馬上接替。

既然知道了主主復(fù)制的背景了,那么我們來(lái)了解下MySQL主主復(fù)制的原理以及思路:

1)開(kāi)啟二進(jìn)制日志文件bin_log、中繼日志文件relay-log、server-id號(hào)、以及auto-increment-offset和auto-increment-increment(自動(dòng)增長(zhǎng))

2)設(shè)置一個(gè)用戶并且賦予權(quán)限

3)查看二進(jìn)制文件和ID號(hào),以便后續(xù)制定master服務(wù)器

4)相互指定對(duì)方為master服務(wù)器

5)開(kāi)啟slave狀態(tài),{start slave}

6)查看sql和i/o狀態(tài)為yes便成功

以上屬于主主復(fù)制的基本思路;接下來(lái)我們演示一下,讓大家看的更直觀一些:

準(zhǔn)備環(huán)境:

兩臺(tái)mysql服務(wù)器: 版本5.7

master服務(wù)器< ip 192.168.1.10 >

master2服務(wù)器 < ip 192.168.1.20 >

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

一:配置master的配置文件修改內(nèi)容: vi /etc/my.cnf

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

log-bin = mysql-bin===========開(kāi)啟binlog日志

binlog_format = mixed========基于混合模式

server-id = 1==========ID號(hào)為1

relay-log = relay-bin==========開(kāi)啟中繼日志

relay-log-index = slave-relay-bin.index==========中繼日志的索引文件

auto-increment-increment = 2 =========整個(gè)架構(gòu)中的服務(wù)器臺(tái)數(shù)

auto-increment-offset = 1==========用來(lái)設(shè)定數(shù)據(jù)庫(kù)中自動(dòng)增長(zhǎng)的起點(diǎn)(即初始值)

完成后重啟MySQL服務(wù)

master2服務(wù)器也是如此:{需注意:}

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

之后重啟MySQL服務(wù)

二:設(shè)置一個(gè)用戶并且授予權(quán)限為后續(xù)的鏈接使用:

首先在master上設(shè)置:

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

三:查看下master的當(dāng)前binlog狀態(tài)信息:

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

在master2上面將master設(shè)置為自己的主服務(wù)其并且開(kāi)啟slave功能

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

四:查看下當(dāng)前的狀態(tài),一下兩個(gè)值必須為yes,代表master2正常鏈接master服務(wù)器

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

master2服務(wù)已經(jīng)成功,

接下來(lái)對(duì)master服務(wù)器進(jìn)行配置;

將master2設(shè)置為master的主服務(wù)器

master2上也進(jìn)行同樣的配置;當(dāng)然用戶可以變更

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用查看master2的binlog狀態(tài);

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

在master服務(wù)器上將master2設(shè)置為自己的主服務(wù)器并且開(kāi)啟slave功能;

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

查看master服務(wù)器的狀態(tài),一下兩個(gè)值必須為yes,代表從服務(wù)器可以鏈接主服務(wù)器

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

以上說(shuō)明master服務(wù)器也成功了。

那么接下來(lái)我們來(lái)測(cè)試下主主同步

在master上面創(chuàng)建要同步的數(shù)據(jù)庫(kù)tty,并且在tty當(dāng)中創(chuàng)建一張表tb1

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

那么我們來(lái)查看一下master2上面是否也會(huì)存在剛才創(chuàng)建的數(shù)據(jù)庫(kù)和表呢?

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

通過(guò)結(jié)果我們可以得知在master上創(chuàng)建的庫(kù)和表可以同步到master2上面,但是master2上的數(shù)據(jù)可以同步到master上面去嗎?

我們?cè)趍aster2上為tty庫(kù)中的tb1表中插點(diǎn)數(shù)據(jù)來(lái)驗(yàn)證一下:

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

我們來(lái)查看一下在master上面是否會(huì)有剛才在master2上面插入的兩條數(shù)據(jù)呢?

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

由此可見(jiàn)當(dāng)前我們的數(shù)據(jù)庫(kù)主主復(fù)制是成功的,

總結(jié)一下;

主主復(fù)制是兩臺(tái)MySQL服務(wù)互相讀寫(xiě)同步,互相備份的結(jié)果

注:若主MYSQL服務(wù)器已經(jīng)存在,只是后期才搭建從MYSQL服務(wù)器,在置配數(shù)據(jù)同步前應(yīng)先將主MYSQL服務(wù)器的要同步的數(shù)據(jù)庫(kù)拷貝到從MYSQL服務(wù)器上(如先在主MYSQL上備份數(shù)據(jù)庫(kù),再用備份在從MYSQL服務(wù)器上恢復(fù))

二:上面我們介紹了mysql的主主復(fù)制,但是如果這兩臺(tái)服務(wù)器其中有一臺(tái)突然宕機(jī)了該怎麼辦呢?這就需要我們的下一個(gè)要講述的環(huán)節(jié)了,也就是keepalived,實(shí)現(xiàn)這兩臺(tái)數(shù)據(jù)庫(kù)的負(fù)載均衡。如果有其中的一臺(tái)突然宕機(jī)之后那么另外的一臺(tái)將會(huì)接替,保證服務(wù)的不間斷性。

Keepalived的原理;

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

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

基于ARP協(xié)議進(jìn)行組播 發(fā)送的,即將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í)來(lái)選舉一個(gè)backup當(dāng)master。這樣的話就可以保證路由器的高可用了。

Keepalived的基本模塊:

分別是core、check和vrrp

core模塊為keepalived的核心,負(fù)責(zé)主進(jìn)程的啟動(dòng)、維護(hù)以及全局配置文件的加載和解析。

check負(fù)責(zé)健康檢查

vrrp模塊是來(lái)實(shí)現(xiàn)VRRP協(xié)議的

介紹完keepalived的功能以及模塊,接下來(lái)我們開(kāi)始在兩臺(tái)mysql上都配置keepalived

安裝keepalived軟件包與服務(wù)控制

在編譯安裝Keepalived之前,必須先安裝內(nèi)核開(kāi)發(fā)包kernel-devel以及openssl-devel、popt-devel等支持庫(kù)。

在這里通過(guò)yum安裝:

Yum -y install kernel-devel  openssl-devel popt-devel

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

編譯安裝Keepalived

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

注意:在centos7.2上安裝keepalived不需要添加--with-kernel-dir

[root@localhost keepalived-1.2.20]# ./configure --prefix=/  && make && make install

使用keepalived服務(wù)

執(zhí)行make install操作之后,會(huì)自動(dòng)生成/etc/init.d/keepalived腳本文件,但還需要手動(dòng)添加為系統(tǒng)服務(wù),這樣就可以使用service、chkconfig工具來(lái)對(duì)keepalived服務(wù)程序進(jìn)行管理了。

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

Master 和master2 安裝keepalived的過(guò)程均如上圖所示,沒(méi)有任何差別,

注:如果在centos7.2上安裝keepalived防火墻的規(guī)則配置如下:

[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family=ipv4 destination address=224.0.0.18 protocol value=ip accept"

success

[root@localhost ~]# firewall-cmd --reload

修改keepalived的配置文件:

keepalived只有一個(gè)配置文件keepalived.conf,里面主要包括以下幾個(gè)配置區(qū)域,分別是global_defs、vrrp_instance和virtual_server。

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

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

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

Master{keepalived}的主配置文件

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

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

#/etc/init.d/keepalived start

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

Master2主機(jī)上的keepalived.conf文件的修改:

Master2主機(jī)的keepalived.conf文件配置與master1基本相同,只是router_id,priority,real_server三處不同,其他配置都相同

可以使用scp命令把server1主機(jī)上配置好的keepalived.conf文件拷貝到server2主機(jī),只要做簡(jiǎn)單修改即可,如下圖所示:

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

Master2的{keepalived}主配置文件

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

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

#/etc/init.d/keepalived start

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

在上面當(dāng)中在notify_down指定腳本的路徑可以在不使用keepalived的時(shí)候殺死keepalived的進(jìn)程;

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

之后給腳本一個(gè)x的執(zhí)行權(quán)限

Chmod +x /etc/keepalived/bin/mysql.sh

這些工作完成之后可以驗(yàn)證我們之前的mysql+keepalived有沒(méi)有成功呢?

首先查看下vrrp的虛擬IP

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

那么master2上面呢?

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

在這里我們模擬master突然宕機(jī)之后看一看master2是否會(huì)接替master上面的vrrp漂移ip呢?

首先使用我們的腳本執(zhí)行以下;

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

之后呢在查看下master上面的vrrp漂移ip是否存在

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

可以看得出啦vrrp的漂移ip已經(jīng)不再master服務(wù)器上面了,那么master2上面呢?

 MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用

可以看到master2成功的接替了master上面的vrrp的漂移ip了,說(shuō)明我們的高可用服務(wù)是成功的

在這里keepalived+mysql服務(wù)就講解到這里,但是呢在前面就曾說(shuō)過(guò),keepalived使用與小型的公司,在配置keepalived的時(shí)候需要有幾點(diǎn)的注意事項(xiàng):

1).采用keepalived作為高可用方案時(shí),兩個(gè)節(jié)點(diǎn)最好都設(shè)置成BACKUP模式,避免因?yàn)橐馔馇闆r下(比如腦裂)相互搶占導(dǎo)致往兩個(gè)節(jié)點(diǎn)寫(xiě)入相同數(shù)據(jù)而引發(fā)沖突;

2).把兩個(gè)節(jié)點(diǎn)的auto_increment_increment(自增步長(zhǎng))和auto_increment_offset(自增起始值)設(shè)成不同值。其目的是為了避免master節(jié)點(diǎn)意外宕機(jī)時(shí),可能會(huì)有部分binlog未能及時(shí)復(fù)制到slave上被應(yīng)用,從而會(huì)導(dǎo)致slave新寫(xiě)入數(shù)據(jù)的自增值和原先master上沖突了,因此一開(kāi)始就使其錯(cuò)開(kāi);當(dāng)然了,如果有合適的容錯(cuò)機(jī)制能解決主從自增ID沖突的話,也可以不這么做;

3).slave節(jié)點(diǎn)服務(wù)器配置不要太差,否則更容易導(dǎo)致復(fù)制延遲。作為熱備節(jié)點(diǎn)的slave服務(wù)器,硬件配置不能低于master節(jié)點(diǎn);

4).如果對(duì)延遲問(wèn)題很敏感的話,可考慮使用MariaDB分支版本,或者直接上線MySQL 5.7最新版本,利用多線程復(fù)制的方式可以很大程度降低復(fù)制延遲;

這次為大家?guī)?lái)的是小型公司對(duì)mysql主要使用架構(gòu)方案;下次為大家?guī)?lái)的是中大型公司使用的架構(gòu)MMM,相信大家也有所了解,具體等下次我們細(xì)說(shuō)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)頁(yè)名稱:MySQL數(shù)據(jù)庫(kù)--主主復(fù)制+keepalived高可用-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://weahome.cn/article/djcodi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部