2.1 问题
配置管理节点
配置数据节点
2.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:配置管理节点
1)安装软件
[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]#
[root@mgm57 mha-soft-student]# rpm -qa | grep mha //查看是否安装成功
mha4mysql-node-0.56-0.el6.noarch
[root@mgm57 mha-soft-student]#
[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]#
[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
2)编辑主配置文件
[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=root //监控用户
password=123qqq…A //密码
[server1] //指定第1台数据库服务器
hostname=192.168.4.51 //服务器ip地址
port=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
:wq
3)创建故障切换脚本
[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地址命令
:wq
[root@mgm57 ~]# chmod +x /etc/mha/master_ip_failover //给脚本加执行权限
4)在当前主服务器部署vip地址
[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)
步骤二:配置数据节点
1)在所有数据库服务器上,安装mha-node软件包
]# cd /root/mha-soft-student/
]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
准备中... ################################# [100%]
正在升级/安装...
1:mha4mysql-node-0.56-0.el6 ################################# [100%]
2)在所有数据服务器上添加监控用户
可以只在host51主机执行授权命令,host52和host53 会自动同步授权
]# mysql –uroot –p密码
mysql> grant all on *.* to root@"%" identified by "123qqq...A";
mysql> exit;
3)在2台从服务器上添加,数据同步连接用户
在从服务器host52添加用户
[root@host52]# mysql –uroot –p密码
mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
mysql> exit;
在从服务器host53添加用户
[root@host53]# mysql –uroot –p密码
mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A";
mysql> exit;
4)修改数据库服务运行参数
修改主服务器host51
[root@host51 ~]# 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 //禁止自动删除中继日志文件
:wq
[root@host51 ~]# systemctl restart mysqld //重启服务
修改从服务器host52
[root@host52 ~]# vim /etc/my.cnf
[mysqld]
log-bin=master52
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 //禁止自动删除中继日志文件
:wq
[root@host52 ~]# systemctl restart mysqld //重启服务
修改从服务器host53
[root@host53 ~]# vim /etc/my.cnf
[mysqld]
log-bin=master53
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 //禁止自动删除中继日志文件
:wq
[root@host53 ~]# systemctl restart mysqld //重启服务