威尼斯网址开户网站:MHA构建MySQL高可用平台最佳
分类:科技知识

原标题:白屏化背后,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(现就职于推特(推特)集团)开垦,是一套精美的当做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基本无需报到服务器去安顿和操作数据。从二〇一五年到今后,大家管理的数据库实例差不离翻了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

本文由威尼斯网址开户网站发布于科技知识,转载请注明出处:威尼斯网址开户网站:MHA构建MySQL高可用平台最佳

上一篇:威尼斯网址开户网站货币加密与技术加密,不甘 下一篇:【威尼斯网址开户网站】始于溯源,无人货架死
猜你喜欢
热门排行
精彩图文