原题目:白屏化背后,DBA应有的数据库自动化建设思路

图片 1

小编介绍茹作军,曾供职笔者查看运维程序猿、1号店MySQL
DBA,现就职于平安好先生。Lepus开源数据库监控类别小编(www.lepus.cc)。

图形来源于互联网

作业与能力往往是共同前进的,二零一四年,作者步向平安好先生,在业务飞快上扬的还要,我们的数据库自动化平台也赢得了急迅的建设和进化。

文/Bruce.Liu1

一、背景

文章大纲

  1. MHA简介
    1.1. mha组件介绍
    1.2. 背景和对象
  2. MHA原理
    2.1. MHA专门的学问规律
    2.2. MHA工具介绍
    2.3. 当前高可用方案
    2.4. MHA的优势
  3. MHA最棒实施
    3.1. 背景介绍
    3.2. 安装MySQL实例
    3.3. 部署MySQL复制
    3.4. 部署MHA软件
    3.5. 故障自动切换与在线切换

八年多的刻钟里,我们DBA
Team快捷完成了数据库自动化、白屏化、闭环化、服务化的建设。完毕了JKDB数据库自动化平台(含元数据管理、自动化布署调整种类、监察和控制种类、备份系统、高可用和在线切换、体积趋势分析规划、校验主旨等)、数据库自协助调查询平台、权限申请和审查批准平台、自助改换奉行平台、流程引擎、工单系统、敏感音信探测系统等等。

1.MHA简介

MHA是什么?
MHA是由东瀛Mysql
yoshinorim行家(原就职于DeNA现就职于FaceBook)用Perl写的一套Mysql故障切换方案,来有限帮衬数据库的高可用性,它的功力是能在0-30s之内达成主Mysql故障转移(failover),MHA故障转移能够很好的帮我们缓和从库数据的一致性难点,同一时间最大化挽救故障产生后数据的一致性。
官方网站:https://code.google.com/p/mysql-master-ha/

MHA(Master High
Availability)近些日子在MySQL高可用方面是一个周旋成熟的减轻方案,它由东瀛DeNA公司youshimaton(现就职于推文(Tweet)公司)开荒,是一套精美的作为MySQL高可用性情形下故障切换和中坚进步的高可用软件。在MySQL故障切换进程中,MHA能幸不辱命在0~30秒之内自动完结数据库的故障切换操作,何况在拓宽故障切换的长河中,MHA能在很大程度上保证数据的一致性,以达到确实意义上的高可用。

该软件由两局部组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA
Manager能够单独布署在一台独立的机械上处理多个master-slave集群,也足以配备在一台slave节点上。MHA
Node运营在每台MySQL服务器上,MHA
Manager会定时探测集群中的master节点,当master出现故障时,它能够自行将数据的slave升高为新的master,然后将具备其余的slave重新指向新的master。整个故障转移进度对应用程序完全透明。

在MHA自动故障切换进度中,MHA试图从宕机的主服务器上保存二进制日志,异常的大程度的保证数据的不丢弃,但那并不总是平价的。比如,假诺主服务器硬件故障或不能通过ssh访谈,MHA无法保存二进制日志,只实行故障转移而扬弃了的数额。使用MySQL
5.5的半手拉手复制,能够大大裁减数据遗失的高危害。MHA能够与半联合具名复制结合起来。假如只有三个slave已经接到了的二进制日志,MHA能够将的二进制日志应用于任何具备的slave服务器上,因而得以确认保证全部节点的数码一致性。

在这里之间,除了不时故障和新鲜援助之外,DBA基本没有需求报到服务器去铺排和操作数据。从2014年到明天,大家管理的数据库实例大概翻了3倍,不过DBA人数基本未有成形,近期是4个DBA维护了约一千+的MySQL实例、1500+Redis实例,另外还维护着多少PostgreSQL
/ Oracle / MongoDB / Hbase集群。

