白屏化背后新葡萄京娱乐网站:,MHA构建MySQL高可用平台最佳实践

新葡萄京娱乐网站 4

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

新葡萄京娱乐网站 1

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

图形来源网络

事务与技能往往是共同前进的,201六年,作者到场平安好先生,在作业高速前进的还要,大家的数据库自动化平台也取得了高效的建设和升高。

文/Bruce.Liu1

一、背景

文章大纲

  1. MHA简介
    一.一. mha组件介绍
    壹.二. 背景和指标
  2. MHA原理
    二.壹. MHA工作原理
    贰.二. MHA工具介绍
    二.三. 当前高可用方案
    2.4. MHA的优势
  3. MHA最棒实践
    3.1. 背景介绍
    3.2. 安装MySQL实例
    3.3. 部署MySQL复制
    3.4. 部署MHA软件
    三.5. 故障自动切换与在线切换

两年多的时光里,大家DBA
Team快捷完毕了数据库自动化、白屏化、闭环化、服务化的建设。落成了JKDB数据库自动化平台(含元数据管理、自动化铺排调度体系、监察和控制连串、备份系统、高可用和在线切换、容积趋势分析规划、校验中央等)、数据库自协助调查询平台、权限申请和审查批准平台、自助变更执行平台、流程引擎、工单系统、敏感音讯探测系统等等。

1.MHA简介

MHA是什么?
MHA是由东瀛Mysql
yoshinorim专家(原就职于DeNA现就职于FaceBook)用Perl写的一套Mysql故障切换方案,来保证数据库的高可用性,它的效率是能在0-30s之内实现主Mysql故障转移(failover),MHA故障转移能够很好的帮大家消除从库数据的一致性难点,同时最大化挽回故障产生后数据的1致性。
官方网址: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能够独立安顿在1台独立的机器上管理八个master-slave集群,也得以安插在一台slave节点上。MHA
Node运维在每台MySQL服务器上,MHA
Manager会定时探测集群中的master节点,当master出现故障时,它能够活动将数据的slave提高为新的master,然后将兼具其余的slave重新指向新的master。整个故障转移进程对应用程序完全透明。

在MHA自动故障切换进程中,MHA试图从宕机的主服务器上保留2进制日志,较大程度的保障数据的不丢掉,但那并不总是实惠的。例如,假如主服务器硬件故障或不可能通过ssh访问,MHA没法保存二进制日志,只实行故障转移而丢掉了的数码。使用MySQL
5.5的半一同复制,能够大大降低数据丢失的高风险。MHA能够与半一起复制结合起来。假使只有3个slave已经收到了的2进制日志,MHA能够将的贰进制日志应用于其余兼具的slave服务器上,因而可以保障拥有节点的数目一致性。

在那中间,除了偶尔故障和优秀扶助之外,DBA基本不要求报到服务器去布置和操作数据。从2016年到今后,大家管理的数据库实例大致翻了三倍,可是DBA人数基本未有变动,近日是5个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。重要作用有多个。
    一.封存贰进制日志
    比方能够访问故障master,会拷贝master的②进制日志
    二.应用差别中继日志
    从持有最新数据的slave上生成差距中继日志,然后接纳差距日志。
    三.去掉中继日志
    在不停歇SQL线程的情事下删除中继日志

正文就将针对我们DBA
Team完毕的数据库自动化平台塑造和之间的建设思路做一些简短介绍,重要分享先前时代条件营造和自动化模型搭建思路方面包车型地铁局地。后续即便大家有趣味,作者得以更进一步一语破的的牵线一下自动化平台其余方面包车型地铁内容。

一.贰.背景和对象

