广告
返回顶部
首页 > 资讯 > 数据库 >MHA常用脚本简介
  • 512
分享到

MHA常用脚本简介

2024-04-02 19:04:59 512人浏览 独家记忆
摘要

master_ip_failover 常见的HA环境下,大多是情况会给master分配一个虚拟IP,如果master宕机,HA软件像一个Pacemaker将虚拟IP转移到备用的master上.

master_ip_failover

常见的HA环境下,大多是情况会给master分配一个虚拟IP,如果master宕机,HA软件像一个Pacemaker将虚拟IP转移到备用的master上.

另外一种常见的方法就是创建一个全局目录数据库,包含所有应用和writer/reader ip地址.例如{app_master1,192.168.0.1},{app_master2,192.168.0.2}...,代替使用虚拟IP,这种情况,你需要在master宕机的时候更新目录数据库.

两种方法都有好的或者不好的地方,MHA不强制要求使用哪一种,但是提供了master_ip_failover_script参数来完成此目的.换句话说,你需要写一个脚本来调整应用服务连接到新的master,然后定义master_ip_failover_script的参数,下面是一个实例:

 master_ip_failover_script= /usr/local/sample/bin/master_ip_failover

你可以从(MHA Manager package)/samples/scripts/master_ip_failover找到一个简单的脚本.这个脚本在manager的tarball和GitHub branch中才包含.

MHA manager会调用master_ip_failover_script三次,第一次,在开始master monitor之前调用(目的是检查脚本是否可用),第二次是在调用shutdown_script脚本前调用,第三次是在new master应用完所有的差异日志以后,MHA manager会传递给脚本如下参数.(你不用在配置文件中指明这些参数)


power_manager (防止脑裂)

你可能需要强制关闭master服务器,避免他再次提供服务,这对于避免脑裂很重要.下面是一个实例:

  shutdown_script= /usr/local/sample/bin/power_manager

你可以从(MHA Manager package)/samples/scripts/power_manager找到一个简单的脚本.这个脚本在manager的tarball和gitHUb branch中才包含.

在调用shutdown_script脚本之前,MHA manager内部会通过ssh尝试连接到Mysql master,如果ssh可以连接(意思就是OS是存活的,但是mysqld没有运行),MHAmanager就会传递下面的参数:

--command=stopssh (这个意思就是指停止服务,不会关机)

--ssh_user=(ssh username so that you can connect to the master)