1.1.mha组件介绍

  • MHA Manager
    运维一些工具,比如masterha_manager工具达成活动监察和控制MySQL
    Master和兑现master故障切换,另外工具实现手动达成master故障切换、在线mater转移、连接检查等等。二个Manager能够管理多少个master-slave集群

  • MHA Node
    配置在富有运行MySQL的服务器上,无论是master照旧slave。主要功用有四个。
    1.封存二进制日志
    假诺能够访谈故障master,会拷贝master的二进制日志
    2.选择差距中继日志
    从持有最新数据的slave上生成差距中继日志,然后选取差距日志。
    3.免除中继日志
    在不截止SQL线程的意况下删除中继日志

本文就将本着大家DBA
Team实现的数据库自动化平台营造和中间的建设思路做一些回顾介绍,首要分享先前时代条件创设和自动化模型搭建思路方面包车型大巴一对。后续借使我们风野趣,笔者得以进一步深切的牵线一下自动化平台别的方面包车型地铁开始和结果。

1.2.背景和指标

在前期的MySQL架构中最主流就便是MySQL复制的主旨结构,但伴随即间的推迟以致数额的膨大会油可是生转手几类难点。

  • 在此以前几十台DB服务器,人工登录服务器就能够爱护好,也尚无高可用,当master挂了,公告业务将IP切换来slave然后重启也能基本满足工作需求,可是职业急迅发展,实例数不断追加,复制集不断增添,数据库架构两种化,而这种人造维护格局胸中有数大大扩充了DBA职业量,并且效能低下、轻巧失误。

  • DB规模的附加,机器故障、SQL故障、实例故障出现的可能率也加进、还应该有来自业务方的DB退换,比如大表扩张字段、扩张索引、批量刨除数据等丰盛维护操作,当然那个在自然条件下可用选用在线改造,比方动用pt-online-schema-change工具,可是当不满足在线改造标准、也许在线更动复杂的情状下,就供给动用滚动改动的方法,先在相继slave上更换、在线切换后再在master上退换,然后再进行一遍切换还原,而那个切换操作假若全体手工业敲命令来开展理解是不可取的。

  • 趁着客户数的不断增添,业务方对DB这种基础服务的可用性也就一发高,在索爱业务对DB的可用性须求是各类月须要到达多个9,也就象征每一种月的故障时间唯有不到5分钟,从前这种通知工作转移IP重启的秘诀分明是达不到这些供给的。

    在此些背景和供给下,大家供给摆脱手工业操作,须求一套行之有效的MySQL高可用方案和多个神速的高可用平台来支撑DB的神速增加。MySQL高可用平台须求到达的对象有以下几点:

    1.数据一致性保险这么些是最宗旨的同时也是前提,借使主备的多寡的不均等,那么切换就不可能进行,当然这里的一致性也是一个相对的,不过要到位最后一致性。
    2.故障快速切换,当master故障时这里能够是机械故障只怕是实例故障,要有限帮忙工作能在最长时间切换来备用节点,使得业务受影响时间最短。这里也足以指专门的工作例行维护操作,比如前面提到的一点办法也未有利用在线进行DDL的DDL操作,比非常多分表批量的DDL操作,这个操作通过在线切换方式来滚动完毕。
    3.简化日常爱抚,通过高可用平台来机关实现高可用的布置、维护、监察和控制等职分,可以最大程度的解放DBA手动操作,进步普通运行功效。
    4.联结管理,当复制集众多的情形下,可以合併保管高可用实例新闻、实例新闻、监察和控制新闻、切换信息等。
    高可用的安插要对现成的数据库框架结构无影响,要是因为安顿高可用,需求改换或许调节数据库架构则会产生资金扩张。

有关数据库标准化创设

2.MHA原理

二〇一四年,当自家入职公司时,差不离经过了两周的耳闻则诵,简直发掘厂商数据库自动化的影子。

2.1.MHA行事原理

图片 2

image.png

当master现身故障时,通过比较slave之间I/O线程读取masterbinlog的职分,选择最相仿的slave做为latestslave。
另外slave通过与latest slave比较变化差别中继日志。在latest
slave上选择从master保存的binlog,同时将latest
slave进步为master。最后在其余slave上运用相应的歧异中继日志并最初从新的master开始复制。

