原题目:白屏化背后,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卡塔尔(قطر‎(TWTLX570.US卡塔尔集团)开采,是生龙活虎套精美的当做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基本不要求报到服务器去安插和操作数据。从2016年到前天,大家管理的数据库实例大概翻了3倍,可是DBA人数基本未有变化,这两天是4个DBA维护了约1000+的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这种幼功服务的可用性也就愈加高,在OPPO业务对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已不再使用那个工具卡塔尔(英语:State of Qatar)。
  • 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在超过150个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

发表评论

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