mysql多实例 高可用_基于mysql-sandbox搭建多实例Mysql MHA高可用集群

一 MHA高可用架构

架构

从架构上来说,MHA分为Node和Manager两部分

1)Node

我们知道,MHA是基于MySQL Replication环境的,在该环境中,不管是Master角色,还是Slave角色,都统称为Node,是被MHA监控管理的对象节点。

Node服务器上需要安装MHA Node包。

2)Manager

Manager为MHA架构中的管理者,建议部署在一独立的服务器上,当然也可部署在某个Slave上,但该Slave永远不要被选择成为新的Master,否则故障切换后的MHA架构就失去了高可用性。

Manager服务器需要安装MHA Manager包,并完善一个主配置文件。

一个Manager可管理多套MySQL Replication环境。

二 MHA工作原理

。。。

二 mysql主从环境搭建

make_replication_sandbox --gtid  /tmp/5.7.30

installing and starting master

installing slave 1

installing slave 2

starting slave 1

.. sandbox server started

starting slave 2

.... sandbox server started

initializing slave 1

initializing slave 2

replication directory installed in $HOME/sandboxes/rsandbox_5_7_30

我们进入到安装好的目录,检查主从状态

9e65a58df289cf406dc785d0e54107c5.png

使用mysql-sandbox只需要这么简单一步,一个一主两从的mysql环境就搭建好了

三  MHA环境搭建

2.安装依赖

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager -y

3.安装MHA node及manager

[root@sandbox tmp]# rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

准备中...                          ################################# [100%]

正在升级/安装...

1:mha4mysql-node-0.58-0.el7.centos ################################# [100%]

[root@sandbox tmp]# rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

准备中...                          ################################# [100%]

正在升级/安装...

1:mha4mysql-manager-0.58-0.el7.cent################################# [100%]

4.准备配置文件

配置全局配置文件(故障切换脚本不会写,会了补上)

[root@sandbox .ssh]# vim /etc/masterha_default.cnf

[server default]

user=mha

password=mha

ssh_user=root

repl_user=rsandbox

repl_password=rsandbox

#master_binlog_dir= /var/lib/mysql

#remote_workdir=/data/log/masterha

ping_interval=3

secondary_check_script=masterha_secondary_check -s 127.0.0.1

#master_ip_failover_script="/etc/mha/scripts/master_ip_failover"

#master_ip_online_change_script="/etc/mha/scripts/master_ip_online_change"

#report_script="/etc/mha/scripts/send_report"

配置主配置文件

[root@sandbox .ssh]# cat /etc/mha/

app1.cnf  scripts/

[root@sandbox .ssh]# cat /etc/mha/app1.cnf

[server default]

manager_workdir=/var/log/mha/app1

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

[server1]

hostname=127.0.0.1

port=22805

master_binlog_dir=/root/sandboxes/rsandbox_5_7_30/master/data

[server2]

hostname=127.0.0.1

port=22806

master_binlog_dir=/root/sandboxes/rsandbox_5_7_30/node1/data

[server3]

hostname=127.0.0.1

port=22807

master_binlog_dir=/root/sandboxes/rsandbox_5_7_30/node2/data

5.配置mysql软连接

ln -s /tmp/5.7.30/bin/mysql /usr/bin/mysql

ln -s /tmp/5.7.30/bin/mysqlbinlog /usr/bin/mysqlbinlog

6.用root用户登陆主库,创建MHA需要的用户

[root@sandbox ~]# mysql -uroot -pmsandbox -S /tmp/mysql_sandbox22805.sock

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

Query OK, 0 rows affected, 1 warning (0.01 sec)

7.同主机下也要配置ssh互信,不然MHA检测不过

cp id_rsa.pub authorized_keys

8.ssh互信检查

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

看到 All SSH connection tests passed successfully. 则字样检测通过

9.主从状态检查

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

127.0.0.1(127.0.0.1:22805) (current master)

+--127.0.0.1(127.0.0.1:22806)

+--127.0.0.1(127.0.0.1:22807)

Thu Aug 27 19:38:05 2020 - [info] Checking replication health on 127.0.0.1..

Thu Aug 27 19:38:05 2020 - [info]  ok.

Thu Aug 27 19:38:05 2020 - [info] Checking replication health on 127.0.0.1..

Thu Aug 27 19:38:05 2020 - [info]  ok.

Thu Aug 27 19:38:05 2020 - [warning] master_ip_failover_script is not defined.

Thu Aug 27 19:38:05 2020 - [warning] shutdown_script is not defined.

Thu Aug 27 19:38:05 2020 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.

10.开启MHA

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

11.查看MHA状态

[root@sandbox rsandbox_5_7_30]# masterha_check_status --conf=/etc/mha/app1.cnf

app1 (pid:120310) is running(0:PING_OK), master:127.0.0.1

[root@sandbox .ssh]# tailf /var/log/mha/app1/manager.log

127.0.0.1(127.0.0.1:22805) (current master)

+--127.0.0.1(127.0.0.1:22806)

+--127.0.0.1(127.0.0.1:22807)

Thu Aug 27 19:06:38 2020 - [warning] master_ip_failover_script is not defined.

Thu Aug 27 19:06:38 2020 - [warning] shutdown_script is not defined.

Thu Aug 27 19:06:38 2020 - [info] Set master ping interval 3 seconds.

Thu Aug 27 19:06:38 2020 - [info] Set secondary check script: masterha_secondary_check -s 127.0.0.1

Thu Aug 27 19:06:38 2020 - [info] Starting ping health check on 127.0.0.1(127.0.0.1:22805)..

Thu Aug 27 19:06:38 2020 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn't respond..

12.手工Kill掉主库22805端口的mysqld_safe和mysqld服务,但是不会自动切换,因为我没写脚本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值