在MHA完成Master故障切换进程中,MHA
Node会试图访谈故障的master(通过SSH),假设得以访谈(不是硬件故障,比方InnoDB数据文件损坏等),会保留二进制文件,以最大程度保障数据不吐弃。MHA和半一并复制一同行使会大大裁减数据错失的权利险。流程如下:

  • 从宕机崩溃的master保存二进制日志事件(binlog events)。
  • 分辨含有最新更新的slave。
  • 接纳差距的接入日志(relay log)到其余slave。
  • 动用从master保存的二进制日志事件(binlog events)。
  • 提高三个slave为新master并记录binlog file和position。
  • 使任何的slave连接新的master举行理并答复制。
  • 完了切换manager主进程OFFLINE

以此是规范化,标准化是自动化的重大前提。那年,大家那边标准化是做得比较好的,从OS的基准到DB层的基准都具有统一的专门的学业。譬喻OS的操作系统版本、文件系统格式、磁盘挂载点、预装软件、内核参数等等,大家具备MySQL服务器基本都以大同小异的。

2.2.MHA工具介绍

1.Manager工具:

  • masterha_check_ssh : 检查MHA的SSH配置。
  • masterha_check_repl : 检查MySQL复制。
  • masterha_manager : 启动MHA。
  • masterha_check_status : 检查实验当前MHA运维状态。
  • masterha_master_monitor : 监测master是或不是宕机。
  • masterha_master_switch : 调整故障转移(自动或手动)。
  • masterha_conf_host : 增加或删除配置的server信息。

2. Node工具

  • save_binary_logs : 保存和复制master的二进制日志。
  • apply_diff_relay_logs : 识别差距的联网日志事件并选拔于别的slave。
  • filter_mysqlbinlog :
    去除不要求的ROLLBACK事件(MHA已不复利用那么些工具)。
  • purge_relay_logs : 清除中继日志(不会卡住SQL线程)。
    瞩目:Node那些工具平日由MHA Manager的脚本触发,不需求人手操作。

那边大家是如何是好到保持一致的吧?

2.3.当下高可用方案

  • keepalived+mysql复制
    该社团与MHA类似,但keepalived的优势在于无状态组件的故障切换,常用来web前端的故障转移,应用于数据库场景中,最致命的主题材料便是脑裂以往数据乱写的危机,为同盟社推动巨大麻烦。

  • MySQL Cluster
    MySQL
    Cluster真正完毕了高可用,不过选用的是NDB存款和储蓄引擎,况兼SQL节点有单点故障难点。

  • 半联袂复制(5.5+)
    半联合具名复制大大降低了“binlog
    events只存在故障master上”的难题。在交付时,保险起码三个slave(并非具有的)接收到binlog,因而部分slave恐怕未有接受到binlog。

  • PXC
    PXC完成了劳务高可用,数据同步时是出现复制。不过仅扶助InnoDB引擎,全体的表都要有主键。锁冲突、死锁难题相对很多等等难点。

第一是咱们DBA对内部一台服务器经过初阶化设置和优化,举例按数据库的最优政策调节基础参数,分区和挂在磁盘,预装pt-tool
MHA Node Xtrbackup Innotop
oak-tool等数据库常用的管理软件,然后交付给运转同学进行打包镜像,之后有所交付给DBA的服务器都以按此镜像进行配备。那样一来,大家的OS服务器就可怜标准了,相同的时间也预装了大家常用的管理工具。

