一:环境配置

192.168.78.128(备库,只读), 192.168.78.129(主库),192.168.78.130(从库,master为128)

三台数据库可以SSH无密码登录

二:配置配置主从半同步

# 所有mysql数据库服务器,安装半同步插件(semisync_master.so,semisync_slave.so)

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';

mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';  mysql> show variables like '%sync%';

# 查看半同步状态:

mysql> show status like '%sync%';

# 有几个状态参数值得关注的:

rpl_semi_sync_master_status:显示主服务是异步复制模式还是半同步复制模式

rpl_semi_sync_master_clients:显示有多少个从服务器配置为半同步复制模式

rpl_semi_sync_master_yes_tx:显示从服务器确认成功提交的数量

rpl_semi_sync_master_no_tx:显示从服务器确认不成功提交的数量

rpl_semi_sync_master_tx_avg_wait_time:事务因开启semi_sync,平均需要额外等待的时间

rpl_semi_sync_master_net_avg_wait_time:事务进入等待队列后,到网络平均等待时间

一般主从半同步需要修改配置文件,然后重启。最初安装如果用的是标配配置文件,通过set开启就可以了。

三:安装MHA

三台机器上都要做配置epel源

[root@M128 ~]#  rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

安装所需要的包

[root@M128 ~]#  yum  -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Config-IniFiles  ncftp perl-Params-Validate  perl-CPAN perl-Test-Mock-LWP.noarch perl-LWP-Authen-Negotiate.noarch perl-devel

[root@M128 ~]# yum -y install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker  这个百度文档没有但是显然是要装的(***)

以下操作管理节点需要两个都安装,在3台数据库节点只要安装MHA的node节点:

1 # 如果安装下面包,报依赖关系错,请先安装mysql-share-compat包

2 # 先安装下面的 perl-dbd-mysql包

3 # 在下面执行perl时,如果出现报错,需要安装如下这几个perl包: perl-devel perl-CPAN

tar -zxf mha4mysql-node-0.53.tar.gz

cd mha4mysql-node-0.53

perl Makefile.PL

make && make install

管理节点还需要安装manger

tar -zxf  mha4mysql-manager-0.53.tar.gz

cd mha4mysql-manager-0.53

perl Makefile.PL

make && make install

修改MHA的配置文件

mkdir /etc/masterha

mkdir -p /master/app1

mkdir -p /scripts

