MHA构建MySQL高可用平台最棒施行澳门新葡金京:,DBA应有的数据库自动化建设思路

澳门新葡金京 4

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

澳门新葡金京 1

我介绍茹作军,曾供职我查看运维程序员、1号店MySQL
DBA,现就职于平安好先生。Lepus开源数据库监察和控制系统小编(www.lepus.cc)。

图片来源于网络

事情与本事往往是共同前进的,201六年,笔者进入平安好先生,在业务迅猛上扬的还要,大家的数据库自动化平台也赚取了迅速的建设和前进。

文/Bruce.Liu1

一、背景

小说大纲

  1. MHA简介
    一.1. mha组件介绍
    壹.贰. 背景和目的
  2. MHA原理
    二.1. MHA职业规律
    2.2. MHA工具介绍
    2.叁. 当前高可用方案
    2.4. MHA的优势
  3. MHA最棒实施
    3.一. 背景介绍
    3.2. 安装MySQL实例
    3.3. 部署MySQL复制
    3.4. 部署MHA软件
    三.伍. 故障自动切换与在线切换

两年多的时间里,我们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高可用方面是1个针锋相对成熟的缓和方案,它由日本DeNA公司youshimaton(现就职于Facebook集团)开荒,是1套精美的作为MySQL高可用性意况下故障切换和骨干进步的高可用软件。在MySQL故障切换进度中,MHA能完成在0~30秒之内自动完毕数据库的故障切换操作,并且在张开故障切换的历程中,MHA能在很大程度上保障数据的1致性,以高达真正含义上的高可用。

该软件由两有的组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA
Manager能够独立布置在1台独立的机械上管住多个master-slave集群,也得以配备在1台slave节点上。MHA
Node运维在每台MySQL服务器上,MHA
Manager会按时探测集群中的master节点,当master出现故障时,它能够自动将数据的slave提高为新的master,然后将享有别的的slave重新指向新的master。整个故障转移进程对应用程序完全透明。

在MHA自动故障切换进度中,MHA试图从宕机的主服务器上保留二进制日志,很大程度的保障数据的不丢掉,但那并不总是实惠的。举个例子,假若主服务器硬件故障或不能通过ssh访问,MHA没法保存贰进制日志,只举行故障转移而丢失了的数码。使用MySQL
伍.⑤的半同台复制,能够大大降低数据丢失的高危机。MHA能够与半协助举行理并答复制结合起来。如若唯有二个slave已经收到了的二进制日志,MHA能够将的2进制日志应用于别的全数的slave服务器上,因而得以确定保障全数节点的数目一致性。

在那期间,除了偶尔故障和差别经常协助之外,DBA基本不需求报到服务器去布署和操作数据。从2016年到现行反革命,大家管理的数据库实例大致翻了叁倍,但是DBA人数基本未有转换,目前是多少个DBA维护了约一千+的MySQL实例、1500+Redis实例,其余还维护着几多PostgreSQL
/ Oracle / MongoDB / Hbase集群。

一.一.mha零件介绍

  • MHA Manager
    运转一些工具,比方masterha_manager工具达成自动监察和控制MySQL
    Master和落到实处master故障切换,其它工具完结手动完成master故障切换、在线mater转移、连接检查等等。八个Manager能够管理七个master-slave集群

  • MHA Node
    安顿在有着运维MySQL的服务器上,无论是master依旧slave。首要成效有多个。
    一.保存二进制日志
    万1能够访问故障master,会拷贝master的二进制日志
    二.运用差别中继日志
    从具备新型数据的slave上变化差别中继日志,然后使用差别日志。
    3.清除中继日志
    在不鸣金收兵SQL线程的情况下删除中继日志

正文就将对准大家DBA
Team完结的数据库自动化平台创设和里面的建设思路做一些简易介绍,首要分享先前时代条件创设和自动化模型搭建思路方面包车型大巴壹部分。后续假如大家有乐趣,笔者可以尤其深切的牵线一下自动化平台其余位置的始末。

1.二.背景和目标

