MHA的搭建

主机的配置

192.168.80.90sjk1 主库
192.168.80.91sjk2 从库
192.168.80.92sjk3 从库

主从的配置参考博文点击-gtid复制的配置

大致的结构图
在这里插入图片描述

1.配置关键的程序软连接

ln -s /opt/mysql/bin/mysqlbinlog    /usr/bin/mysqlbinlog
ln -s /opt/mysql/bin/mysql          /usr/bin/mysql

2. 配置互信

sjk1 sjk2 sjk3
rm -rf /root/.ssh 

sjk1:
ssh-keygen

cd /root/.ssh 

mv id_rsa.pub authorized_keys

scp  -r  /root/.ssh  192.168.80.91:/root 
scp  -r  /root/.ssh  192.168.80.92:/root 

验证,三个节点

ssh 192.168.80.90 date
ssh 192.168.80.91 date
ssh 192.168.80.92 date

3. 软件包的安装

上传软件包
https://pan.baidu.com/s/1NykMZVhRMe8o1K_jOiO9Kg
提取码:8h07

[root@sjk1 mha]# unzip MHA-2019-6.28.zip
Archive:  MHA-2019-6.28.zip
  inflating: Atlas-2.2.1.el6.x86_64.rpm
  inflating: email_2019-最新.zip
  inflating: master_ip_failover.txt
  inflating: mha4mysql-manager-0.56-0.el6.noarch.rpm
  inflating: mha4mysql-node-0.56-0.el6.noarch.rpm
[root@sjk1 mha]# ll
total 9936
-rw-r--r-- 1 root root 4963681 Jun 28  2019 Atlas-2.2.1.el6.x86_64.rpm
-rw-r--r-- 1 root root   20904 Jun 28  2019 email_2019-最新.zip
-rw-r--r-- 1 root root    2248 Jun 28  2019 master_ip_failover.txt
-rw-r--r-- 1 root root 5051108 Nov 12 20:39 MHA-2019-6.28.zip
-rw-r--r-- 1 root root   87119 Jun 28  2019 mha4mysql-manager-0.56-0.el6.noarch.rpm
-rw-r--r-- 1 root root   36326 Jun 28  2019 mha4mysql-node-0.56-0.el6.noarch.rpm

三台机器上都要

yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

主库sjk1中创建mha用户

grant all privileges on *.* to mha@'192.168.80.%' identified by 'mha';

Manager软件安装(sjk3)

yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

4. 配置文件的准备

sjk3

创建配置文件目录
mkdir -p /etc/mha
 
创建日志目录
mkdir -p /var/log/mha/app1

编辑mha配置文件

cat > /etc/mha/app1.cnf <<EOF
[server default]
manager_log=/var/log/mha/app1/manager        
manager_workdir=/var/log/mha/app1            
master_binlog_dir=/data/binlog       
user=mha                                   
password=mha                               
ping_interval=2
repl_password=123
repl_user=repl
ssh_user=root                               
[server1]                                   
hostname=192.168.80.90
port=3306                                  
[server2]            
hostname=192.168.80.91
port=3306
[server3]
hostname=192.168.80.92
port=3306
EOF

5. 状态检查(sjk3)

masterha_check_ssh  --conf=/etc/mha/app1.cnf 
masterha_check_repl  --conf=/etc/mha/app1.cnf 

6. 开启MHA(sjk3)

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  < /dev/null> /var/log/mha/app1/manager.log 2>&1 &

7. 查看MHA状态

masterha_check_status --conf=/etc/mha/app1.cnf


[root@sjk3 mha]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:16246) is running(0:PING_OK), master:192.168.80.90

### 回答1: 这个错误的原因可能是因为你的 MySQL 安装在 Docker 容器内,而 MHA 试图在宿主机上执行 MySQL 命令,导致找不到 mysqlbinlog 命令。 解决方法是在 MHA 配置文件中指定 MySQL 的执行路径,将其指向 Docker 容器内的 MySQL 安装目录。具体来说,你需要在 MHA 配置文件中的 [mysql_variables] 部分加入如下内容: ``` mysql_basedir="/path/to/mysql/install/directory" mysql_bindir="/path/to/mysql/install/directory/bin" ``` 替换 "/path/to/mysql/install/directory" 为 Docker 容器内 MySQL 安装目录的路径即可。 希望这些信息对你有帮助! ### 回答2: 在使用MySQL MHA搭建时遇到mysqlbinlog命令找不到的问题,可能是因为MySQL未安装或者环境变量配置不正确。 首先,你需要确认MySQL是否在Docker容器内正确安装。可以通过以下命令查看容器内是否已经安装了MySQL: docker exec -it [容器名] bash mysql -V 如果没有安装,你需要在Docker容器内安装MySQL。可以使用以下命令安装MySQL: apt-get update apt-get install mysql-server 如果MySQL已正确安装,但仍然提示mysqlbinlog命令找不到,那可能是因为环境变量配置不正确。我们可以通过以下步骤来解决这个问题: 1.首先,使用docker exec命令进入到正在运行的MySQL容器内: docker exec -it [容器名] bash 2.然后,查找mysqlbinlog的路径: find / -name mysqlbinlog 3.找到mysqlbinlog的路径后,将路径添加到环境变量中: export PATH=$PATH:[mysqlbinlog的路径] 4.保存并退出容器内的bash界面。 5.重新进入MySQL容器,在bash界面中尝试运行mysqlbinlog命令,确保已经可以找到该命令: docker exec -it [容器名] bash mysqlbinlog 通过这些步骤,您应该能够解决mysqlbinlog命令找不到的问题,并正常使用MySQL MHA搭建。如果问题仍然存在,请检查MySQL容器内的环境变量配置是否正确,并确认所使用的MySQL版本是否支持mysqlbinlog命令。 ### 回答3: 在搭建MHAMySQL高可用性解决方案)时,如果在docker容器内报出mysqlbinlog命令找不到的错误,可能是由于相关的MySQL client程序未正确安装或未正确配置环境变量所致。 首先,我们需要确认是否在docker容器内正确安装了MySQL client程序。可以使用以下命令验证是否已安装: ``` docker exec -it <container_id> mysql --version ``` 如果返回了正确的版本号,则说明MySQL client已正确安装。如果未安装,需要先在docker容器内安装MySQL客户端程序。 另外,当我们在docker容器内执行命令时,需要确认`mysqlbinlog`命令在可执行路径中。可以使用以下命令搜索该命令: ``` docker exec -it <container_id> find / -name mysqlbinlog ``` 找到`mysqlbinlog`的路径后,可以尝试直接运行该命令,验证是否能正常执行。 如果无法找到`mysqlbinlog`命令,可能是由于环境变量配置不正确导致的。可以使用以下命令查看环境变量配置情况: ``` docker exec -it <container_id> env ``` 确保`PATH`环境变量中包含了`mysqlbinlog`命令所在的路径。 如果以上步骤都没有解决问题,还可以尝试重新安装MySQL client程序或在docker容器内重新构建MySQL镜像。 总之,通过正确安装并配置MySQL client程序,以及在环境变量中正确设置`mysqlbinlog`命令所在的路径,应该可以解决mysqlbinlog命令找不到的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安有故里y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值