成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

mysql主主+keepalived高可用

IT那活兒 / 1746人閱讀
mysql主主+keepalived高可用

點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!?。?/strong>

01

MySQL雙主(主主)架構(gòu)方案思路

  • 兩臺(tái)mysql都可讀寫(xiě),互為主備,默認(rèn)只使用一臺(tái)(masterA)負(fù)責(zé)數(shù)據(jù)的寫(xiě)入,另一臺(tái)(masterB)備用;

  • masterA是masterB的主庫(kù),masterB又是masterA的主庫(kù),它們互為主從;

  • 兩臺(tái)主庫(kù)之間做高可用,可以采用keepalived等方案(使用VIP對(duì)外提供服務(wù));

  • 建議采用高可用策略的時(shí)候,masterA或masterB均不因宕機(jī)恢復(fù)后而搶占VIP(非搶占模式)。

這樣做可以在一定程度上保證主庫(kù)的高可用,在一臺(tái)主庫(kù)down掉之后,可以在極短的時(shí)間內(nèi)切換到另一臺(tái)主庫(kù)上(盡可能減少主庫(kù)宕機(jī)對(duì)業(yè)務(wù)造成的影響),減少了主從同步給線上主庫(kù)帶來(lái)的壓力。

1)環(huán)境

兩臺(tái)安裝好mysql的服務(wù)器(yum安裝比較快且方便),關(guān)閉防火墻,關(guān)閉selinux。

  • systemctl stop firewalld(臨時(shí)關(guān)閉)

  • setenforce 0(臨時(shí)關(guān)閉)

2)我的主機(jī)地址

  • mysql1:192.168.44.131

  • mysql2:192.168.44.133

  • 虛擬ip:192.168.44.199

02

mysql1配置

在/etc/my.cnf新增以下內(nèi)容:

[mysqld]

#作為主從復(fù)制的唯一標(biāo)識(shí),集群中,不能重復(fù)

server-id = 1

#開(kāi)啟二進(jìn)制日志

log-bin = master-log

#開(kāi)啟中繼日志

relay-log = slave-log

auto_increment_offset = 1

auto_increment_increment = 2

注:auto_increment_offset確定AUTO_INCREMENT列值的起點(diǎn),也就是初始值。

auto_increment_increment控制列中的值的增量值,也就是步長(zhǎng)。

mysql中有自增長(zhǎng)字段,在做數(shù)據(jù)庫(kù)的主主同步時(shí)需要設(shè)置自增長(zhǎng)的兩個(gè)相關(guān)配置:auto_increment_offset和auto_increment_increment。

在主主同步配置時(shí),需要將兩臺(tái)服務(wù)器的auto_increment_increment增長(zhǎng)量都配置為2,而要把a(bǔ)uto_increment_offset分別配置為1和2。

03

mysql2配置

[mysqld]

#作為主從復(fù)制的唯一標(biāo)識(shí),集群中,不能重復(fù)

server-id = 2

#開(kāi)啟二進(jìn)制日志

log-bin = master-log

#開(kāi)啟中繼日志

relay-log = slave-log

auto_increment_offset = 2

auto_increment_increment = 2

04

重啟mysql服務(wù)

systemctl restart mysqld


05

mysql1為主,mysql為從配置

進(jìn)入mysql1數(shù)據(jù)庫(kù)創(chuàng)建同步賬號(hào)并賦予權(quán)限:

mysql> create user zjf@192.168.44.% identified by 123456;

mysql> grant replication slave on *.* to zjf@192.168.44.%;

mysql> show master status;

進(jìn)入mysql2數(shù)據(jù)庫(kù)執(zhí)行以下語(yǔ)句:

#log_file和log_pos的數(shù)據(jù)是mariad1上show master status得到的數(shù)據(jù)。

mysql> change master to master_host=192.168.44.131, 
master_user=zjf, master_password=123456,
master_log_file=master-log.000001, master_log_pos=441;

開(kāi)啟主從:

mysql> start slave;

mysql> show slave statusG;

06

mysql2為主,mysql1為從配置

進(jìn)入mysql2數(shù)據(jù)庫(kù)創(chuàng)建同步賬號(hào)并賦予權(quán)限:

mysql> create user zjf@192.168.44.% identified by 123456;

mysql> grant replication slave on *.* to zjf@192.168.44.%;