在早期的MySQL架构中最主流就正是MySQL复制的基本结构,但伴随时间的推迟以及数额的膨大会冒出转手几类难点。

  • 起始几10台DB服务器,人工登录服务器就能维护好,也未曾高可用,当master挂了,公告工作将IP切换来slave然后重启也能基本餍足职业供给,可是工作飞快发展,实例数不断加码,复制集不断充实,数据库架构各种化,而那种人造维护方式一目领会大大扩展了DBA专门的职业量,而且效用低下、轻巧失误。

  • DB规模的增大,机器故障、SQL故障、实例故障出现的概率也加进、还有来自业务方的DB更换,比方大表增添字段、扩展索引、批量去除数据等特别维护操作,当然这个在必然规范下可用接纳在线更动,比方选拔pt-online-schema-change工具,可是当不满足在线改造标准、大概在线更动复杂的场馆下,就供给动用滚动改动的法门,先在一一slave上改动、在线切换后再在master上更动,然后再进行二回切换还原,而那几个切换操作倘使全体手工业敲命令来拓展明白是不可取的。

  • 乘势用户数的持续追加,业务方对DB那种基础服务的可用性也就更是高,在BlackBerry业务对DB的可用性须求是每一个月须要落成两个玖,也就代表每种月的故障时间只有不到四分钟,在此以前那种公告业务转移IP重启的法子鲜明是达不到这些须求的。

    在这个背景和需求下,大家须要摆脱手工业操作,须要1套卓有成效的MySQL高可用方案和一个高效的高可用平台来帮衬DB的神速拉长。MySQL高可用平台需求达成的目的有以下几点:

    1.数量1致性保险那些是最大旨的还要也是前提,假使主备的数码的分化样,那么切换就不只怕进展,当然那里的一致性也是多个对峙的,不过要形成最后1致性。
    二.故障飞快切换,当master故障时那里能够是机器故障可能是实例故障,要力保业务能在最长时间切换来备用节点,使得业务受影响时间最短。那里也能够指专门的学业例行维护操作,比方前边提到的黔驴技穷运用在线举行DDL的DDL操作,好多分表批量的DDL操作,这个操作通过在线切换情势来滚动实现。
    三.简化平日维护,通过高可用平台来机关完结高可用的安顿、维护、监察和控制等任务,能够最大程度的解放DBA手动操作,升高普通运转功用。
    4.联结处理,当复制集众多的情事下,能够合并保管高可用实例消息、实例音信、监察和控制音信、切换消息等。
    高可用的布局要对现成的数据库架构无影响,假若因为安顿高可用,须求更换也许调解数据库框架结构则会促成资金扩展。

有关数据库规范化创设

2.MHA原理

201陆年,当本人入职集团时,差不多经过了两周的耳熟能详,几乎开掘公司数据库自动化的影子。

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保存的2进制日志事件(binlog events)。
  • 升级3个slave为新master并记录binlog file和position。
  • 使其余的slave连接新的master实行复制。
  • 成功切换manager主进度OFFLINE

那么些是规范,规范化是自动化的要紧前提。那一年,大家那边标准化是做得比较好的,从OS的尺度到DB层的规范都抱有统一的专门的学业。比方OS的操作系统版本、文件系统格式、磁盘挂载点、预装软件、内核参数等等,大家全体MySQL服务器基本都以同1的。

二.二.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的剧本触发,无需人手操作。

此处我们是怎么办到保持一致的啊?

二.3.脚下高可用方案

  • keepalived+mysql复制
    该组织与MHA类似,但keepalived的优势在于无状态组件的故障切换,常用来web前端的故障转移,应用于数据库场景中,最致命的难题正是脑裂现在数据乱写的高风险,为公司推动巨大麻烦。

  • MySQL Cluster
    MySQL
    Cluster真正实现了高可用,不过选择的是NDB存款和储蓄引擎,并且SQL节点有单点故障难点。

  • 半一并复制(伍.5+)
    半齐声复制大大减弱了“binlog
    events只存在故障master上”的标题。在付出时,保险最少2个slave(并不是持有的)接收到binlog,因而部分slave或许未有抽取到binlog。

  • PXC
    PXC落成了劳务高可用,数据同步时是出现复制。不过仅帮助InnoDB引擎,全部的表都要有主键。锁争执、死锁难题相对较多等等难点。

先是是大家DBA对个中1台服务器经过初阶化设置和优化,比如按数据库的最优政策调治基本参数,分区和挂在磁盘,预装pt-tool
\ MHA Node \ Xtrbackup \ Innotop \
oak-tool等数据库常用的管理软件,然后交付给运维同学实行打包镜像,之后全数交付给DBA的服务器都以按此镜像实行配置。那样一来,我们的OS服务器就尤其标准了,同时也预装了作者们常用的管理工科具。

