中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL數據庫--主主復制+keepalived高可用

發布時間:2020-07-12 19:51:03 來源:網絡 閱讀:8536 作者:tty之星 欄目:數據庫

              MySQL數據庫--主主復制+keepalived高可用

之前我們有學習過mysql的主從復制,主要是在工作環境當中防止數據庫讀寫在一臺數據庫上容易造成負載,實現讀寫分離就是為了給服務器減輕工作壓力,就好比一個人的工作分成了兩個人來做,那么人也減輕了壓力。而且工作效率也提高了上去。但是要實現讀寫分離的前提就是主從復制對吧?

主服務器為master;從服務器為slave。而我們今天帶來的和主從復制有點不一樣,多用與中小型公司,叫做主主復制。

注:在生產環境中一臺MySQL從在單點故障的缺陷,如果一旦發生意外,那么將會發生嚴重的后果,為公司造成嚴重的損失

那么如果兩個的話那么將會效果好一點;其中一臺宕掉,另一臺會馬上接替。

既然知道了主主復制的背景了,那么我們來了解下MySQL主主復制的原理以及思路:

1)開啟二進制日志文件bin_log、中繼日志文件relay-log、server-id號、以及auto-increment-offset和auto-increment-increment(自動增長)

2)設置一個用戶并且賦予權限

3)查看二進制文件和ID號,以便后續制定master服務器

4)相互指定對方為master服務器

5)開啟slave狀態,{start slave}

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

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

 

 

準備環境:

兩臺mysql服務器: 版本5.7

master服務器< ip 192.168.1.10 >

master2服務器 < ip 192.168.1.20 >

 MySQL數據庫--主主復制+keepalived高可用 

 

一:配置master的配置文件修改內容: vi /etc/my.cnf

 MySQL數據庫--主主復制+keepalived高可用 

 

log-bin = mysql-bin===========開啟binlog日志

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

server-id = 1==========ID號為1

relay-log = relay-bin==========開啟中繼日志

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

auto-increment-increment = 2 =========整個架構中的服務器臺數

auto-increment-offset = 1==========用來設定數據庫中自動增長的起點(即初始值)

完成后重啟MySQL服務

 

master2服務器也是如此:{需注意:}

 

 MySQL數據庫--主主復制+keepalived高可用 

之后重啟MySQL服務

 

 

二:設置一個用戶并且授予權限為后續的鏈接使用:

首先在master上設置:

 MySQL數據庫--主主復制+keepalived高可用 

 

三:查看下master的當前binlog狀態信息:

 MySQL數據庫--主主復制+keepalived高可用 

master2上面將master設置為自己的主服務其并且開啟slave功能

 MySQL數據庫--主主復制+keepalived高可用 

四:查看下當前的狀態,一下兩個值必須為yes,代表master2正常鏈接master服務器

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

 MySQL數據庫--主主復制+keepalived高可用 

master2服務已經成功,

接下來對master服務器進行配置;

master2設置為master的主服務器

master2上也進行同樣的配置;當然用戶可以變更

 

 MySQL數據庫--主主復制+keepalived高可用查看master2的binlog狀態;

 

 MySQL數據庫--主主復制+keepalived高可用 

master服務器上將master2設置為自己的主服務器并且開啟slave功能;

 MySQL數據庫--主主復制+keepalived高可用 

 

查看master服務器的狀態,一下兩個值必須為yes,代表從服務器可以鏈接主服務器

Slave_IO_Running:Yes

Slave_SQL_Running:Yes

 MySQL數據庫--主主復制+keepalived高可用 

以上說明master服務器也成功了。

 

 

那么接下來我們來測試下主主同步

master上面創建要同步的數據庫tty,并且在tty當中創建一張表tb1

 MySQL數據庫--主主復制+keepalived高可用 

 

那么我們來查看一下master2上面是否也會存在剛才創建的數據庫和表呢?

 MySQL數據庫--主主復制+keepalived高可用 

 

通過結果我們可以得知在master上創建的庫和表可以同步到master2上面,但是master2上的數據可以同步到master上面去嗎?

 

我們在master2上為tty庫中的tb1表中插點數據來驗證一下:

 MySQL數據庫--主主復制+keepalived高可用 

 

我們來查看一下在master上面是否會有剛才在master2上面插入的兩條數據呢?

 MySQL數據庫--主主復制+keepalived高可用 

 

由此可見當前我們的數據庫主主復制是成功的,

 

 

總結一下;

主主復制是兩臺MySQL服務互相讀寫同步,互相備份的結果

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

 

二:上面我們介紹了mysql的主主復制,但是如果這兩臺服務器其中有一臺突然宕機了該怎麼辦呢?這就需要我們的下一個要講述的環節了,也就是keepalived,實現這兩臺數據庫的負載均衡。如果有其中的一臺突然宕機之后那么另外的一臺將會接替,保證服務的不間斷性。

 

