MHA高可用搭建和應(yīng)用

MHA 高可用環(huán)境搭建

規(guī)劃:

主庫: 51 node

從庫:

52? ? ? node

53? ? ? node? ? manager

準(zhǔn)備環(huán)境(略褪测。1主2從GTID)

配置關(guān)鍵程序軟連接

ln -s /data/app/mysql/bin/mysqlbinlog? ? /usr/bin/mysqlbinlog

ln -s /data/app/mysql/bin/mysql? ? ? ? ? /usr/bin/mysql

配置各節(jié)點互信(各節(jié)點之間無密碼SSH)

# db01:

rm -rf /root/.ssh

ssh-keygen

cd /root/.ssh

mv id_rsa.pub authorized_keys

scp? -r? /root/.ssh? 10.0.0.52:/root

scp? -r? /root/.ssh? 10.0.0.53:/root

各節(jié)點驗證

db01:

ssh 10.0.0.51 date

ssh 10.0.0.52 date

ssh 10.0.0.53 date

db02:

ssh 10.0.0.51 date

ssh 10.0.0.52 date

ssh 10.0.0.53 date

db03:

ssh 10.0.0.51 date

ssh 10.0.0.52 date

ssh 10.0.0.53 date

安裝軟件

下載mha軟件

mha官網(wǎng):https://code.google.com/archive/p/mysql-master-ha/

github下載地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads

所有節(jié)點安裝Node軟件依賴包

yum install perl-DBD-MySQL -y

rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

在db01主庫中創(chuàng)建mha需要的用戶

grant all privileges on *.* to mha@'10.0.0.%' identified by 'mha';

Manager軟件安裝(db03)

yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes

rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

配置文件準(zhǔn)備(db03)(manger)

創(chuàng)建配置文件目錄

mkdir -p /etc/mha

創(chuàng)建日志目錄

mkdir -p /var/log/mha/app1

編輯mha配置文件

vim /etc/mha/app1.cnf

[server default]

manager_log=/var/log/mha/app1/manager? ? ? ?

manager_workdir=/var/log/mha/app1? ? ? ? ? ?

master_binlog_dir=/data/3306/binlog? ? ?

user=mha? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

password=mha? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

ping_interval=2

repl_password=123

repl_user=repl

ssh_user=root? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

[server1]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

hostname=10.0.0.51

port=3306? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

[server2]? ? ? ? ? ?

hostname=10.0.0.52

port=3306

[server3]

hostname=10.0.0.53

port=3306

狀態(tài)檢查

### 互信檢查

masterha_check_ssh? --conf=/etc/mha/app1.cnf

### 主從狀態(tài)檢查

masterha_check_repl --conf=/etc/mha/app1.cnf

開啟MHA(db03):

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover? < /dev/null> /var/log/mha/app1/manager.log 2>&1 &

查看MHA狀態(tài)

[root@db03 ~]# masterha_check_status --conf=/etc/mha/app1.cnf

++++++++++++++++++++++++++++++++++++++++++++++++++++++


宕主庫測試

看日志

[root@db03 app1]# vim /var/log/mha/app1/manager

修復(fù)故障節(jié)點

恢復(fù)主從

change master to

master_host='10.0.0.52',

master_user='repl',

master_password='123' ,

MASTER_AUTO_POSITION=1;

start slave;

修復(fù)配置文件

手動:

vim /etc/mha/app1.cnf

[server1]

hostname=10.0.0.51

port=3306

命令:

[root@db03 ~]# masterha_conf_host --command=add --conf=/etc/mha/app1.cnf --hostname=10.0.0.51 --block=server10 --params="port=3306"

masterha_conf_host --command=delete --conf=/etc/mha/app1.cnf --block=server1

預(yù)檢測腳本

[root@db03 ~]# masterha_check_ssh? --conf=/etc/mha/app1.cnf

[root@db03 ~]# masterha_check_repl? --conf=/etc/mha/app1.cnf

啟動MHA

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover? < /dev/null> /var/log/mha/app1/manager.log 2>&1 &

[root@db03 ~]# masterha_check_status --conf=/etc/mha/app1.cnf

app1 (pid:24316) is running(0:PING_OK), master:10.0.0.52



應(yīng)用透明---VIP

vip :? 10.0.0.55/24

vip 故障轉(zhuǎn)移腳本

上傳mha_script.tar文件到/usr/local/bin 解壓

修改權(quán)限