cp samples/conf/* /etc/masterha/

cp samples/scripts/*  /scripts

cp samples/conf/* /etc/masterha/

vi /etc/masterha/app1.cnf

[server default]

manager_workdir=/var/log/masterha/app1

manager_log=/var/log/masterha/app1/manager.log

[server default]

manager_workdir=/masterha/app1

manager_log=/masterha/app1/manager.log

user=root

#mha管理用的账号(及时换行,不要有空格,否则会抱ssh的错误)

password=123456

ssh_user=root

#ssh的账号

repl_user=repl

#主从同步复制的账号

repl_password=repl

ping_interval=1

shutdown_script=""

master_ip_online_change_script=""

report_script=""

[server1]

hostname=192.168.78.128

master_binlog_dir=/usr/local/mysql/data

candidate_master=1

[server2]

hostname=192.168.78.129

master_binlog_dir=/usr/local/mysql/data

#candidate_master=1

[server3]

hostname=192.168.78.130

master_binlog_dir=/usr/local/mysql/data

no_master=1

masterha_default.cnf 文件置空

echo > masterha_default.cnf

四:测试配置

测试SSH可以无密码登录

~

[root@M128 masterha]# masterha_check_ssh --global_conf=/etc/masterha/masterha_default.cnf  --conf=/etc/masterha/app1.cnf

Tue Oct 27 20:47:50 2015 - [info] Reading default configuratoins from /etc/masterha/masterha_default.cnf..

Tue Oct 27 20:47:50 2015 - [info] Reading application default configurations from /etc/masterha/app1.cnf..

Tue Oct 27 20:47:50 2015 - [info] Reading server configurations from /etc/masterha/app1.cnf..

Tue Oct 27 20:47:50 2015 - [info] Starting SSH connection tests..

Tue Oct 27 20:47:50 2015 - [debug]

Tue Oct 27 20:47:50 2015 - [debug]  Connecting via SSH from root@192.168.78.128(192.168.78.128:22) to root@192.168.78.129(192.168.78.129:22)..

Tue Oct 27 20:47:50 2015 - [debug]   ok.

Tue Oct 27 20:47:50 2015 - [debug]  Connecting via SSH from root@192.168.78.128(192.168.78.128:22) to root@192.168.78.130(192.168.78.130:22)..

Tue Oct 27 20:47:50 2015 - [debug]   ok.

Tue Oct 27 20:47:51 2015 - [debug]

Tue Oct 27 20:47:50 2015 - [debug]  Connecting via SSH from root@192.168.78.129(192.168.78.129:22) to root@192.168.78.128(192.168.78.128:22)..

Tue Oct 27 20:47:50 2015 - [debug]   ok.

Tue Oct 27 20:47:50 2015 - [debug]  Connecting via SSH from root@192.168.78.129(192.168.78.129:22) to root@192.168.78.130(192.168.78.130:22)..

Tue Oct 27 20:47:51 2015 - [debug]   ok.

Tue Oct 27 20:47:51 2015 - [debug]

Tue Oct 27 20:47:51 2015 - [debug]  Connecting via SSH from root@192.168.78.130(192.168.78.130:22) to root@192.168.78.128(192.168.78.128:22)..

Tue Oct 27 20:47:51 2015 - [debug]   ok.

Tue Oct 27 20:47:51 2015 - [debug]  Connecting via SSH from root@192.168.78.130(192.168.78.130:22) to root@192.168.78.129(192.168.78.129:22)..

Tue Oct 27 20:47:51 2015 - [debug]   ok.

Tue Oct 27 20:47:51 2015 - [info] All SSH connection tests passed successfully.

如果报错,清空 ~/.ssh内的文件,重新配置无密码登录

测试MHA

[root@M128 masterha]# masterha_check_repl   --conf=/etc/masterha/app1.cnf

Tue Oct 27 20:50:24 2015 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.

Tue Oct 27 20:50:24 2015 - [info] Reading application default configurations from /etc/masterha/app1.cnf..

Tue Oct 27 20:50:24 2015 - [info] Reading server configurations from /etc/masterha/app1.cnf..

Tue Oct 27 20:50:24 2015 - [info] MHA::MasterMonitor version 0.53.

Tue Oct 27 20:50:25 2015 - [info] Multi-master configuration is detected. Current primary(writable) master is 192.168.78.128(192.168.78.128:3306)

Tue Oct 27 20:50:25 2015 - [info] Master configurations are as below:

Master 192.168.78.128(192.168.78.128:3306), replicating from 192.168.78.129(192.168.78.129:3306)

Master 192.168.78.129(192.168.78.129:3306), replicating from 192.168.78.128(192.168.78.128:3306), read-only

Tue Oct 27 20:50:25 2015 - [info] Dead Servers:

Tue Oct 27 20:50:25 2015 - [info] Alive Servers:

Tue Oct 27 20:50:25 2015 - [info]   192.168.78.128(192.168.78.128:3306)

Tue Oct 27 20:50:25 2015 - [info]   192.168.78.129(192.168.78.129:3306)

Tue Oct 27 20:50:25 2015 - [info]   192.168.78.130(192.168.78.130:3306)

Tue Oct 27 20:50:25 2015 - [info] Alive Slaves:

Tue Oct 27 20:50:25 2015 - [info]   192.168.78.129(192.168.78.129:3306)  Version=5.6.25-log (oldest major version between slaves) log-bin:enabled

Tue Oct 27 20:50:25 2015 - [info]     Replicating from 192.168.78.128(192.168.78.128:3306)

Tue Oct 27 20:50:25 2015 - [info]   192.168.78.130(192.168.78.130:3306)  Version=5.6.25-log (oldest major version between slaves) log-bin:enabled

Tue Oct 27 20:50:25 2015 - [info]     Replicating from 192.168.78.128(192.168.78.128:3306)

Tue Oct 27 20:50:25 2015 - [info]     Not candidate for the new Master (no_master is set)

Tue Oct 27 20:50:25 2015 - [info] Current Alive Master: 192.168.78.128(192.168.78.128:3306)

Tue Oct 27 20:50:25 2015 - [info] Checking slave configurations..

Tue Oct 27 20:50:25 2015 - [info]  read_only=1 is not set on slave 192.168.78.130(192.168.78.130:3306).

Tue Oct 27 20:50:25 2015 - [info] Checking replication filtering settings..

Tue Oct 27 20:50:25 2015 - [info]  binlog_do_db= , binlog_ignore_db=

Tue Oct 27 20:50:25 2015 - [info]  Replication filtering check ok.

Tue Oct 27 20:50:25 2015 - [info] Starting SSH connection tests..

Tue Oct 27 20:50:26 2015 - [info] All SSH connection tests passed successfully.

Tue Oct 27 20:50:26 2015 - [info] Checking MHA Node version..

Tue Oct 27 20:50:26 2015 - [info]  Version check ok.

Tue Oct 27 20:50:26 2015 - [info] Checking SSH publickey authentication settings on the current master..

Tue Oct 27 20:50:27 2015 - [info] HealthCheck: SSH to 192.168.78.128 is reachable.

Tue Oct 27 20:50:27 2015 - [info] Master MHA Node version is 0.53.

Tue Oct 27 20:50:27 2015 - [info] Checking recovery script configurations on the current master..

Tue Oct 27 20:50:27 2015 - [info]   Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/usr/local/mysql/data --output_file=/var/tmp/save_binary_logs_test --manager_version=0.53 --start_file=mysql-bin.000008

Tue Oct 27 20:50:27 2015 - [info]   Connecting to root@192.168.78.128(192.168.78.128)..

Creating /var/tmp if not exists..    ok.

Checking output directory is accessible or not..

ok.

Binlog found at /usr/local/mysql/data, up to mysql-bin.000008

Tue Oct 27 20:50:27 2015 - [info] Master setting check done.

Tue Oct 27 20:50:27 2015 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..

Tue Oct 27 20:50:27 2015 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user=root --slave_host=192.168.78.129 --slave_ip=192.168.78.129 --slave_port=3306 --workdir=/var/tmp --target_version=5.6.25-log --manager_version=0.53 --relay_log_info=/usr/local/mysql/data/relay-log.info  --relay_dir=/usr/local/mysql/data/  --slave_pass=xxx

Tue Oct 27 20:50:27 2015 - [info]   Connecting to root@192.168.78.129(192.168.78.129:22)..

Checking slave recovery environment settings..

Opening /usr/local/mysql/data/relay-log.info ... ok.

Relay log found at /usr/local/mysql/data, up to M129-relay-bin.000002

Temporary relay log file is /usr/local/mysql/data/M129-relay-bin.000002

Testing mysql connection and privileges..Warning: Using a password on the command line interface can be insecure.

done.

Testing mysqlbinlog output.. done.

Cleaning up test file(s).. done.

Tue Oct 27 20:50:27 2015 - [info]   Executing command : apply_diff_relay_logs --command=test --slave_user=root --slave_host=192.168.78.130 --slave_ip=192.168.78.130 --slave_port=3306 --workdir=/var/tmp --target_version=5.6.25-log --manager_version=0.53 --relay_log_info=/usr/local/mysql/data/relay-log.info  --relay_dir=/usr/local/mysql/data/  --slave_pass=xxx

Tue Oct 27 20:50:27 2015 - [info]   Connecting to root@192.168.78.130(192.168.78.130:22)..

Checking slave recovery environment settings..

Opening /usr/local/mysql/data/relay-log.info ... ok.

Relay log found at /usr/local/mysql/data, up to M130-relay-bin.000003

Temporary relay log file is /usr/local/mysql/data/M130-relay-bin.000003

Testing mysql connection and privileges..Warning: Using a password on the command line interface can be insecure.

done.

Testing mysqlbinlog output.. done.

Cleaning up test file(s).. done.

Tue Oct 27 20:50:28 2015 - [info] Slaves settings check done.

Tue Oct 27 20:50:28 2015 - [info]

192.168.78.128 (current master)

+--192.168.78.129

+--192.168.78.130

Tue Oct 27 20:50:28 2015 - [info] Checking replication health on 192.168.78.129..

Tue Oct 27 20:50:28 2015 - [info]  ok.

Tue Oct 27 20:50:28 2015 - [info] Checking replication health on 192.168.78.130..

Tue Oct 27 20:50:28 2015 - [info]  ok.

Tue Oct 27 20:50:28 2015 - [warning] master_ip_failover_script is not defined.

Tue Oct 27 20:50:28 2015 - [warning] shutdown_script is not defined.

Tue Oct 27 20:50:28 2015 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.

如果报错,按照报错信息修改用户权限,主从同步等。

至此说明你的MHA 已经配置好了

四:启动MHA

转载于:https://blog.51cto.com/879100963/1707187

mysql集群之MHA简单搭建相关推荐

  1. mysql集群之MMM简单搭建

    MMM配置环境 MMM-monitor 192.168.78.128 (M1/M128) master1:192.168.78. 1设置hosts解析 三台都需要能彼此解析 追加hosts文件 /et ...

  2. mysql集群之keepalived简单搭建

    1安装必须的相关包 yum -y install  kernel-devel  openssl* popt popt-devel 2下载安装 wget http://www.keepalived.or ...

  3. win2012故障转移mysql集群_Windows 2012 系统搭建高可用故障转移集群

    Windows 2012 系统搭建高可用故障转移集群 一.故障转移集群介绍 1.1系统介绍 故障转移群集是针对具有长期运行的内存中状态或具有大型的.频繁更新的数据状态的应用程序而设计.这些应用程序称为 ...

  4. windows下搭建mysql集群_Windows下搭建MySQL集群

    本文将讨论在Windows下搭建MySQL集群的步骤和搭建过程中应当注意的问题. 由于机器数量和性能有限,搭建环境为一台宿主机(IP:10.200.178.191),一台虚拟机(IP:10.200.1 ...

  5. haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

  6. mysql集群搭建教程-mysql+windows篇

    张哥视频课:https://edu.csdn.net/course/play/7912 搭建MySQL集群,首先看了一些关于集群的资料,然后根据步骤一步步的整,遇到了一些问题,在这里把我遇到的问题以及 ...

  7. mysql集群重启offline_mysql集群搭建问题及解决方法集锦

    在上一篇博客中写了如何搭建mysql集群,之所以遇到这些问题,是因为刚开始弄mysql集群的时候不熟悉,正是因为这些问题,让我对mysql集群的了解渐渐深入,下面介绍在搭建mysql集群的时候我遇到了 ...

  8. kubernetes怎么读_Kubernetes之有状态应用实践-搭建MySQL集群

    零.前情纪要 上一遍文章Kubernetes集群搭建已经带大家成功搭建了Kubernetes集群,可能有不少人在搭建过程中对很多概念性的东西还是很模糊,接下来这篇文章将通过带领大家一起搭建一个高可用的 ...

  9. 初探mysql innodb集群_MySQL InnoDB Cluster搭建

    MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluste ...

最新文章

  1. Apache Spark:更改架构之前必须解决的5个陷阱
  2. 1062 最简分数(PAT乙级 C++)
  3. Qt文档阅读笔记-QWebView官方解析与实例
  4. Golang类型转换模块 - gconv
  5. bch编码c语言有库么,BCH码的译码方法与流程
  6. linux文本编辑器vi保存命令,linux命令vi文本编辑器的使用方法
  7. 数字图像空间域 频域
  8. 未能配置 workstation server 的两种错误解决
  9. 屏幕共享软件使用方法
  10. Kali Linux学习入门
  11. 《张志俊揭秘太极拳》读书摘编
  12. 启用计算机无线网络连接,哪位清楚笔记本电脑如何启用无线网络连接
  13. Class类的使用和背后实现的原理
  14. RK987蓝牙机械键盘win和alt键互换
  15. 基于Umi的移动端框架Alita-v2.6.7源码
  16. centos代码切换图形_CentOS已死;微软将强行升级部分旧版本 Windows 10 用户;黑客远程打开莫斯科近3000个快递柜...
  17. 支付宝小程序获取用户的user_id案例
  18. windows 打开PyCharm报错failed to load JVM DLL pycharm\jbr\\bin\server\jvm.dll
  19. Android系统修改无操作进入屏保页
  20. iOS10 获取系统通讯录新方法

热门文章

  1. 当前时间加30分钟_男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来...
  2. Ubuntu 安装 Cassandra 数据库
  3. android 动态生成直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...
  4. ef mysql 读写分离_基于 EntityFramework 的数据库主从读写分离服务插件
  5. ARM中的---汇编指令
  6. VB封装excel chart
  7. 修复GRUB [转]
  8. 股市常胜将军都懂得适时休息
  9. 李飞飞等6名华人入选ACM 2018 Fellow,无国内学者入选
  10. ARM发布自动驾驶芯片架构,重新宣示车载系统市场的主权