在中期的MySQL架构中最主流就正是MySQL复制的主干结构,但伴随时间的推移以及数据的膨胀会冒出转手几类题目。

  • 先前几10台DB服务器,人工登6服务器就能保证好,也绝非高可用,当master挂了,布告工作将IP切换成slave然后重启也能基本满意工作供给,可是事情急忙提升,实例数不断加码,复制集不断加码,数据库架构三种化,而那种人造维护格局鲜明大大扩大了DBA工作量,而且功用低下、不难失误。

  • DB规模的附加,机器故障、SQL故障、实例故障现身的可能率也加进、还有来自业务方的DB变更,比如大表扩大字段、扩大索引、批量刨除数据等尤其维护操作,当然那些在自然条件下可用选拔在线变更,比如动用pt-online-schema-change工具,然而当不满意在线变更规范、也许在线变更复杂的景观下,就需求接纳滚动变更的主意,先在依次slave上改变、在线切换后再在master上改动,然后再开始展览一回切换还原,而那么些切换操作假诺整个手工业敲命令来进展分明是不可取的。

  • 随着用户数的随地追加,业务方对DB那种基础服务的可用性也就愈加高,在黑莓业务对DB的可用性供给是每一种月必要高达三个九,也就代表各种月的故障时间唯有不到四秒钟,以前那种文告工作转移IP重启的方法一目明白是达不到那几个供给的。

    在那些背景和供给下,大家需求摆脱手工操作,须求一套卓有成效的MySQL高可用方案和2个高效的高可用平台来扶助DB的急忙拉长。MySQL高可用平台需求达到的对象有以下几点:

    壹.数额一致性保险那几个是最中央的同时也是前提,如若主备的数量的不壹致,那么切换就不恐怕举行,当然那里的1致性也是3个相持的,不过要成功最后1致性。
    二.故障神速切换,当master故障时那里能够是机械故障或许是实例故障,要确认保障工作能在最长期切换来备用节点,使得业务受影响时间最短。那里也能够指工作例行维护操作,比如前边提到的黔驴技穷运用在线举办DDL的DDL操作,很多分表批量的DDL操作,这个操作通过在线切换方式来滚动完结。
    3.简化经常维护,通过高可用平台来机关完结高可用的布署、维护、监控等任务,能够最大程度的解放DBA手动操作,进步普通运转功效。
    肆.联合管理,当复制集众多的动静下,能够合并保管高可用实例音信、实例新闻、监察和控制新闻、切换音讯等。
    高可用的铺排要对现有的数据库架构无影响,假使因为安插高可用,要求转移或许调整数据库架构则会造成资本大增。

至于数据库标准化营造

2.MHA原理

201六年,当自身入职公司时,差不离经过了两周的熟练,简直发现商行数据库自动化的阴影。

二.一.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和半联合进行理并答复制1起利用会大大下降数据丢失的摇摇欲坠。流程如下:

  • 从宕机崩溃的master保存贰进制日志事件(binlog events)。
  • 鉴定区别含有最新更新的slave。
  • 运用差距的对接日志(relay log)到此外slave。
  • 选拔从master保存的二进制日志事件(binlog events)。
  • 升高三个slave为新master并记录binlog file和position。
  • 使其余的slave连接新的master实行复制。
  • 实现切换manager主进度OFFLINE

以此是原则,标准化是自动化的主要前提。那一年,大家那边标准化是做得比较好的,从OS的标准到DB层的标准都享有统壹的科班。比如OS的操作系统版本、文件系统格式、磁盘挂载点、预装软件、内核参数等等,我们具备MySQL服务器基本都是壹律的。

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

此处我们是怎么完毕保持一致的吗?

二.三.脚下高可用方案

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

  • MySQL Cluster
    MySQL
    Cluster真正达成了高可用,可是利用的是NDB存款和储蓄引擎,并且SQL节点有单点故障难点。

  • 半协同复制(⑤.5+)
    半一并复制大大减弱了“binlog
    events只设有故障master上”的难题。在提交时,保险最少一个slave(并不是全部的)接收到binlog,因此有些slave可能没有接受到binlog。

  • PXC
    PXC完毕了劳务高可用,数据同步时是出现复制。可是仅援助InnoDB引擎,全数的表都要有主键。锁争持、死锁难点相对较多等等难点。

第3是大家DBA对内部壹台服务器经过初步化设置和优化,比如按数据库的最优政策调整基础参数,分区和挂在磁盘,预装pt-tool
\ MHA Node \ Xtrbackup \ Innotop \
oak-tool等数据库常用的管理软件,然后交付给运维同学举办打包镜像,之后有所交付给DBA的服务器都以按此镜像进行铺排。那样1来,大家的OS服务器就不行规范了,同时也预装了我们常用的管理工科具。

