Mysql 高可用之MHA安装配置

MHA基础架构规划和实施

主库宕机处理过程

1. 监控节点 (通过配置文件获取所有节点信息)

  系统,网络,SSH连接性

  主从状态,重点是主库

2. 选主

(1) 如果判断从库(position或者GTID),数据有差异,最接近于Master的slave,成为备选主

(2) 如果判断从库(position或者GTID),数据一致,按照配置文件顺序,选主.

(3) 如果设定有权重(candidate_master=1),按照权重强制指定备选主.

    1. 默认情况下如果一个slave落后master 100M的relay logs的话,即使有权重,也会失效.

    2. 如果check_repl_delay=0的化,即使落后很多日志,也强制选择其为备选主

3. 数据补偿

(1) 当SSH能连接,从库对比主库GTID 或者position号,立即将二进制日志保存至各个从节点并且应用(save_binary_logs )

(2) 当SSH不能连接, 对比从库之间的relaylog的差异(apply_diff_relay_logs)

4. Failover

将备选主进行身份切换,对外提供服务

其余从库和新主库确认新的主从关系

5. 应用透明(VIP)

6. 故障切换通知(send_reprt)

7. 二次数据补偿(binlog_server)

8. 自愈自治(待开发...)


Manager工具包主要包括以下几个工具:

masterha_manger            启动MHA

masterha_check_ssh      检查MHA的SSH配置状况

masterha_check_repl        检查MySQL复制状况

masterha_master_monitor    检测master是否宕机

masterha_check_status      检测当前MHA运行状态

masterha_master_switch  控制故障转移(自动或者手动)

masterha_conf_host      添加或删除配置的server信息

Node工具包主要包括以下几个工具:

这些工具通常由MHA Manager的脚本触发,无需人为操作

save_binary_logs            保存和复制master的二进制日志

apply_diff_relay_logs      识别差异的中继日志事件并将其差异的事件应用于其他的

purge_relay_logs            清除中继日志(不会阻塞SQL线程)


1.1规划

主库

db01  node 

从库

db02 node 

db03  node  manager


1.2 准备环境(1主2从GTID,详情见mysql GTID复制详情)

1.3 配置关键程序软连接(所有节点)

ln  -s /usr/local/database/mysql/bin/mysqlbinlog   /usr/bin/mysqlbinlog 

ln  -s /usr/local/database/mysql/bin/mysql  /usr/bin/mysql

1.4 配置各节点互信(密钥对)

later01:

rm -rf /root/.ssh

ssh-keygen 

cd  /root/.ssh/

mv id_rsa.pub authorized_keys

scp -r /root/.ssh/ 139.129.93.203:/root

scp -r /root/.ssh/ 39.101.204.8:/root

验证:

ssh 139.129.93.203 date 

ssh 39.101.204.8 date 

ssh 39.101.199.159 date 


later03:

rm -rf /root/.ssh/*

ssh-keygen 

cd  /root/.ssh/

mv id_rsa.pub authorized_keys

scp -r /root/.ssh/ 39.101.199.159:/root

scp -r /root/.ssh/ 139.129.93.203:/root

验证:

ssh 139.129.93.203 date 

ssh 39.101.204.8 date

ssh 39.101.199.159 date 


later02:

rm -rf /root/.ssh

ssh-keygen 

cd  /root/.ssh/

mv id_rsa.pub authorized_keys

scp -r /root/.ssh/ 39.101.199.159:/root

scp -r /root/.ssh/ 39.101.204.8:/root

验证:

ssh 139.129.93.203 date 

ssh 39.101.204.8 date

ssh 39.101.199.159 date 


1.5安装软件

yum install perl-DBD-MySQL -y 

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

在db01主库中创建mha需要的用户

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

1.6 Manage软件的安装(db03)

yum install -y perl-Config-Tiny  

yum install -y epel-release 

yum install -y perl-Log-Dispatch  

yum install -y perl-Parallel-ForkManager   

yum install -y perl-Time-HiRes

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


创建配置文件目录[db03]

 mkdir -p /etc/mha

创建日志目录

 mkdir -p /var/log/mha/app1

编辑mha配置文件vim /etc/mha/app1.cnf

cat >/etc/mha/app1.cnf <<EOF

[server default]

manager_log=/var/log/mha/app1/manager  #日志信息

 manager_workdir=/var/log/mha/app1  #工作目录

 master_binlog_dir=/binlog/3306   #主库binlog位置点信息

 user=mha 

 password=mha 

 ping_interval=2

repl_password=123

repl_user=repl

ssh_user=root

[server1]

hostname=39.101.199.159

port=3306

[server2]

hostname=139.129.93.203 

port=3306

[server3]

hostname=39.101.204.8

port=3306

EOF 

1.7 状态检查(db03)

masterha_check_ssh --conf=/etc/mha/app1.cnf  --ssh互信检查

masterha_check_repl --conf=/etc/mha/app1.cnf  --主从检查

出现报错?

[error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln492]  Server 39.101.204.8(39.101.204.8:3306) is dead, but must be alive! Check server settings.

解决?

检查该从库是否启动? 已启动

检查该从库状态是否正常?正常

难道是因为从库和manage节点是一台服务器引起的?

查资料:检查防火墙是否关闭

1.  systemctl status firewalld   为关闭状态

2.检查selinux  

getenforce   为永久关闭状态 

因为这个是买的阿里云服务器:所以需要检查阿里云云服务安全组:

发现没有对外开放3306端口  

通过设置开放3306端口解决此问题.

1.8 开启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 &

1.9 查看MHA的状态 

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

[root@later03/usr/local/bin]# masterha_check_status --conf=/etc/mha/app1.cnf

app1 (pid:26779) is running(0:PING_OK), master:39.101.199.159

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容