show master status;

進(jìn)入mysql2數(shù)據(jù)庫(kù)執(zhí)行以下語(yǔ)句:

#log_file和log_pos的數(shù)據(jù)是mariad1上show master status得到的數(shù)據(jù)。

mysql> change master to master_host=192.168.44.131, 
master_user=zjf, master_password=123456,
master_log_file=master-log.000004, master_log_pos=441;

開(kāi)啟主從:

mysql> start slave;

mysql> show slave statusG;

至此, 主主同步復(fù)制配置完成!!!

07

在mysql1創(chuàng)建一個(gè)庫(kù)test1:

Create database test1

mysql1和mysql2都有。

Show databases;

在mysql2創(chuàng)建一個(gè)庫(kù)test2:

Create database test2

Mysql1和msql2都有。

Show databases

主主同步復(fù)制配置便測(cè)試成功。

08

keepalived高可用

8.1 Mysql1和MySQL2都安裝keepalived

yum -y install keepalived

8.2 mysql1的/etc/keepalived/keepalived.conf配置

! configuration File for keepalived

global_defs {

router_id mysql-01 #主機(jī)標(biāo)示符,不一定要用主機(jī)名,默認(rèn)值取主機(jī)名

}

vrrp_instance VI_1 {

state BACKUP #非搶占模式兩臺(tái)服務(wù)器都為BACKUP

interface ens33 #根據(jù)機(jī)器的ifconfig來(lái)定,vip要綁定的網(wǎng)卡

virtual_router_id 50 #虛擬路由ID,倆節(jié)點(diǎn)保持一致 #VRRP組名,兩個(gè)節(jié)點(diǎn)的設(shè)置必須一樣,以指明各個(gè)節(jié)點(diǎn)屬于同

priority 100 #主節(jié)點(diǎn)的優(yōu)先級(jí)(1-254),備用節(jié)點(diǎn)必須比主節(jié)點(diǎn)優(yōu)先級(jí)低

advert_int 1 #組播信息發(fā)送間隔,兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣

nopreempt #不搶占vip資源,防止故障節(jié)點(diǎn)恢復(fù)后因?yàn)閮?yōu)先級(jí)高導(dǎo)致vip再次飄移

authentication { #設(shè)置驗(yàn)證信息,兩個(gè)節(jié)點(diǎn)必須一樣

auth_type PASS

auth_pass 1111

}

virtual_ipaddress { #指定虛擬ip,兩個(gè)節(jié)點(diǎn)必須一致

192.168.44.199

}

}

#虛擬主機(jī)是可選部分,主要用來(lái)配置負(fù)載均衡。這里可以綁定端口