2.4.MHA的优势

  • 障切换快

    主从复制集群中,只要从库在复制上从不延迟,MHA经常能够在数秒内完成故障切换。九-10秒内检查到master故障,能够选拔在7-10秒关闭
    master避防止出现裂脑,几分钟内,将差异中继日志(relay
    log)应用到新的master上,因而总的宕机时间壹般为十-30秒。恢复生机新的master后,MHA并行的还原其他的slave。固然在有数万台
    slave,也不会影响master的回复时间。
    DeNA在超越一四十二个MySQL(主要5.0/5.一本子)主从环境下选取了MHA。当mater故障后,MHA在4秒内就马到功成了故障切换。在观念的积极向上/被动集群消除方案中,4秒内完成故障切换是非常小概的。

  • master故障不会造成数据不1致
    当 如今的master出现故障是,MHA自动识别slave之间衔接日志(relay
    log)的两样,并利用到持有的slave中。这样具有的salve能够保险同步,只要抱有的slave处于存活状态。和Semi-
    Synchronous Replication一起利用,(大致)能够确定保障未有多少丢失。

  • 需修改当前的MySQL设置
    MHA的宏图的要害尺度之1便是拼命三郎地归纳易用。MHA工作在古板的MySQL版本5.0和之后版本的主从复制环境中。和其余高可用化解办法比,MHA并不须要改变MySQL的布局环境。MHA适用于异步和半一同的主从复制。
    启航/甘休/升级/降级/安装/卸载MHA不须要改变(包扩运行/结束)MySQL复制。当须要升高MHA到新的本子,不需求结束MySQL,仅仅替换来新本子的MHA,然后重启MHA Manager就好了。
    MHA运转在MySQL
    伍.0初叶的原生版本上。一些别的的MySQL高可用化解方案供给一定的版本(比如MySQL集群、带全局工作ID的MySQL等等),但并不仅为了
    master的高可用才迁移应用的。在超越54%气象下,已经配备了相比旧MySQL应用,并且不想单独为了落到实处Master的高可用,花太多的时日迁移到分歧的贮存引擎或更新的战线发行版。MHA工作的包罗五.0/伍.1/五.伍的原生版本的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的设置目录、数据目录、二进制日志目录、一时半刻文件目录都有统一的规范,依照不相同的实例端口来分别。

3.MHA拔尖级实践

新葡萄京娱乐网站 3

图表来源网络

理所当然MySQL严刻要形成标准化,在未到位自动化安顿在此以前,是相比较费劲的,困难的不是安排技术,而是规则意识。平日3个商厦都有成都百货上千个DBA共管数据库,由于事先的行事习惯大家喜爱规行矩步自个儿的办法来布局数据库,大概未有专业配备规则、有平整可是并没有严苛坚守,都以无力回天做到规范的。大家是从一上马就做了准星规则和自动化安排脚本,所以大家日前线上具有数据库的配置都是标准的,为持续自动化平台建设打下了格外好的根底。

叁.一.背景介绍

例如,大家在管理机使用如下命令,则会在对应的IP服务器上创办3个innodb_buffer_pool等于十GB的数据库实例,端口为330陆,挂载设备为fioa,版本为MySQL-伍.六.2捌-OS7-x八6_6四,数据库编码为utf捌:

3.一.一.软件参考文书档案

参考文书档案:
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

三.一.二.系统环境介绍

新葡萄京娱乐网站 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、330柒、330捌多个端口,则安排目录如下所示:

三.一.三.安装系统供给
  • 关联全数服务器关闭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

三.二.贰.创建布局文件目录
# 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

数据库安装路径:

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

叁.三.一.主库创制复制用户
mysql> grant replication slave, replication client on *.* to replica@'192.168.217.%' identified by 'mycatDBA';

mysql-tmpdir

三.3.二.主库成立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

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

data

三.三.五.从库苏醒数据库
# 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

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

三.四.一.安装软件
  • 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免密码登6要在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

三.四.五.创设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和端口,就足以很不难地了然这一个实例的具备音信,无疑是自动化的优质基础。

三.肆.陆.上传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

发表评论

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