2.4.MHA的优势

  • 障切换快

    主从复制集群中,只要从库在复制上从未有过延迟,MHA日常能够在数秒内完结故障切换。9-10秒内检查到master故障,能够选择在7-10秒关闭
    master防止止出现裂脑,几分钟内,将分化中继日志(relay
    log)应用到新的master上,由此总的宕机时间平日为10-30秒。恢复生机新的master后,MHA并行的还原别的的slave。固然在有数万台
    slave,也不会影响master的复原时间。
    DeNA在超越1肆十几个MySQL(首要5.0/5.1版本)主从情状下行使了MHA。当mater故障后,MHA在4秒内就成功了故障切换。在守旧的主动/被动集群建设方案中,4秒内到位故障切换是不恐怕的。

  • master故障不会招致数据不雷同
    当 如今的master出现故障是,MHA自动识别slave之间连结日志(relay
    log)的不如,并采用到具备的slave中。那样有着的salve能够保证同步,只要具有的slave处于存活状态。和Semi-
    Synchronous Replication一齐利用,(差十分少)可以保证未有数据错失。

  • 需修改当前的MySQL设置
    MHA的规划的重大尺度之一正是不择手段地总结易用。MHA工作在守旧的MySQL版本5.0和之后版本的主从复制蒙受中。和此外高可用化解措施比,MHA并没有需求改动MySQL的配备境况。MHA适用于异步和半共同的主从复制。
    启航/截至/晋级/降级/安装/卸载MHA无需改换(包扩运行/甘休)MySQL复制。当须求进级MHA到新的本子,不必要截止MySQL,仅仅替换来新本子的MHA,然后重启MHA Manager就好了。
    MHA运转在MySQL
    5.0从头的原生版本上。一些别样的MySQL高可用应用方案供给一定的本子(举例MySQL集群、带全局工作ID的MySQL等等),但并不仅为了
    master的高可用才迁移应用的。在抢先百分之五十动静下,已经配备了相比旧MySQL应用,何况不想单独为了贯彻Master的高可用,花太多的日子迁移到分裂的囤积引擎或更新的前线发行版。MHA职业的牢笼5.0/5.1/5.5的原生版本的MySQL上,所以并无需迁移。

  • 毋庸扩充大气的服务器
    MHA由MHA Manager和MHA Node组成。MHA
    Node运转在急需故障切换/苏醒的MySQL服务器上,因而并无需额外扩张服务器。MHA
    Manager运转在一定的服务器上,因而需求充实一台(完结高可用供给2台),可是MHA
    Manager能够监察和控制大批量(以致上百台)单独的master,由此,并没有必要增添大气的服务器。纵然在一台slave上运转MHA
    Manager也是能够的。综上,实现MHA并没用额外增添大气的劳动。

  • 无质量收缩
    MHA适用与异步或半同台的MySQL复制。监察和控制master时,MHA仅仅是每间距几秒(默许是3秒)发送贰个ping包,并不发送重查询。能够猎取像原生MySQL复制同样快的性质。

  • 适用于任何存款和储蓄引擎
    MHA能够运作在只要MySQL复制运维的积攒引擎上,并不只限制于InnoDB,固然在科学迁移的历史观的MyISAM引擎景况,同样能够应用MHA。

我们的数据库也是有友好的布置专门的学问,比如配置文件原则,除了部分可调参数是变量,别的参数全体施用法则模板;别的像MySQL的装置目录、数据目录、二进制日志目录、临时文件目录都有联合的行业内部,根据分化的实例端口来不一致。

3.MHA精品试行

图片 3

图表来源于网络

理之当然MySQL严苛要产生标准化,在未到位自动化计划从前,是相比艰苦的,困难的不是安排技能,而是法则意识。日常四个商厦都有不菲个DBA共同管理数据库,由于事先的行事习贯大家爱怜安份守己本身的章程来布局数据库,只怕尚未职业配备准则、有法则可是尚未严厉遵从,都以无力回天做到口径的。大家是从一伊始就做了规范法规和自动化计划脚本,所以咱们眼下线上保有数据库的安排都是标准的,为延续自动化平台建设打下了拾贰分好的根基。

3.1.背景介绍

比方说,大家在管理机使用如下命令,则会在相应的IP服务器上成立二个innodb_buffer_pool等于10GB的数据库实例,端口为3306,挂载设备为fioa,版本为MySQL-5.6.28-OS7-x86_64,数据库编码为utf8:

3.1.1.软件参谋文书档案

