部署MHA集群

一、准备MHA集群环境

在这里插入图片描述

步骤一: 配置ssh免密登录
配置MHA集群数据库服务器

–>192.168.4.51
ssh-keygen -f ~/.ssh/id_rsa -P ‘’
ssh-copy-id root@192.168.4.52
ssh-copy-id root@192.168.4.53

–>192.168.4.52
ssh-keygen -f ~/.ssh/id_rsa -P ‘’
ssh-copy-id root@192.168.4.51
ssh-copy-id root@192.168.4.53

–>192.168.4.53
ssh-keygen -f ~/.ssh/id_rsa -P ‘’
ssh-copy-id root@192.168.4.51
ssh-copy-id root@192.168.4.52

–>192.168.4.57
ssh-keygen -f ~/.ssh/id_rsa -P ‘’
ssh-copy-id root@192.168.4.51
ssh-copy-id root@192.168.4.52
ssh-copy-id root@192.168.4.53

步骤二: 安装依赖包

配置数据库服务器192.168.4.51
[root@host51 ~]# yum -y install perl-* //安装系统自带的perl软件包
[root@host51 ~]# cd mha-soft-student
[root@host51 ~]# yum –y install perl-* //安装共享的perl软件包

配置数据库服务器192.168.4.52
[root@host52 ~]# yum -y install perl-* //安装系统自带的perl软件包
[root@host52 ~]# cd mha-soft-student
[root@host52 ~]# yum –y install perl-* //安装共享的perl软件包[root@localhost

配置数据库服务器192.168.4.53
[root@host53 ~]# yum -y install perl-* //安装系统自带的perl软件包
[root@host53 ~]# cd mha-soft-student
[root@host53 ~]# yum –y install perl-* //安装共享的perl软件包

配置管理服务器192.168.4.57
[root@mgm57 ~]# yum -y install perl-* //安装系统自带的perl软件包
[root@mgm57 ~]# cd mha-soft-student
[root@mgm57 ~]# yum –y install perl-* //安装共享的perl软件包

步骤三: 配置MySQL一主多从结构

配置主服务器192.168.4.51

[root@host51 ~]# vim /etc/my.cnf

[mysqld]
log-bin=master51 //日志名
server_id=51 //指定server_id

[root@host51 ~]# systemctl restart mysqld
[root@host51 ~]# mysql -uroot -p123qqq…A

 mysql> grant  replication slave  on  *.*  to repluser@"%"  identified by “123qqq…A"; 
 //添加从服务器同步数据连接用户
mysql> show master status; //查看日志信息
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------+----------+--------------+------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master51.000001 |     441 |              |                  |                   |
+-----------------+----------+--------------+------------------+-------------------+

配置从服务器192.168.4.52

[root@host52 ~]# vim /etc/my.cnf

[mysqld]

log-bin=master52 //日志名
server_id=52 //指定server_id

[root@host52 ~]# systemctl restart mysqld //重启数据库服务
[root@host52 ~]# mysql -uroot –p123qqq…A //数据库管理员登录

mysql> change master to master_host="192.168.4.51",master_user="repluser",master_password="123qqq...A",master_log_file="master51.000001", master_log_pos=441; 

mysql> start slave; //启动slave进程

[root@host52 ~]# mysql -uroot –p123qqq…A –e “show slave status\G” | grep 192.168.4.51

Master_Host: 192.168.4.51 //主服务器Ip地址

[root@host52 ~]# mysql -uroot –p123qqq…A –e “show slave status\G” | grep –i yes

Slave_IO_Running: Yes //I0线程正常
Slave_SQL_Running: Yes //SQL线程正常

配置从服务器192.168.4.53

[root@host53 ~]# vim /etc/my.cnf

[mysqld]

log-bin=master53 //日志名
server_id=53 //指定server_id

[root@host53 ~]# systemctl restart mysqld //重启数据库服务
[root@host53 ~]# mysql -uroot –p123qqq…A //数据库管理员登录

