• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL 自动故障转移工具--mysqlfailover

MySQL 自动故障转移工具--mysqlfailover

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MySQL,自动故障,移工具等相关知识,希望本文的分享对您有所帮助
mysqlfailover 是mysql utilities工具包中包含的一个重要的高可用命令,用于对主从复制架构进行健康检测以及实现故障自动转移。它会定期按指定的时间间隔探测各节点的健康状态,一旦在捕获到主节点不可用时,将触发故障转移相关动作,自动执行故障切换到当前最佳的从服务器上。同时整个主从架构内的其他从节点将指向新的主节点,自动完成主从拓扑结构更新。

相关知识点热身
基于mysqldump搭建gtid主从
MySQL GTID 错误处理汇总
配置MySQL GTID 主从复制
使用mysqldump导出数据库

一、mysqlfailover特点

    持续监控主从主从拓扑结构健康状况,当主节点不可用时,触发自动故障转移
    支持GTID全局事务标识符,传统主从模式不支持
    支持设置故障转移首选及备选节点,支持投票选举方式选择新的主节点以及仅监测模式(不切换主从)
    支持自定义时间监测间隔
    支持交互模式以及守护进程的模式开启mysqlfailover
    支持在切换前或切换后执行指定的脚本
    支持操作记录到日志不同的粒度以及日志老化

二、mysqlfailover需求

    主从需要开启GTID模式(mysql 应使用5.6.5以上版本)    
    所有的slave端需要配置以下参数,建议主库也添加(切换后主从模式变化)
            report-host
            report-port
            master-info-repository=TABLE
            relay-log-info-repository=TABLE
    权限(mysqlfailover工具检测及切换期间需要,主从都需要)
            SHOW SLAVE STATUS
            SHOW MASTER STATUS
            STOP SLAVE, START SLAVE, WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, CHANGE MASTER TO
            REPLICATE SLAVE
            SUPER, GRANT OPTION, RELOAD, DROP, CREATE, INSERT ,SELECT权限

三、一些重要参数

    --failover-mode(转移模式)
        auto:执行故障自动转移到第一候选人。如果没有从可行的,继续从从列表中找到一个可行的候选者。
          如果没有从被认为是一个可行的候选者,该程序将生成错误并退出。一旦候选者被发现,该程序将进行故障切换到最佳从上。
          该命令测试每个候选从的先决条件。一旦候选从被选中,其他从作为它的从,收集其他从的任何事务交易。该方式,确保候选者是最新的从
        elect:这种模式与aoto一样的,除了如果在指定的候选从列表中没有可行的,不检测剩余的从和产生错误并退出。
        fail: 这种模式会产生一个错误,当主失败后不会进行故障转移。这种模式被用来只进行定期健康监测不进行故障切换。

    --interval
            选项来定义检测主状态和产生健康报告的时间间隔,缺省为15s,最小间隔为5s

    --master=MASTER
            主服务器连接配置
    --slaves=SLAVES
            从服务器连接配置
    --candidates=CANDIDATES
            候选服务器连接配置

            以上3个连接配置值支持是使用下列方式,多个值以逗号分割
            <user>[:<password>]@<host>[:<port>][:<socket>] 
            <login-path>[:<port>][:<socket>]
            <config-path>[<[group]>]    

    --discover-slaves-login=DISCOVER
            基于主服务器用户密码查询当前所有注册到主服务器的从库端
            使用<user>[:<password>] or <login-path>

    --ping=PING  
             Number of ping attempts for detecting downed server.     
        侦测服务器宕机检测,缺省为3s

    --force   override the registration check on master for multiple
          instances of the console monitoring the same master.
        当控制台启动时,主的主机名和端口将被插入一个特殊的表来跟踪记录哪些实例与主联系 
        在启动时,如果行匹配这些值,控制台无法启动。如果使用--force选项,该行将被删除                                  

    --daemon(使用守护进程方式,如未指定,则为交互方式)
            start    启动守护进程。需要--log选项。
            stop     停止守护进程。如果有指定--pidfile选项,该值需要与start指定的一致。
            restart  重新启动守护进程。如果有指定--pidfile选项,该值需要与start指定的一致。
            nodetach 启动守护进程,但是不会从控制台分离进程。需要--log选项。

    --log=<log_file> 
            指定日志文件

    --log-age 
            选项用于指定日志存放天数,默认是7天。旧的日志自动轮滚掉

    --exec-before
            故障转移命令之前执行外部脚本
            脚本的返回码来确定是否成功执行,0表示成功,非0表示失败并返回错误信息

    --exec-after
            故障转移命令之后执行外部脚本
            脚本的返回码来确定是否成功执行,0表示成功,非0表示失败并返回错误信息

    -p, --pedantic        fail if some inconsistencies are found (e.g. errant
                            transactions on slaves).            
            在检查期间如果发现有不一致的情况(从错误的事务或SQL线程错误)阻止故障转移。