[root@db03 bin]# chmod +x /usr/local/bin/*

修改內(nèi)容

[root@db03 bin]# cp master_ip_failover master_ip_failover.bak

my $vip = '10.0.0.55/24';

my $key = '1';

my $if? = 'ens33';

my $ssh_start_vip = "/sbin/ifconfig $if:$key $vip";

my $ssh_stop_vip = "/sbin/ifconfig? $if:$key down";

my $ssh_Bcast_arp= "/sbin/arping -I $if -c 3 -A 10.0.0.55";

修改Manager 配置文件

vim /etc/mha/app1.cnf

master_ip_failover_script=/usr/local/bin/master_ip_failover

重啟MHA

[root@db03 bin]# masterha_stop? --conf=/etc/mha/app1.cnf

[root@db03 bin]# nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover? < /dev/null> /var/log/mha/app1/manager.log 2>&1 &



手工在主庫添加VIP

[root@db02 ~]# ifconfig ens33:1 10.0.0.55/24

故障提醒功能

準(zhǔn)備腳本

[root@db03 bin]# cp send_report send_report.bak1

my $smtp='smtp.qq.com';? ? ? ? ? ? # smtp服務(wù)器

my $mail_from='22654481@qq.com';? ? # 發(fā)件箱

my $mail_user='22654481';? ? ? ? ? # 用戶名 QQ號

my $mail_pass='gemghsvgkeyzcagh';? # 授權(quán)碼

my $mail_to=['22654481@qq.com'];? ? # 收件箱

#my $mail_to=['to1@qq.com','to2@qq.com'];

修改配置文件

vim /etc/mha/app1.cnf

# 添加一行:

report_script=/usr/local/bin/send_report

重啟MHA

[root@db03 bin]# masterha_stop? --conf=/etc/mha/app1.cnf

[root@db03 bin]# nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover? < /dev/null> /var/log/mha/app1/manager.log 2>&1 &



日志補償?shù)娜哂喾桨?-binlog_server

創(chuàng)建必要目錄(db03)

mkdir -p /data/binlog_server/