mysql> change master to master_host="192.168.4.51",master_user="repluser",master_password="123qqq...A",master_log_file="master51.000001", master_log_pos=441; 

mysql> start slave; //启动slave进程

[root@host53 ~]# mysql -uroot –p123qqq…A –e “show slave status\G” | grep 192.168.4.51

Master_Host: 192.168.4.51 //主服务器Ip地址

[root@host53 ~]# mysql -uroot –p123qqq…A –e “show slave status\G” | grep –i yes

Slave_IO_Running: Yes //I0线程正常
Slave_SQL_Running: Yes //SQL线程正常

二、部署MHA集群

步骤一:配置管理节点

安装软件
[root@mgm57 ~]# cd mha-soft-student/
[root@mgm57 mha-soft-student]#
[root@mgm57 mha-soft-student]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm //安装mha-node软件包

准备中...                          ################################# [100%]
正在升级/安装...
   1:mha4mysql-node-0.56-0.el6        ################################# [100%]

[root@mgm57 mha-soft-student]# rpm -qa | grep mha //查看是否安装成功

mha4mysql-node-0.56-0.el6.noarch

[root@mgm57 mha-soft-student]# tar -zxvf mha4mysql-manager-0.56.tar.gz //解压mha-manager软件包

mha4mysql-manager-0.56/
mha4mysql-manager-0.56/debian/
mha4mysql-manager-0.56/debian/control
mha4mysql-manager-0.56/debian/copyright
……
……

[root@mgm57 mha-soft-student]# ls

app1.cnf            mha4mysql-manager-0.56        
mha4mysql-node-0.56-0.el6.noarch.rpm
master_ip_failover  mha4mysql-manager-0.56.tar.gz

[root@mgm57 mha-soft-student]# cd mha4mysql-manager-0.56 //进入源码目录
[root@mgm57 mha4mysql-manager-0.56]# ls //查看文件列表

AUTHORS  COPYING  inc  Makefile.PL  META.yml  rpm      t
bin      debian   lib  MANIFEST     README    samples  tests

[root@mgm57 mha4mysql-manager-0.56]# perl Makefile.PL //配置

*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- DBI                   ...loaded. (1.627)
- DBD::mysql            ...loaded. (4.023)
- Time::HiRes           ...loaded. (1.9725)
- Config::Tiny          ...loaded. (2.14)
- Log::Dispatch         ...loaded. (2.41)
- Parallel::ForkManager ...loaded. (1.18)
- MHA::NodeConst        ...loaded. (0.56)
*** Module::AutoInstall configuration finished.
Checking if your kit is complete...
Looks good
Writing Makefile for mha4mysql::manager
Writing MYMETA.yml and MYMETA.json

[root@mgm57 mha4mysql-manager-0.56]# make //编译
[root@mgm57 mha4mysql-manager-0.56]# make install //安装
[root@mgm57 mha4mysql-manager-0.56]# ls /root/perl5/bin //查看安装的命令

masterha_check_repl    masterha_conf_host       masterha_master_switch
masterha_check_ssh     masterha_manager         masterha_secondary_check
masterha_check_status  masterha_master_monitor  masterha_stop

[root@mgm57 ~ ]# mkdir /etc/mha //创建工作目录
[root@mgm57 ~ ]# cp mha4mysql-manager-0.56/sample/conf/app1.cnf /etc/mha/ //拷贝模板文件
[root@mgm57 ~ ]# vim /etc/mha/app1.cnf //编辑主配置文件

[server default]                                      //管理服务默认配置
manager_workdir=/etc/mha                              //工作目录
manager_log=/etc/mha/manager.log                      //日志文件
master_ip_failover_script=/etc/mha/master_ip_failover //故障切换脚本

ssh_user=root                    //访问ssh服务用户
ssh_port=22                      //ssh服务端口