参照文书档案:
MHA原理:https://code.google.com/p/mysql-master-ha/wiki/HowMHAWorks
MHA原理PPT:http://www.slideshare.net/matsunobu/automated-master-failover
Linux配置代理方法:http://blog.csdn.net/bojie5744/article/details/42148719

软件下载:
Centos Base Yum Repository:
http://mirrors.163.com/.help/CentOS6-Base-163.repo
epel(RHEL 6)Yum
Repository:http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
MySQL5.7 Yum
Repository:https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm
mysql-master-ha(mgr):https://github.com/linyue515/mysql-master-ha/raw/master/mha4mysql-manager-0.57-0.el7.noarch.rpm
mysql-master-ha(node):https://github.com/linyue515/mysql-master-ha/raw/master/mha4mysql-node-0.57-0.el7.noarch.rpm

#pythonInstall_MySQL_Multi.py –ip=xx.xx.xx.xx –port=3306
–mem=10240
–device=/storage/fioa–mysql-version=MySQL-5.6.28-OS7-x86_64
–character=utf8

3.1.2.体系遭逢介绍

图片 4

图表来源于原创

  • 系统版本
    CentOS release 6.7 (Final) x86_64

  • MySQL版本
    mysql-5.7.20.-x86_64(RPM)

  • MHA版本
    mha4mysql-manager-0.57
    mha4mysql-node-0.57

自动化创造的实例依据端口实行标准陈设,如下所示,某台服务器安装了3306、3307、3308四个端口,则配备目录如下所示:

3.1.3.设置系统需求
  • 涉及全数服务器关闭iptables、NetworkManager服务、selinux安全布局

# /etc/init.d/NetworkManager stop
# chkconfig NetworkManager off
# /etc/init.d/iptables stop
# chkconfig iptables off

/etc/selinux/config 改成disable

布局文件路线:

3.2.安装MySQL实例

/etc/my3306.cnf

3.2.1.安装mysql数据库
  • 创建mysql用户

# useradd mysql
# passwd mysql
  • 设置软件

# yum -y install mysql-community-server.x86_64

/etc/my3307.cnf

3.2.2.创办布局文件目录
# mkdir /etc/mysql

/etc/my3308.cnf

3.2.3.开立布局文件
[mysqld]
# GENERAL #
user                           = mysql
port                           = 3389
default_storage_engine         = InnoDB
socket                         = /data1/db3389/my3389.sock
pid_file                       = /data1/db3389/mysql.pid
#read-only =0
tmpdir                  = /data1/tmp
#key_buffer_size                = 128M
max_allowed_packet             = 32M
max_connect_errors             = 1000000
datadir          = /data1/db3389/
log_bin = 2171303389-bin
relay-log=  2171303389-relay-bin
expire_logs_days               = 7
#sync_binlog                    = 0
tmp_table_size                 = 32M
max_heap_table_size            = 32M
max_connections                = 5000
thread_cache_size              = 512
table_definition_cache         = 4096
table_open_cache               = 4096
wait_timeout            = 28800
interactive_timeout     = 28800
transaction-isolation = READ-COMMITTED
binlog-format=row
character-set-server=utf8
skip-name-resolve
back_log=1024
explicit_defaults_for_timestamp=true
server_id=2171303389

# INNODB #
innodb_flush_method            = O_DIRECT
#innodb_data_home_dir = /data1/db3389
innodb_data_file_path = ibdata1:100M:autoextend
#redo log
#innodb_log_group_home_dir=./
innodb_log_files_in_group      = 3
innodb_log_file_size           = 128M
#innodb performance
innodb_flush_log_at_trx_commit = 0
innodb_file_per_table          = 1
innodb_buffer_pool_instances   = 8
innodb_io_capacity             = 2000
innodb_lock_wait_timeout       = 30
binlog_error_action = ABORT_SERVER
innodb_buffer_pool_size        = 128M
innodb_max_dirty_pages_pct=90
innodb_file_format=Barracuda
innodb_support_xa=0
innodb_buffer_pool_dump_at_shutdown = 1
innodb_buffer_pool_load_at_startup = 1
#innodb undo log
innodb_undo_tablespaces=4
innodb_undo_logs=2048
innodb_purge_rseg_truncate_frequency=512
innodb_max_undo_log_size=2G
innodb_undo_log_truncate=1