--host=(master's hostname)

--ip=(master's ip address)

--port=(master's port number)

--pid_file=(master's pid file)

如果master主机的ssh不能连接,那么MHA会使用如下参数:

--command=stop (这个会通过fence设备关掉电源)

--host=(master's hostname)

--ip=(master's ip address)

这个脚本的大概功能如下,如果--command=stopssh被调用,脚本会使用killall -9 杀掉目标服务器上所有的mysqld_safe服务.如果--pid_file被设置,脚本尝试kill指定的进程.如果脚本执行成功,那么脚本会退出返回状态10.如果退出状态为10,MHA manager后面会通过ssh连接到master,获取需要的binary log.如果脚本通过ssh连接到服务器失败,那么就会传递--command=stop参数,这个参数尝试关闭机器的电源,关闭电源依赖于H/W.HP(ILO),DELL(DRAC).如果power off成功,脚本会然会状态0,其他情况会返回状态1.当返回状态是0的时候MHA manager 开始failover.如果返回状态不是0或者10,那么MHA manager会意外终止.这个参数默认是空,所以MHA manager不会调用任何脚本.

另外,MHA manager在启动monitoring之前调用shutdown_script.这时候会传递下面的参数.目的是检测脚本是否可用,如果发现错误,你可以提前知道.

--command=status

--host=(master's hostname)

--ip=(master's ip address)


send_report

你希望当failover发生以后可以发送一个报告(例如email),report_script可以达到这个目的,MHA manager传递下面的参数.

--orig_master_host=(dead master's hostname)

--new_master_host=(new master's hostname)

--new_slave_hosts=(new slaves' hostnames, delimited by commas)

--subject=(mail subject)

--body=(body)

默认这个参数是空的,所以MHA manager不调用任何脚本.

你可以从(MHA Manager package)/samples/scripts/send_report找到一个简单的脚本.这个脚本在manager的tarball和GitHUb branch中才包含.


master_ip_online_change

这是几个简单版本的master_ip_failover_script参数,但是master failover命令并不调用它.master online change命令会调用它.(masterha_master_switch --master_state=alive),传递以下参数:

Current master write freezing phase

--command=stop or stopssh

--orig_master_host=(current master's hostname)

--orig_master_ip=(current master's ip address)

--orig_master_port=(current master's port number)

--orig_master_user=(current master's user)

--orig_master_password=(current master's passWord)

--orig_master_ssh_user=(from 0.56, current master's ssh user)

--orig_master_is_new_slave=(from 0.56, notifying whether the orig master will be new slave or not)

New master granting write phase

--command=start

--orig_master_host=(orig master's hostname)

--orig_master_ip=(orig master's ip address)

--orig_master_port=(orig master's port number)

--new_master_host=(new master's hostname)

--new_master_ip=(new master's ip address)

--new_master_port(new master's port number)

--new_master_user=(new master's user)

--new_master_password=(new master's password)

--new_master_ssh_user=(from 0.56, new master's ssh user)

MHA在当前的master write freezing阶段后执行FluaSH TABLES WITH READ LOCK, 在new mastergranting write阶段你可以执行一些类似master_ip_failover_script的操作.比如创建一个有写入权限的用户,执行SET GLOBAL read_only=0,更新目录数据库等.如果你的脚本退出返回状态不是1或者10,那么MHA manager将会意外终止,停止master switch.

这个参数默认为空,所以MHA manager不做任何调用.

你可以从(MHA Manager package)/samples/scripts/master_ip_online_change找到一个简单的脚本.这个脚本在manager的tarball和GitHUb branch中才包含.

您可能感兴趣的文档:

--结束END--

本文标题: MHA常用脚本简介

本文链接: https://www.lsjlt.com/news/48338.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MHA常用脚本简介
    master_ip_failover 常见的HA环境下,大多是情况会给master分配一个虚拟IP,如果master宕机,HA软件像一个Pacemaker将虚拟IP转移到备用的master上. ...
    99+
    2022-10-18
  • shell脚本命令行参数简介
    之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互。bash shell提供了命令行参数添加在命令后面的数据值)、命令行选项修改命令行为的单字符值)和直接读取键盘输入。 1、命令行参数...
    99+
    2022-06-04
    命令行 脚本 参数
  • MHA如何实现VIP切换用到脚本
    小编给大家分享一下MHA如何实现VIP切换用到脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在MHA Manager端配置中...
    99+
    2022-10-18
  • 非常简单的Shell菜单脚本
    本文给大家分享一个自己简单编写的Shell菜单脚本,傻瓜式的人机交互,人人都可以操作linux。 #!/bin/sh #Shell菜单演示 function menu () { cat << EOF ...
    99+
    2022-06-04
    Shell 菜单 脚本
  • 简介Lua脚本与Redis数据库的结合使用
    可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧? 这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言。 Hello, Lua! 我们的第一个Redis Lua ...
    99+
    2022-06-04
    脚本 数据库 简介
  • MySQL初始化脚本mysql_install_db使用简介及选项参数
    mysql_install_db是一个默认放在.../mysql/scripts的一个初始化脚本。 该脚本可以在任何装有perl的操作系统上被使用,在5.6.8之前的版本,该脚本是一个shell脚本,并只...
    99+
    2022-10-18
  • MySQL常用脚本
    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给...
    99+
    2023-10-18
    adb android MySQL oracle sqlserver sql
  • PostgreSQL 常用脚本
    数据定义 数据库 -- 创建数据库 -- database_name,数据库名称 -- database_user,用户名 CREATE DATABASE database_name WITH OWNER = database_...
    99+
    2015-03-18
    PostgreSQL 常用脚本
  • Linux 常用脚本
    以下是几个 Linux 常用脚本示例: 自动备份脚本 这个脚本用于定期备份指定目录中的文件,并将备份文件保存到另一个目录中。 #!/bin/bashbackup_dir="/home/user/backup/"source_dir="/ho...
    99+
    2023-08-19
    linux 运维 服务器
  • KVM常用命令简介
    Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少...
    99+
    2023-06-04
  • C++常用语句简介
    目录1、声明变量2、赋值语句3、cin、cout语句4、库函数5、自定义函数1、声明变量 在C++当中所有的变量都需要声明,如: int wordCnt; 我们声明了一个...
    99+
    2022-11-12
  • ORACLE 常用脚本(3)
    用户的管理一、ORACLE的安全域 1、TABLESPACE QUOTAS:表空间的使用定额 2、DEFAULT TABLESPACE:默认表空间 3、TEMPORARY TABLESPACE:指定临时表空间。 4、ACCOUNT LOCK...
    99+
    2023-01-31
    脚本 常用 ORACLE
  • zookeeper:简介及常用命令
    目录 一、Zookeeper简介 二、Zookeeper服务端常用命令 1、启动ZooKeeper服务 2、查看ZooKeeper服务状态 3、停止ZooKeeper服务 4、重启ZooKeeper服务 三、Zookeeper客户端常用命...
    99+
    2023-10-03
    java-zookeeper zookeeper 大数据
  • Conda简介及常用指令
    目录 一. Conda简介 二. Conda常用指令 1. 虚拟环境管理 2. 模块/包管理 一. Conda简介 Conda 是一个开源的包管理系统和环境管理系统,可在 Windows、macOS 和 Linux 上运行。Conda...
    99+
    2023-10-24
    python conda 开发语言 深度学习
  • 50个常用Python脚本
    50个常用Python脚本的代码示例: 复制文件和目录 import shutilshutil.copy2('source_file', 'destination')shutil.copytree('...
    99+
    2023-09-01
    python excel 开发语言
  • vue3常用的API使用简介
    目录生命周期的变更reactiveref我们在vue2.x中获取元素标签是用 ref ,vue3.x我们要获取元素标签怎么办呢?toReftoRefsshallowReactives...
    99+
    2022-11-11
  • python神经网络TensorFlow简介常用基本操作教程
    目录其它一些主流的深度学习工具框架对比变量:创建、初始化、保存和加载- 添加神经层- loss- 创建- 初始化- 由另一个变量初始化要将深度学习更快且更便捷地应用于新的问题中,选择...
    99+
    2022-11-12
  • 【脚本】python中wmi介绍和使用
    一:WMI基础知识===================================================================WMI 最初于1998年作为一个附加组件与 Windows NT 4.0 Servic...
    99+
    2023-01-31
    脚本 python wmi
  • MySQL常用字符函数简介
    <html> <body> <h2>MySQL常用字符函数简介</h2> <table>     <...
    99+
    2022-10-18
  • Oracle有什么常用脚本
    这篇文章主要讲解了“Oracle有什么常用脚本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle有什么常用脚本”吧!1.linux 启动数据库脚本 ...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作