mysql高可用架构mha_mysql高可用架构之MHA架构-Go语言中文社区

6793333c5c2967b926a4e853a1e67841.png

保证事务的一致性

达到真正意义上的高可用

MHA提供了什么功能

监控主数据库服务器是否可用

当主DB不可用时,从多个从服务器中选举出新的主数据库服务器

提供了主从切换和故障转移功能

MHA可以与半同步结合

提供主从切换和故障转移功能

MHA是如何进行主从切换的:

尝试从出现故障的主数据库保存二进制日志

从多个备选从服务器中选举出新的备选主服务器

可以人为设置一些服务器不参与选举

在备选主服务器和其它从服务器之间同步差异二进制数据

应用从原主DB服务器上保存的二进制日志

提升备选主DB服务器为新的主DB服务器

迁移集群中的其他从DB作为新的主DB的从服务器

MHA演示架构

e1b97434f2391f30a1ff96b0bd88e681.png

使用GTID的复制模式

MHA配置步骤:

1、配置集群内所有主机的SSH免认证登陆,比如故障转移过程中保存

原主服务器二进制,配置虚拟IP地址等。

2、安装MHA-node软件包(在所有服务器)和MHA-manager软件包(在监控服务器)

yum -y install perl-Config-Tiny.noarch perl-Time-HiRes.x86_64 perl-Parallel-ForkManager perl-Log-Dispatch-Perl.noarch

perl-DBD-MySQL ncftp

3、建立主从复制集群

4、配置MHA管理节点

5、使用masterha_check_ssh和masterha_check_repl对配置进行检验

6、启动并测试MHA服务

具体配置:

1、建立基础复制架构

8547d9e8a29d6eb89cfce91f5c071ff9.png

启用gtid_mode

1a1517fb22d4f46af980390f602f5d3b.png

建立复制用户

启动复制链路:3.201;3102都启动

ad4cda7730420380ac02b96baef21b67.png

配置MHA:

1、建立SSH的免认证登陆:ssh-keygen生成密钥

44e9d5b8f6bea040359eac635d98a0eb.png

下面三个命令在每个节点(100,101,102)都需要执行

ssh -copy-id -i /root/.ssh/id_rsa '-p 22 root@192.168.3.100'

ssh -copy-id -i /root/.ssh/id_rsa '-p 22 root@192.168.3.101'

ssh -copy-id -i /root/.ssh/id_rsa '-p 22 root@192.168.3.102'

039b47b9dc7ea14f7c996792a35515ea.png

安装node软件包

f6c20b17477870fa50f314f56f47bb9e.png

安装支持软件包:yum -y install perl-DBD-MySQL ncftp perl-DBI.x86(所有节点都安装)

在监控服务器安装:

yum -y install perl-Config-Tiny.noarch perl-Time-HiRes.x86_64 perl-Parallel-ForkManager perl-Log-Dispatch-Perl.noarch

perl-DBD-MySQL ncftp

安装(监控服务器): rpm -ivh mha4mysql-manager-0.57-0.el7.noarch.rpm

安装好后配置:

建立MHA配置目录:mldir -p /etc/mha

从主服务器下载二进制目录(工作目录): mkdir -p /home/mysql_mha

6f53042efaca16a5c94550e30d814e6a.png

[server default]

user=mha

password=123456  (在主服务器建立用户:grant all privileges on *.* to mha@'192.168.3.%' identified by '123456';)

manager_workdir=/home/mysql_mha  (工作目录)

manager_log=/home/mysql_mha/manager.log

remote_workdir=/home/mysql_mha   (远程服务器工作目录,需要在其 他节点建立这个目录mkdir -p /home/mysql_mha)

ssh_user=root

repl_user=repl  (复制用户)

repl_password=123456

ping_interval=1  (manage线程来检测主数据库是否可以正常连接的间隔)

master_binlog_dir=/home/mysql/sql_log (最好把bin-log都配置在同样的目录,在主从切换时不需要再配置)

master_ip_failover_script=/user/bin/master_ip_failover

secondary_check_script=/usr/bin/masterha_secondary_check -s 192.168.3.101 -s 192.168.3.102 -s 192.168.3.100

[server1]

hostname=192.168.3.100

candidate_master=1

[server2]

hostname=192.168.3.101

candidate_master=1

[server3]

hostname=192.168.3.102

no_master=1

cfef3de016fe4af1006d8b0d4fa1a088.png

切换虚拟IP的脚部/user/bin/master_ip_failover

c4c6d964380a1057b0ab4d7451b278e1.png

检测是否ssh是否配置成功:masterha_check_ssh --conf=/etc/mha/mysql_mha.cnf

检测配置文件:masterha_check_repl --conf=/erc/mha/mysql_mha.cnf

启动mha:nohup masterha_manager --conf=/etc/mha/mysql_mha.cnf &

主动配置虚拟IP:ifconfig eth0:1 192.168.3.90/24

MHA 工具的优点:

Perl语言开发的开源软件

可以支持基于GTID的复制模式

MHA在进行故障转移时更不易产生数据丢失

同一台监控节点可以监控多个集群

MHA的缺点:

需要编写脚本或利用第三方工具来时间Vip的配置

MHA启动后只会对主数据库进行监控

需要基于SSH免认证配置,存在一定的安全隐患

没有提供从服务器负载均衡的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值