Keepalived的原理;

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

keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議

 

基于ARP協議進行組播 發送的,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip,master會發組播(組播地址為224.0.0.18),當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級選舉一個backup當master。這樣的話就可以保證路由器的高可用了。

 

Keepalived的基本模塊:

 

分別是core、check和vrrp

core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。

check負責健康檢查

vrrp模塊是來實現VRRP協議的

介紹完keepalived的功能以及模塊,接下來我們開始在兩臺mysql上都配置keepalived

安裝keepalived軟件包與服務控制

在編譯安裝Keepalived之前,必須先安裝內核開發包kernel-devel以及openssl-devel、popt-devel等支持庫。

在這里通過yum安裝:

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

 MySQL數據庫--主主復制+keepalived高可用 

編譯安裝Keepalived

 MySQL數據庫--主主復制+keepalived高可用 

 

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

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

使用keepalived服務

執行make install操作之后,會自動生成/etc/init.d/keepalived腳本文件,但還需要手動添加為系統服務,這樣就可以使用service、chkconfig工具來對keepalived服務程序進行管理了。

 MySQL數據庫--主主復制+keepalived高可用 

 

 

Master 和master2 安裝keepalived的過程均如上圖所示,沒有任何差別,

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

[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只有一個配置文件keepalived.conf,里面主要包括以下幾個配置區域,分別是global_defs、vrrp_instance和virtual_server。

 

global_defs:主要是配置故障發生時的通知對象以及機器標識。

 

vrrp_instance:用來定義對外提供服務的VIP區域及其相關屬性。

 

virtual_server:虛擬服務器定義

Master{keepalived}的主配置文件

 MySQL數據庫--主主復制+keepalived高可用 MySQL數據庫--主主復制+keepalived高可用 

 

 

啟動keepalived服務

#/etc/init.d/keepalived start

 MySQL數據庫--主主復制+keepalived高可用 

Master2主機上的keepalived.conf文件的修改:

Master2主機的keepalived.conf文件配置與master1基本相同,只是router_idpriority,real_server三處不同,其他配置都相同

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

 MySQL數據庫--主主復制+keepalived高可用 

Master2{keepalived}主配置文件

 MySQL數據庫--主主復制+keepalived高可用 

 MySQL數據庫--主主復制+keepalived高可用 

啟動keepalived服務

#/etc/init.d/keepalived start

 MySQL數據庫--主主復制+keepalived高可用 

 

 

在上面當中在notify_down指定腳本的路徑可以在不使用keepalived的時候殺死keepalived的進程;

 MySQL數據庫--主主復制+keepalived高可用 

之后給腳本一個x的執行權限

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

 

 

這些工作完成之后可以驗證我們之前的mysql+keepalived有沒有成功呢?

首先查看下vrrp的虛擬IP

 MySQL數據庫--主主復制+keepalived高可用 

那么master2上面呢?

 MySQL數據庫--主主復制+keepalived高可用 

 

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

 

首先使用我們的腳本執行以下;

 MySQL數據庫--主主復制+keepalived高可用 

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

 MySQL數據庫--主主復制+keepalived高可用 

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

 

 MySQL數據庫--主主復制+keepalived高可用 

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

 

 

在這里keepalived+mysql服務就講解到這里,但是呢在前面就曾說過,keepalived使用與小型的公司,在配置keepalived的時候需要有幾點的注意事項:

1.采用keepalived作為高可用方案時,兩個節點最好都設置成BACKUP模式,避免因為意外情況下(比如腦裂)相互搶占導致往兩個節點寫入相同數據而引發沖突;

2.把兩個節點的auto_increment_increment(自增步長)和auto_increment_offset(自增起始值)設成不同值。其目的是為了避免master節點意外宕機時,可能會有部分binlog未能及時復制到slave上被應用,從而會導致slave新寫入數據的自增值和原先master上沖突了,因此一開始就使其錯開;當然了,如果有合適的容錯機制能解決主從自增ID沖突的話,也可以不這么做;

3.slave節點服務器配置不要太差,否則更容易導致復制延遲。作為熱備節點的slave服務器,硬件配置不能低于master節點;

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

這次為大家帶來的是小型公司對mysql主要使用架構方案;下次為大家帶來的是中大型公司使用的架構MMM,相信大家也有所了解,具體等下次我們細說


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鸡东县| 南宁市| 象州县| 白沙| 黑水县| 米林县| 会理县| 新龙县| 临江市| 红河县| 高青县| 西畴县| 防城港市| 保德县| 沂水县| 子洲县| 郑州市| 荆门市| 平利县| 七台河市| 沾化县| 益阳市| 石阡县| 揭东县| 衡东县| 防城港市| 渝中区| 县级市| 昭苏县| 彝良县| 凯里市| 伊川县| 侯马市| 田阳县| 余姚市| 肃南| 津南区| 苍溪县| 华容县| 金昌市| 大田县|