log_error                      = error.log
#log_queries_not_using_indexes = 1
slow_query_log                 = 1
slow_query_log_file            = slow-queries.log
long_query_time=2
gtid_mode=ON
enforce-gtid-consistency
log-slave-updates
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync_master_info = 10000
slave_sql_verify_checksum=1
skip-slave-start
init-connect='SET NAMES utf8'
character-set-server=utf8
skip-character-set-client-handshake
bind-address=0.0.0.0
skip-external-locking
slave-parallel-workers=6

[mysql5.6]
myisam_recover                 = FORCE,BACKUP

数据库安装路线:

3.2.4.创办授权目录
# mkdir -p /data1/db3389
# mkdir -p /data1/tmp
# chown -R mysql:mysql /data1/db3389
# chown -R mysql:mysql /data1/tmp

/storage/fioa/mysql3306:

3.2.5.初始化MySQL实例
# mysqld --defaults-file=/etc/mysql/my3389.cnf --initialize --user=mysql
# mysql_ssl_rsa_setup 

binlog

3.2.6.启动mysql实例
# mysqld_safe --defaults-file=/etc/mysql/my3389.cnf &
# cat /data1/db3389/error.log | grep temp
# mysql -S /data1/db3389/my3389.sock -p'z&Di4b_oSM*-'
mysql> set password=''; #重置密码为空

data

3.3.部署MySQL复制

mysql-error.log

3.3.1.主库创立复制顾客
mysql> grant replication slave, replication client on *.* to replica@'192.168.217.%' identified by 'mycatDBA';

mysql-tmpdir

3.3.2.主库创设mha客商
mysql> grant all privileges on *.* to mha@'192.168.217.132' identified by 'mysqlDBA';

/storage/fioa/mysql3307:

3.3.3.主库备份数据库
# mysqldump -S /data1/db3389/my3389.sock --single-transaction --master-data=2 --opt -A | gzip >  /data1/tmp/full_3389.tar.gz

binlog

3.3.4.主库传输至从库
# scp /data1/tmp/full_3389.tar.gz 192.168.217.131:/data1/tmp

data

3.3.5.从库恢复生机数据库
# gunzip < /data1/tmp/full_3389.tar.gz | mysql -S /data1/db3389/my3389.sock

只顾:苏醒数据库前,从库最棒reset master;,不然将面世转手错误:
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

mysql-error.log

3.3.6.从库发轫化同步数据
mysql> change master to master_host='192.168.217.130',master_port=3389,master_user='replica',master_password='mycatDBA',master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.03 sec)


mysql> show slave status G
*************************** 1. row ***************************
...... 省略 ......
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
...... 省略 ......

mysql-tmpdir

3.4.部署MHA软件

/storage/fioa/mysql3308:

3.4.1.装置软件
  • epel yum源安装格局

# yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
# #根据MHA角色安装对应的软件包即可
# yum -y --nogpgcheck install mha4mysql-node-0.57-0.el7.noarch.rpm
# yum -y install --nogpgcheck mha4mysql-manager-0.57-0.el7.noarch.rpm
  • 地点安装格局

# yum -y --nogpgcheck install perl-DBD-MySQL*
# yum -y --nogpgcheck install perl-Config-Tiny*
# yum -y --nogpgcheck install perl-Parallel-ForkManager*
# yum -y --nogpgcheck install  perl-MailTools*
# yum -y --nogpgcheck install perl-Email-Date-Format*
# yum -y --nogpgcheck install perl-Mail-Sender*
# yum -y --nogpgcheck install perl-MIME-Types*
# yum -y --nogpgcheck install perl-MIME-Lite*
# yum -y --nogpgcheck install perl-Mail-Sendmail*
# yum -y --nogpgcheck install perl-Log-Dispatch*
# #根据MHA角色安装对应的软件包即可 
# yum -y --nogpgcheck install mha4mysql-node-0.57-0.el7.noarch.rpm
# yum -y install --nogpgcheck mha4mysql-manager-0.57-0.el7.noarch.rpm