virtual_server 192.168.44.199 3306 { #綁定端口為3306,0代表所有端口

delay_loop 2

lb_algo rr ##負(fù)載均衡輪訓(xùn)算法,詳見(jiàn)官方文檔

lb_kind DR #路由模式,同網(wǎng)段DR,不同網(wǎng)段NAT

persistence_timeout 50

protocol TCP

real_server 192.168.44.131 3306 {

weight 3

notify_down /etc/keepalived/bin/killkeepalived.sh

notify_down /etc/keepalived/bin/mysql_check.sh

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

8.3 mysql2的/etc/keepalived/keepalived.conf配置

! configuration File for keepalived

global_defs {

router_id mysql-02 #主機(jī)標(biāo)示符,不一定要用主機(jī)名,默認(rèn)值取主機(jī)名

}

vrrp_instance VI_1 {

state BACKUP #非搶占模式兩臺(tái)服務(wù)器都為BACKUP

interface ens33 #根據(jù)機(jī)器的ifconfig來(lái)定,vip要綁定的網(wǎng)卡

virtual_router_id 50 #虛擬路由ID,倆節(jié)點(diǎn)保持一致 #VRRP組名,兩個(gè)節(jié)點(diǎn)的設(shè)置必須一樣,以指明各個(gè)節(jié)點(diǎn)屬于同

priority 50 #主節(jié)點(diǎn)的優(yōu)先級(jí)(1-254),備用節(jié)點(diǎn)必須比主節(jié)點(diǎn)優(yōu)先級(jí)低

advert_int 1 #組播信息發(fā)送間隔,兩個(gè)節(jié)點(diǎn)設(shè)置必須一樣

nopreempt #不搶占vip資源,防止故障節(jié)點(diǎn)恢復(fù)后因?yàn)閮?yōu)先級(jí)高導(dǎo)致vip再次飄移

authentication { #設(shè)置驗(yàn)證信息,兩個(gè)節(jié)點(diǎn)必須一樣

auth_type PASS

auth_pass 1111

}

virtual_ipaddress { #指定虛擬ip,兩個(gè)節(jié)點(diǎn)必須一致

192.168.44.199

}

}

#虛擬主機(jī)是可選部分,主要用來(lái)配置負(fù)載均衡。這里可以綁定端口

virtual_server 192.168.44.199 3306 { #綁定端口為3306,0代表所有端口

delay_loop 2

lb_algo rr ##負(fù)載均衡輪訓(xùn)算法,詳見(jiàn)官方文檔

lb_kind DR #路由模式,同網(wǎng)段DR,不同網(wǎng)段NAT

persistence_timeout 50

protocol TCP

real_server 192.168.44.133 3306 {

weight 3

notify_down /etc/keepalived/bin/killkeepalived.sh

notify_down /etc/keepalived/bin/mysql_check.sh

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

8.4 腳本

在兩臺(tái)服務(wù)器上編寫(xiě)兩個(gè)腳本,就在keepalived配置文件指定的地方創(chuàng)建notify_down,當(dāng)Mysql和keepalived 出現(xiàn)問(wèn)題的時(shí)候會(huì)觸發(fā)此腳本,用于關(guān)掉本機(jī)的keepalived進(jìn)程,之后才能進(jìn)行切換到另外一個(gè)節(jié)點(diǎn)上去,并且授予執(zhí)行權(quán)限+x。

#!/bin/bash

counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)

if [ "${counter}" -eq 0 ]; then

systemctl stop keepalived

fi

8.5 結(jié)果

啟動(dòng)兩臺(tái)服務(wù)器的keepalived,可以看到一臺(tái)服務(wù)器有虛擬ip,另一臺(tái)沒(méi)有。

8.6 測(cè)試

停掉有虛擬ip的那臺(tái)主機(jī)的keepalived,虛擬ip會(huì)跑到另一臺(tái)主機(jī)上,且配置了不搶占規(guī)則,即使恢復(fù)服務(wù),ip也不會(huì)漂移回去。


END



本文作者:朱景鋒

本文來(lái)源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129469.html

相關(guān)文章

  • MySQL集群搭建(6)-雙主+keepalived可用

    摘要:雙主是一個(gè)比較簡(jiǎn)單的高可用架構(gòu),適用于中小集群,今天就說(shuō)說(shuō)怎么用做的高可用。缺點(diǎn)也比較明顯,就是增加從節(jié)點(diǎn)的情況下,從節(jié)點(diǎn)不會(huì)主動(dòng)切換同步對(duì)象,而且腳本需要自己實(shí)現(xiàn),有一定風(fēng)險(xiǎn)。 雙主 + keepalived 是一個(gè)比較簡(jiǎn)單的 MySQL 高可用架構(gòu),適用于中小 MySQL 集群,今天就說(shuō)說(shuō)怎么用 keepalived 做 MySQL 的高可用。 1 概述 1.1 keepalive...

    CarlBenjamin 評(píng)論0 收藏0
  • MySQL集群搭建(6)-雙主+keepalived可用

    摘要:雙主是一個(gè)比較簡(jiǎn)單的高可用架構(gòu),適用于中小集群,今天就說(shuō)說(shuō)怎么用做的高可用。缺點(diǎn)也比較明顯,就是增加從節(jié)點(diǎn)的情況下,從節(jié)點(diǎn)不會(huì)主動(dòng)切換同步對(duì)象,而且腳本需要自己實(shí)現(xiàn),有一定風(fēng)險(xiǎn)。 雙主 + keepalived 是一個(gè)比較簡(jiǎn)單的 MySQL 高可用架構(gòu),適用于中小 MySQL 集群,今天就說(shuō)說(shuō)怎么用 keepalived 做 MySQL 的高可用。 1 概述 1.1 keepalive...

    lily_wang 評(píng)論0 收藏0
  • MySQL可用方案測(cè)試

    MySQL高可用方案測(cè)試 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin...

    IT那活兒 評(píng)論0 收藏2496

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<