四、搭建GTID主从

1、演示环境

# more /etc/redhat-release CentOS release 6.7 (Final)# more /etc/hosts192.168.1.233 node233.edq.com node233  ###用作主节点192.168.1.245 node245.edq.com node245  ###用作从节点Slave1192.168.1.247 node247.edq.com node247  ###用作从节点Slave2# mysql -Vmysql  Ver 14.14 Distrib 5.6.30, for linux-glibc2.5 (x86_64) using  EditLine wrapper# mysqlfailover --versionMySQL Utilities mysqlfailover version 1.6.4 License type: GPLv2

2、主从节点参数配置

======================192.168.1.233 Master========================
[mysql]#prompt= (\u@\h)[\d]>prompt= (\u@192.168.1.233)[\d]>user=rootpassword=pass

[mysqld]sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESbasedir = /usr/local/mysqldatadir = /dataserver_id=233gtid_mode=onenforce_gtid_consistency=on#binloglog_bin=node233-binlog
log-slave-updates=1binlog_format=rowreport_host=192.168.1.233report_port=3306
master-info-repository = TABLE
relay-log-info-repository = TABLE#relay logskip_slave_start=1

======================192.168.1.245 Slave1========================
[mysql]prompt= (\u@192.168.1.245)[\d]>user=rootpassword=pass

[mysqld]sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESbasedir = /usr/local/mysqldatadir = /dataserver_id=245                
gtid_mode=on                 
enforce_gtid_consistency=on  

log_bin=node245-binlog
log-slave-updates=1    
binlog_format=row            
report_host=192.168.1.245report_port=3306
master-info-repository = TABLE
relay-log-info-repository = TABLEskip_slave_start=1     

======================192.168.1.247 Slave2========================
[mysql]prompt= (\u@192.168.1.247)[\d]>user=rootpassword=pass

[mysqld]sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESbasedir = /usr/local/mysqldatadir = /datauser = mysql 

#Author : Leshami#Blog :  http:///server_id=247gtid_mode=onenforce_gtid_consistency=onlog_bin=node247-binlog    
log-slave-updates=1binlog_format=rowreport_host=192.168.1.247report_port=3306
master-info-repository = TABLE
relay-log-info-repository = TABLEskip_slave_start=1

3、开启主从节点

--创建主从复制(repl)及切换账户(failover)
--以下mysql提示符下Master即代表1.233节点执行,Slave1代表1.245上执行,Slave2代表1.247上执行
(root@Master)[mysql]>grant all privileges on *.* to 'failover'@'%' identified by 'pass' with grant option;

(root@Master)[mysql]>grant replication slave on *.* to 'repl'@'%' identified by '123456';

(root@Slave1)[(none)]>grant all privileges on *.* to 'failover'@'%' identified by 'pass' with grant option;

(root@Slave1)[(none)]>grant replication slave on *.* to 'repl'@'%' identified by '123456';

(root@Slave2)[(none)]>grant all privileges on *.* to 'failover'@'%' identified by 'pass' with grant option;

(root@Slave2)[(none)]>grant replication slave on *.* to 'repl'@'%' identified by '123456';

--主节点上执行相应的操作
[root@node233 ~]# mysql -uroot -ppass -e "create database testdb;create database tempdb"[root@node233 ~]# mysql -uroot -ppass -e "create table testdb.repl(id int,ename varchar(50))"[root@node233 ~]# mysql -uroot -ppass -e "insert into testdb.repl values(1,'leshami')"[root@n
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05MySQL Order By Rand()效率分析
  • 2018-12-05数据库清除日志文件(LDF文件过大)
  • 2018-12-05PDO连接数据库及DSN详解
  • 2017-05-11MySql查询时间段的方法
  • 2017-05-11基于MySQL Master Slave同步配置的操作详解
  • 2018-12-05Centos下Mysql安装图文教程_MySQL
  • 2018-12-05sql2005 存储过程分页代码
  • 2017-05-11MYSQL SET类型字段的SQL操作知识介绍
  • 2018-12-05mysql中使用sphinx搜索子域名需注意的问题
  • 2018-12-05Oracle入侵常用操作命令整理

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 一步一步教你创建SQL 2005计划任务应用图解教程
    • 启动数据库报错,ORA-18008: cannot find OUTLN schema
    • Access的平均间隔控件使用
    • 安装SQL2005 29506错误码的解决方案
    • 详解Python如何建立数据库连接及插入数据
    • 详解MySQL数据库优化的八种实现方法分享
    • mysql判断字段是否存在的方法
    • MySQL事务-使用保留点、更改默认的提交行为详解
    • mysql 5.7.19在centos6.5下的安装配置详解
    • mysql命令行还原phpMyAdmin导出的含有中文的SQL文件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有