快捷搜索:

MHA构建MySQL高可用平台最佳实践,DBA应有的数据库

日期:2019-06-21编辑作者:www.8455.com

原标题:白屏化背后,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维护了约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这种基础服务的可用性也就更是高,在BlackBerry业务对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在越过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

本文由澳门新葡8455手机版发布于www.8455.com,转载请注明出处:MHA构建MySQL高可用平台最佳实践,DBA应有的数据库

关键词: www.8455.com

当产品CEO蒙受数据分析那几个槛,想成为多少产

原标题:想成为数据产品经理,先掌握这些数据分析方法论 本文根据GrowingIO创始人&CEO张溪梦与产品经理在线交流问题...

详细>>

www.8455.com人类的工作将如何管理机器人,人工智

对于邹瑞来说,找到一份在京东的第一个全自动仓库的工作感觉就像是获得了升职。 “对我来说,这是在仓库工作能...

详细>>

专注于光学和光电子研究,腾讯与印钞造币总公

原标题:Magic Leap成立瑞士洛桑团队,专注于光学和光电子研究 原标题:腾讯与印钞造币总公司合作推出“人民币防伪...

详细>>

www.8455.com浮出水面,美团首份财报出炉

招股书数据折射了美团目前各业务之间的结构稳定,出现规模效应,那么,关于现阶段美团的亏损问题值得提一提。...

详细>>