repl_user=repluser               //主服务器数据同步授权用户
repl_password=123qqq…A           //密码

user=monitor                        //监控用户
password=123qqq…A                //密码

[server1]                        //指定第1台数据库服务器
hostname=192.168.4.51            //服务器ip地址
port=3306                        //服务端口,不写默认3306
candidate_master=1               //竞选主服务器

[server2]                        //指定第2台数据库服务器
hostname=192.168.4.52
port=3306
candidate_master=1  
            
[server3]                        //指定第3台数据库服务器
hostname=192.168.4.53
port=3306
candidate_master=1

[root@mgm57 ~]# cp mha-soft-student/master_ip_failover /etc/mha/
[root@mgm57 ~]# vim +35 /etc/mha/master_ip_failover

my $vip = '192.168.4.100/24';  # Virtual IP  //定义VIP地址
my $key = "1"; //定义变量$key
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip"; //部署vip地址命令
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down"; //释放vip地址命令

[root@mgm57 ~]# chmod +x /etc/mha/master_ip_failover //给脚本加执行权限


[root@host51 ~]# ifconfig eth0:1 //部署前查看

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 52:54:00:d8:10:d7  txqueuelen 1000  (Ethernet)

[root@host51 ~]# ifconfig eth0:1 192.168.4.100 //部署vip地址
[root@host51 ~]# ifconfig eth0:1 //部署后查看

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.100  netmask 255.255.255.0  broadcast 192.168.4.255
        ether 52:54:00:d8:10:d7  txqueuelen 1000  (Ethernet)
步骤二:配置数据节点

在所有数据库服务器上,安装mha-node软件包
]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

准备中...                          ################################# [100%]
正在升级/安装...
   1:mha4mysql-node-0.56-0.el6        ################################# [100%]

在所有数据服务器上添加监控用户
可以只在host51主机执行授权命令,host52和host53 会自动同步授权
mysql> grant all on . to monitor@"%" identified by “123qqq…A”;

在52/53台从服务器上添加,数据同步连接用户
mysql> grant replication slave on . to repluser@"%" identified by “123qqq…A”;

修改三台数据库服务运行参数
[root@host5X ~]# vim /etc/my.cnf

[mysqld]
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" //加载模块
rpl_semi_sync_master_enabled=1  //启用master模块
rpl_semi_sync_slave_enabled=1     //启用slave模块
relay_log_purge=0   //禁止自动删除中继日志文件

三、测试配置

[root@mgm57 ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf //执行测试命令

[root@host57 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf //执行测试命令

[root@mgm57 ~]# masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover //执行启动命令

[root@mgm57 ~]# masterha_check_status --conf=/etc/mha/app1.cnf//执行命令

[root@mgm57 ~]# ls /etc/mha/ //查看工作目录文件列表

app1.cnf  app1.master_status.health  manager.log  master_ip_failover

高可用测试

停止主服务器51的mysql服务
host51~]# systemctl stop mysqld
host52 ~]# ifconfig eth0:1 //VIP跳至52、53其中一台使其作为新主服务器,另一台则成为这台新主服务器的从服务器

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.100  netmask 255.255.255.0  broadcast 192.168.4.255
        ether 52:54:00:f5:c4:6a  txqueuelen 1000  (Ethernet)

启动host51主机的数据库服务

host51~]# systemctl start mysqld
与主服务器数据一致

[root@host52 ~]# mysqldump -uroot -p123qqq…A --master-data db9 > db9.sql //在主服务器host52 做完全备份 --master-data可以用于查找完全备份后产生的新数据的偏移量并做增量恢复

host51 ~]# mysql -uroot -p123qqq…A db9 < /root/db9.sql//host51 主机使用备份文件恢复数据
将51配置为52的从服务器

host57~]# vim /etc/mha/app1.cnf

 [server1 ]
hostname=192.168.4.51
port=3306
candidate_master=1

host57~] masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf
–ignore_last_failover //启动管理服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值