2.4.MHA的优势

  • 障切换快

    主从复制集群中,只要从库在复制上未曾延迟,MHA平时能够在数秒内完结故障切换。九-十秒内检查到master故障,可以选用在7-拾秒关闭
    master以制止出现裂脑,几分钟内,将差异中继日志(relay
    log)应用到新的master上,因而总的宕机时间平常为十-30秒。恢复生机新的master后,MHA并行的东山再起其他的slave。即便在有数万台
    slave,也不会影响master的苏醒时间。
    DeNA在当先1四十四个MySQL(首要五.0/5.一版本)主从意况下使用了MHA。当mater故障后,MHA在四秒内就完了了故障切换。在守旧的积极/被动集群消除方案中,四秒内成功故障切换是不容许的。

  • master故障不会形成数据不均等
    当 近年来的master出现故障是,MHA自动识别slave之间连结日志(relay
    log)的例外,并运用到全数的slave中。那样具有的salve能够保险同步,只要抱有的slave处于存活状态。和Semi-
    Synchronous Replication一齐利用,(大约)能够保障未有数据丢失。

  • 需修改当前的MySQL设置
    MHA的宏图的最首要尺度之壹正是尽可能地质大学约易用。MHA专门的学问在价值观的MySQL版本五.0和之后版本的主从复制境况中。和其他高可用化解格局比,MHA并不必要更动MySQL的布局境况。MHA适用于异步和半合伙的主从复制。
    开发银行/截止/升级/降级/安装/卸载MHA不须要更换(包扩运维/甘休)MySQL复制。当供给晋级MHA到新的本子,不须求结束MySQL,仅仅替换来新本子的MHA,然后重启MHA Manager就好了。
    MHA运转在MySQL
    伍.0初阶的原生版本上。一些别的的MySQL高可用消除方案要求一定的版本(比方MySQL集群、带全局专门的职业ID的MySQL等等),但并不仅仅为了
    master的高可用才迁移应用的。在大许多情景下,已经配备了相比较旧MySQL应用,并且不想单独为了贯彻Master的高可用,花太多的岁月迁移到分化的蕴藏引擎或更新的前敌发行版。MHA工作的回顾5.0/伍.1/五.5的原生版本的MySQL上,所以并不要求迁移。

  • 不用增添大气的服务器
    MHA由MHA Manager和MHA Node组成。MHA
    Node运转在急需故障切换/苏醒的MySQL服务器上,由此并不须求额外扩展服务器。MHA
    Manager运转在一定的服务器上,由此需求追加壹台(完成高可用须要二台),不过MHA
    Manager可以监督大批量(以致上百台)单独的master,因而,并不必要扩充大气的服务器。即便在1台slave上运维MHA
    Manager也是足以的。综上,落成MHA并没用额外扩展大气的劳务。

  • 无质量下跌
    MHA适用与异步或半联手的MySQL复制。监察和控制master时,MHA仅仅是每隔几秒(暗许是3秒)发送三个ping包,并不发送重查询。能够博得像原生MySQL复制同样快的习性。

  • 适用于其余存款和储蓄引擎
    MHA能够运营在只要MySQL复制运营的积攒引擎上,并不只限制于InnoDB,即便在精确迁移的观念的MyISAM引擎遭遇,一样能够动用MHA。

咱俩的数据库也有本身的布署职业,举个例子配置文件原则,除了有个别可调参数是变量,别的参数全体利用口径模板;别的像MySQL的安装目录、数据目录、二进制日志目录、暂且文件目录都有统1的规范,依照分裂的实例端口来区分。

三.MHA特级施行

澳门新葡金京 3

图形来源于网络

当然MySQL严刻要做到口径,在未产生自动化布署从前,是相比劳累的,困难的不是安顿手艺,而是规则意识。平时一个铺面都有许多少个DBA共管数据库,由于以前的劳作习于旧贯我们喜欢循途守辙本人的主意来铺排数据库,或然尚未正式配备规则、有规则可是尚未严谨听从,都以无力回天做到规范化的。我们是从一方始就做了准星规则和自动化安顿脚本,所以大家当前线上独具数据库的布局都以条件的,为一而再自动化平台建设打下了相当好的底蕴。

3.壹.背景介绍

譬如说,我们在管理机使用如下命令,则会在相应的IP服务器上开创贰个innodb_buffer_pool等于10GB的数据库实例,端口为3306,挂载设备为fioa,版本为MySQL-5.6.2捌-OS7-x86_6四,数据库编码为utf八:

三.壹.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

三.一.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

自动化创立的实例依照端口进行标准化布置,如下所示,某台服务器安装了330陆、3307、330八多少个端口,则配备目录如下所示:

三.1.三.装置系统供给
  • 波及全部服务器关闭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.二.二.开立布局文件目录
# mkdir /etc/mysql

/etc/my3308.cnf

三.二.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

数据库安装路线:

叁.二.四.成立授权目录
# 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.一.主库成立复制用户
mysql> grant replication slave, replication client on *.* to replica@'192.168.217.%' identified by 'mycatDBA';

mysql-tmpdir

叁.三.二.主库创制mha用户
mysql> grant all privileges on *.* to mha@'192.168.217.132' identified by 'mysqlDBA';

/storage/fioa/mysql3307:

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

binlog

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

data

三.3.五.从库恢复生机数据库
# 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

叁.三.陆.从库开端化同步数据
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.一.安装软件
  • 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.肆.五.创办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和端口,就足以很轻便地知道这么些实例的享有音讯,无疑是自动化的名特别促销基础。

三.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

发表评论

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