zhy2_rehat6_mysql04 - MHA_故障演示与切换.txt
export LANG=en_US
环境:------------------------------------------
机器 VPN ip linux 账号/密码
manager1 172.28.20.130 10.1.1.10
mysql1-z(主) 172.28.20.132 10.1.1.12
mysql1-c(从) 172.28.20.134 10.1.1.14
mysql1-b(备) 172.28.20.136 10.1.1.16
================================================
>>>>1. 在 10.1.1.12 上, 杀掉主库mysql进程,模拟主库发生故障,进行自动failover操作。
[root@10.1.1.12 ~]# pkill -9 mysqld
查看MHA切换日志,了解整个切换过程,在10.1.1.10上查看日志:
[root@192.168.0.20 ~]# cat /var/log/masterha/app1/manager.log
>>>>2.在 10.1.1.14 上:从信息显示为空了。
[root@DB-mysql1-c ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:50:56:b7:2e:ce brd ff:ff:ff:ff:ff:ff
inet 10.1.1.14/24 brd 10.1.1.255 scope global eth0
inet 10.1.1.20/24 brd 10.1.1.255 scope global secondary eth0:1
mysql> show slave status\G
Empty set (0.00 sec)
在 10.1.1.16 上:从信息显示为
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.1.1.14
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql_bin.000003
Read_Master_Log_Pos: 3549
Relay_Log_File: DB-mysql1-b-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql_bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
===============================================================================
>>>>3.cd /var/log/masterha/app1 目录下清除app1.failover.complete 这个文件
[root@DB-manger1 app1]# cd /var/log/masterha/app1
/var/log/masterha/app1
[root@DB-manger1 app1]# rm -rf app1.failover.complete
>>>>4.备主节点需要配置
mysql> show variables like '%read_only%';
mysql>set global read_only=on;
[root@DB-manger1 app1]# vi /etc/masterha/app1.cnf
会发现少一个,添加主1:
[server1]
hostname=10.1.1.12
candidate_master=1
port=3306
在 10.1.1.12 上:---------------
[root@DB-mysql1-z ~]# service mysqld start
[root@DB-mysql1-z ~]# service mysqld status
netstat -nutlp | grep 3306
ps -ef |grep mysql
mysql -uroot -proot
两台slave服务器设置read_only(从库对外提供读服务,只所以没有写进配置文件,是因为随时slave会提升为master)
在 10.1.1.14 上:---------------
mysql> show master status\G
*************************** 1. row ***************************
File: mysql_bin.000003
Position: 3549
Binlog_Do_DB:
Binlog_Ignore_DB: information_schema,performance_schema,mysql,mysql
Executed_Gtid_Set:
1 row in set (0.00 sec)
mysql> show variables like '%relay_log%';
mysql> set global read_only=1
mysql> show variables like '%read_only%';
在 10.1.1.12 上:---------------
四.修复宕机的Master
通常情况下自动切换以后,原master可能已经废弃掉,待原master主机修复后,如果数据完整的情况下,可能想把原来master重新作为新主库的slave,这时我们可以借助当时自动切换时刻的MHA日志来完成对原master的修复。下面是提取相关日志的命令:
然后再执行主从:
CHANGE MASTER TO
MASTER_HOST='10.1.1.12',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql_bin.000005',
MASTER_LOG_POS=1871;
CHANGE MASTER TO
MASTER_HOST='10.1.1.14',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql_bin.000004',
MASTER_LOG_POS=154,
MASTER_USER='repl',
MASTER_PASSWORD='123456';
开启slave(10.1.1.12)上的IO线程,追赶落后于master的binlog。
mysql> start salve; -----------期间丢失的数据就回来了。
mysql> show variables like '%relay_log%';
relay_log_purge | ON
此时10.1.1.12 ,设置定期清理relay脚本(slave服务器),请自行查看搭建手册txt
在 10.1.1.16 上:---------------
mysql> show variables like '%relay_log%';
mysql> set global relay_log_purge=1;
mysql> show variables like '%read_only%';
========================================================
>>>>5.检查SSH配置
检查MHA Manger到所有MHA Node的SSH连接状态:
[root@DB-manger1 app1]# masterha_check_ssh --conf=/etc/masterha/app1.cnf
必须,看见各个节点ssh验证都是ok的~!!!
通过masterha_check_repl脚本查看整个集群的状态
# 开启slave(10.1.1.12)上的IO线程,追赶落后于master的binlog。
# mysql> start slave io_thread;
# mysql> reset slave all; --------------清楚主库的(从配置)
[root@DB-manger1 app1]# masterha_check_repl --conf=/etc/masterha/app1.cnf
通过master_check_status脚本查看Manager的状态:
[root@DB-manger1 app1]# masterha_check_status --conf=/etc/masterha/app1.cnf
开启MHA Manager监控(注意:是一行命令,全部复制,注意不要回车)!!
[root@DB-manger1 app1]# nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &
关闭MHA Manage监控
[root@DB-manger1 app1]# masterha_stop --conf=/etc/masterha/app1.cnf
查看日志:
[root@DB-manger1 app1]# tail -f /var/log/messages
[root@DB-manger1 app1]# tail -n20 /var/log/masterha/app1/manager.log
查看VIP 切换脚本:
vi /usr/local/bin/master_ip_failover
-------------------------
测试:
在 10.1.1.14 上:---------------
mysql> create database bai2;
Query OK, 1 row affected (0.01 sec)
mysql> use bai2;
Database changed
mysql> create table t2(a int);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t2 values(1);
Query OK, 1 row affected (0.01 sec)
mysql> insert into t2 values(12);
Query OK, 1 row affected (0.00 sec)
mysql> insert into t2 values(123);
Query OK, 1 row affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t2;
+------+
| a |
+------+
| 1 |
| 12 |
| 123 |
+------+
3 rows in set (0.00 sec)
在 10.1.1.16 上:---------------
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bai2 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
mysql> use bai2;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from t2;
+------+
| a |
+------+
| 1 |
| 12 |
| 123 |
+------+
3 rows in set (0.00 sec)
mysql>
zhy2_rehat6_mysql04 - MHA_故障演示与切换.txt的更多相关文章
- ProxySQL+MGR实现读写分离和主节点故障无感知切换 - 完整操作记录
前面的文章介绍了ProxySQL用法,这里说下ProxySQL中间件针对Mysql组复制模式实现读写分离以及主节点故障时能够自动切换到新的主节点,而应用对此过程无感知的功能.Mysql组复制(MGR) ...
- keepalived weight正负值问题(实现主服务器nginx故障后迅速切换到备服务器)
有两台负载均衡,lb01,lb02. lb02, priority值为100 编辑keepalived配置文件 vim /etc/keepalived/keepalived.conf ! Con ...
- 执行SQL查询导致磁盘耗尽故障演示
a fellow in IMG wechat group 2 met an error about running out of disk space when using MySQL ...
- redis主从切换的集群管理
集群配置最少需要三台机器,那么我就三台虚拟机,三台虚拟机分别安装同样的redis的环境ip分别:192.168.9.17 (redis sentinel 集群监控)192.168.9.18 (redi ...
- Mycat读写分离、主从切换、分库分表的操作记录
系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...
- redis 主从备份自动切换+java代码实现类
转载:http://blog.csdn.net/qq_23430789/article/details/52185706 目录(?)[-] redis-0sentinel实例之间的通讯端口 maste ...
- 云计算之路-阿里云上:针对 docker swarm 故障的部署调整以及应急措施
针对这周 docker swarm 集群的频繁故障(详见故障一 .故障二.故障三),我们今天对 docker swarm 集群的部署进行了如下调整. 将 docker engine 由 “17.12 ...
- c# txt文件的读取和写入
我们在工程实践中经常要处理传感器采集的数据,有时候要把这些数据记录下来,有时候也需要把记录下来的数据读取到项目中.接下来我们用C#演示如何对txt文件进行读写操作.我们要用到StreamReader ...
- sql server 高可用故障转移(5)
测试故障转移群集报告 在SQL-CL01(hsr 50)进行故障转移群集的创建,如图下图所示,在SQL-CL01和SQL-CL02的“服务器管理”中右键点击“功能”,选择“添加功能 勾选故障转移群集 ...
随机推荐
- Java中的等待唤醒机制—至少50%的工程师还没掌握!
这是一篇走心的填坑笔记,自学Java的几年总是在不断学习新的技术,一路走来发现自己踩坑无数,而填上的坑却屈指可数.突然发现,有时候真的不是几年工作经验的问题,有些东西即使工作十年,没有用心去学习过也不 ...
- CSU OJ2151 集训难度
小L正在组织acm暑假集训,但众所周知,暑假集训的萌新中有OI神犇,也有暑假才开始学算法的萌新,如果统一集训的难度,无法很好地让萌新们得到训练,所以小L想了一个办法,根据每次测试的情况,改变萌新们的集 ...
- 【CuteJavaScript】GraphQL真香入门教程
看完复联四,我整理了这份 GraphQL 入门教程,哈哈真香... 欢迎关注我的 个人主页 && 个人博客 && 个人知识库 && 微信公众号" ...
- Python流程控制之分支结构
目录 if/else结构 多重if结构 嵌套if结构 练习 if/else结构 if如果,else否则 # java if(){ }else{ } # python if 条件: 语句 else: 语 ...
- vscode代码自动补全失效
前段时间,朋友说自己的vscode突然出现了代码不能自动补全的问题(主要是js,其他语言也可以参考) 症状表现为,刚打开vscode有自动补全,过了一会,突然就没了,反反复复 解决过程也是相当坎坷了 ...
- django----中使用事务 数据库的三大范式
目录 orm中的事务操作 ⑴ 原子性(Atomicity) ⑵ 一致性(Consistency) ⑶ 隔离性(Isolation) ⑷ 持久性(Durability) django中使用事务 数据库三 ...
- 【译】在React中实现条件渲染的7种方法
原文地址:https://scotch.io/tutorials/7-ways-to-implement-conditional-rendering-in-react-applications 借助R ...
- 《Java知识应用》Java Json说明和使用(fastjson)
工具包下载:链接: https://pan.baidu.com/s/1dn5uNwiJ1ICkbPknlMmkHQ 提取码: ayzn 复制这段内容后打开百度网盘手机App,操作更方便哦 1.JSON ...
- ActiveMQ消息队列从入门到实践(4)—使用Spring JMS收发消息
Java消息服务(Java Message Service ,JMS)是一个Java标准,定义了使用消息代理的通用API .在JMS出现之前,每个消息代理都有私有的API,这就使得不同代理之间的消息代 ...
- 程序员offer沟通的4个基本原则
常柱 架构未来 你需要就一份新工作进行沟通时:比如你的薪水.福利,或者我个人最喜欢的每周工作时间缩短等,当公司问你“你想要多少?”或者“这是我们的报价,你说呢?” 最后关于薪资的谈话可能是最伤脑筋 ...