binlog

3.4.2.挂在VIP
  • master

# /sbin/ifconfig eth0:1 192.168.217.201 broadcast 192.168.217.255 netmask 255.255.255.0
# /sbin/arping -f -q -c 5 -w 5 -I eth0 -s 192.168.217.201 -U 192.168.217.2

data

3.4.3.配置SSH互信

在现网情形中大概都以明确命令禁绝root远程登录服务器得,所以ssh免密码登录要在mysql顾客下张开布局,那是高居安全角度思考出发。

  • master:

# su - mysql
$ ssh-keygen -t rsa
$ rm -rf ~/.ssh/*
  • slave:

# su - mysql
$ ssh-keygen -t rsa
$ rm -rf ~/.ssh/*
  • manager:

# su - mysql
$ ssh-keygen -t rsa
$ cd ~/.ssh
$ mv id_rsa.pub authorized_keys
$ scp * 192.168.217.130:~/.ssh/
$ scp * 192.168.217.131:~/.ssh/
$ #测试ssh
$ ssh 192.168.217.130 date 
Wed Nov 22 05:48:54 PST 2017
$ ssh 192.168.217.131 date 
Wed Nov 22 05:47:58 PST 2017

mysql-error.log

3.4.4.配置mysql用户sudo权限
  • 加上普通客商登录tty终端权限

# vim /etc/sudoers

#将以下的参数注释,意思就是sudo默认需要tty终端。注释掉就可以在后台执行了。
#Defaults    requiretty
  • 开放普通客商推行sudo命令权限

# cd /etc/sudoers.d/
# vim mysql

User_Alias  MYSQL_USERS = ALL
Runas_Alias MYSQL_RUNAS = root
Cmnd_Alias  MYSQL_CMNDS = ALL
MYSQL_USERS ALL = (MYSQL_RUNAS) NOPASSWD: MYSQL_CMNDS

mysql-tmpdir

3.4.5.创造MHA配置文件
  • 创制布局文件目录

# mkdir /etc/mha
  • 创制MHA配置文件

# cat app3389.cnf 
[server default]
user=mha
password=mysqlDBA
manager_workdir=/data1/mha/masterha/app3389
manager_log=/data1/mha/masterha/app3389/app3389.log
remote_workdir=/data1/mha/masterha/app3389
ssh_user=mysql
repl_user=replica    
repl_password=mycatDBA
ping_interval=3         

secondary_check_script="masterha_secondary_check -s 192.168.1.122 -s 192.168.1.122"
master_ip_failover_script="/etc/mha/master_ip_failover.sh 192.168.1.201 1"
master_ip_online_change_script="/etc/mha/master_ip_online_change.sh 192.168.1.201 1"
shutdown_script="/etc/mha/power_manager"
#report_script="/etc/mha/end_report"

[server1]
hostname=192.168.1.120
port=3389
master_binlog_dir=/data1/db3389
candidate_master=1   
master_pid_file=/data1/db3389/mysql.pid               

[server2]
hostname=192.168.1.121
port=3389
master_binlog_dir=/data1/db3389
candidate_master=1
master_pid_file=/data1/db3389/mysql.pid    

[binlog1]
hostname=192.168.1.122
master_binlog_dir=/data1/mha/binlog/3389
no_master=1
ignore_fail=1

如此那般陈设的数据库到达了标准化的品位,所以大家DBA只要精晓IP和端口,就足以很轻易地知道这几个实例的保有消息,无疑是自动化的喜爱得舍不得放手基础。

3.4.6.上传MHA切换另一边腿本

master_ip_failover.sh
master_ip_online_change.sh
power_manager

静心:脚本内容中要修改网卡名字

my $vip  = shift;
my $interface = 'eth1';
my $key = shift;
  • 上传故障切换另一只脚本并授权

# chmod 755 master_ip_*
# chmod 755 power_manager

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章