chown -R mysql.mysql /data/*

cd? /data/binlog_server/

[root@db03 ~]# mysql -e "show slave status \G"|grep "Master_Log"

Master_Log_File: mysql-bin.000008

Read_Master_Log_Pos: 194

Relay_Master_Log_File: mysql-bin.000008

Exec_Master_Log_Pos: 194

[root@db03 ~]#

mysqlbinlog? -R --host=10.0.0.51 --user=mha --password=mha --raw? --stop-never mysql-bin.000008 &

注意:

拉取日志的起點,需要按照目前從庫的已經(jīng)獲取到的二進制日志點為起點

配置文件設(shè)置

vim /etc/mha/app1.cnf

[binlog1]

no_master=1

hostname=10.0.0.53

master_binlog_dir=/data/binlog_server/

重啟MHA

[root@db03 bin]# masterha_stop? --conf=/etc/mha/app1.cnf

[root@db03 bin]# nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover? < /dev/null> /var/log/mha/app1/manager.log 2>&1 &



MHA的維護操作 - 在線切換功能

只切換角色

masterha_master_switch? --conf=/etc/mha/app1.cnf --master_state=alive --new_master_host=10.0.0.52 --orig_master_is_new_slave --running_updates_limit=10000

注意:

master_ip_online_change_script is not defined. If you do not disable writes on the current master manually, applications keep writing on the current master. Is it ok to proceed? (yes/NO): yes

1. 此種方法 切換,要注意將原主庫滑黔,F(xiàn)TWRL环揽,否則會造成主從不一致。

2. 手工切換vip

3. 重新拉去新主庫的binlog

9.2 master_ip_online_change_script功能實現(xiàn)

功能: 在線切換時歉胶,自動鎖原主庫,VIP自動切換



腳本切換

vim /usr/local/bin/master_ip_online_change

my $vip = "10.0.0.55/24";

my $key = "1";

my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";

my $ssh_stop_vip = "/sbin/ifconfig ens33:$key $vip down";

my $ssh_Bcast_arp= "/sbin/arping -I ens33 -c 3 -A 10.0.0.55";

修改MHA配置文件

vim /etc/mha/app1.cnf

master_ip_online_change_script=/usr/local/bin/master_ip_online_change

停 MHA

[root@db03 bin]# masterha_stop? --conf=/etc/mha/app1.cnf

檢查repl

[root@db03 bin]# masterha_check_repl? --conf=/etc/mha/app1.cnf

在線切換

masterha_master_switch? --conf=/etc/mha/app1.cnf --master_state=alive --new_master_host=10.0.0.51 --orig_master_is_new_slave --running_updates_limit=10000

重構(gòu)binlogserver

[root@db03 bin]# ps -ef |grep mysqlbinlog

root? ? ? 28144? 16272? 0 17:50 pts/1? ? 00:00:00 mysqlbinlog -R --host=10.0.0.52 --user=mha --password=x x --raw --stop-never mysql-bin.000005

root? ? ? 28529? 16272? 0 18:03 pts/1? ? 00:00:00 grep --color=auto mysqlbinlog

[root@db03 bin]# kill -9 28144

[root@db03 bin]# cd /data/binlog_server/

[root@db03 binlog_server]# ll

total 4

-rw-r----- 1 root root 194 Apr? 1 17:50 mysql-bin.000005

[root@db03 binlog_server]# rm -rf *

[root@db03 binlog_server]# mysqlbinlog? -R --host=10.0.0.51 --user=mha --password=mha --raw? --stop-never mysql-bin.000009 &

[1] 28534

啟動MHA

[root@db03 bin]# nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover? < /dev/null> /var/log/mha/app1/manager.log 2>&1 &

[root@db03 binlog_server]# masterha_check_status? --conf=/etc/mha/app1.cnf

app1 (pid:28535) is running(0:PING_OK), master:10.0.0.51

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辫塌,一起剝皮案震驚了整個濱河市漏策,隨后出現(xiàn)的幾起案子臼氨,更是在濱河造成了極大的恐慌,老刑警劉巖感耙,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件持隧,死亡現(xiàn)場離奇詭異舆蝴,居然都是意外死亡题诵,警方通過查閱死者的電腦和手機层皱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來草冈,“玉大人瓮增,你說我怎么就攤上這事”僚埽” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵谬运,是天一觀的道長垦藏。 經(jīng)常有香客問我,道長轰驳,這世上最難降的妖魔是什么弟灼? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮袜爪,結(jié)果婚禮上蠕趁,老公的妹妹穿的比我還像新娘辛馆。我一直安慰自己,他們只是感情好昙篙,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布苔可。 她就那樣靜靜地躺著,像睡著了一般焚辅。 火紅的嫁衣襯著肌膚如雪苟鸯。 梳的紋絲不亂的頭發(fā)上棚点,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機與錄音砌梆,去河邊找鬼贬循。 笑死,一個胖子當(dāng)著我的面吹牛杖虾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忱反,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼滤愕,長吁一口氣:“原來是場噩夢啊……” “哼怜校!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起魂贬,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤裙顽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后键科,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漩怎,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年饭玲,在試婚紗的時候發(fā)現(xiàn)自己被綠了叁执。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矮冬。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡次哈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硝拧,到底是詐尸還是另有隱情葛假,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布抱究,位于F島的核電站带斑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勋磕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一苦银、第九天 我趴在偏房一處隱蔽的房頂上張望赶站。 院中可真熱鬧,春花似錦贝椿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夷都,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囤官,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工肝陪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刑顺,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓狼讨,卻偏偏與公主長得像柒竞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子朽基,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第1章 MySQL高可用介紹 1.1 企業(yè)高可用評估標(biāo)準(zhǔn) 評估標(biāo)準(zhǔn)是 全年無故障率指標(biāo): 3個9 99.9%...
    張新雨有點胖噢閱讀 972評論 0 1
  • MySQL MHA 架構(gòu)介紹:MHA由兩部分組成MHA Manager(管理節(jié)點)和MHA Node(數(shù)據(jù)節(jié)點)稼虎,...
    XuDongTian閱讀 874評論 0 3
  • 一渡蜻、配置MHA 1.1配置關(guān)鍵程序軟連接 ln -s /application/mysql/bin/mysqlbi...
    不知道就閱讀 727評論 0 0
  • 在之前的博客中计济,介紹了mysql的主從模型以及深層次的mysql的讀寫分離插件——ProxySQL,讓我們可以很大...
    4a873e424089閱讀 1,102評論 0 0
  • 這幾天睡眠太好了学密,所以今晚失眠了传藏。 剛剛幫朋友完成一個文案的策劃,認(rèn)真思考并給朋友一個答復(fù)之后毯侦,躺在床上翻來覆去睡...
    靜靜的凌河閱讀 201評論 2 3