开始使用
安全组规则修改(可选)
- MySQL服务端口号默认3306,默认对该方案创建的VPC子网网段放开,请参考修改安全组规则,配置IP地址白名单,以便能正常访问服务。
- 该解决方案使用22端口用来远程登录云服务器,默认对该方案创建的VPC子网网段放开,请参考修改安全组规则,配置IP地址白名单,以便能正常访问服务。
安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。
如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。
- 添加安全组规则:根据业务使用需求需要开放某个TCP端口,请参考添加安全组规则添加入方向规则,打开指定的TCP端口。
- 修改安全组规则:安全组规则设置不当会造成严重的安全隐患。您可以参考修改安全组规则,来修改安全组中不合理的规则,保证云服务器等实例的网络安全。
- 删除安全组规则:当安全组规则入方向、出方向源地址/目的地址有变化时,或者不需要开放某个端口时,您可以参考删除安全组规则进行安全组规则删除。
- 登录华为云服务器控制台,查看一键部署创建的云服务及其绑定的弹性公网IP。
图1 云服务器
- 打开业务虚拟机所属的子网,单击“IP地址管理”查看虚拟IP。
图2 VIP
- 查看安全组。打开安全组控制台,找到以虚拟私有云VPC名称为前缀的安全组,单击进入查看该方案创建的安全组规则,入方向规则默认22端口、3306端口全放开,请参考安全组规则修改(可选)进行修改。
图3 安全组
- 登录三台云服务器。管理员账户为root。
图4 使用远程连接软件登录
- 释放“主数据库”及“从数据库”绑定的弹性公网IP。登录华为云服务器控制台,选择以“master”、“slave1”为后缀的两台主从数据库服务器,分别单击其绑定的弹性公网IP,单击“解绑>是”进行解绑(注意请勿释放从数据库slave2绑定的公网IP,其上安装了MHA服务软件,故障切换时需要发送报警邮件,如果释放会导致报警邮件发送失败)。
图5 解绑EIP
图6 确认解绑
- 释放弹性公网IP。找到上一步骤释放的两个弹性公网IP,分别单击右侧“更多>释放>是”,释放弹性公网IP。
图7 释放EIP
图8 确认释放
环境初始化
服务器重启后,有可能导致集群服务停止,需要用户重新手动启动服务,下面是手动开启服务的介绍。
MySQL使用
该解决方案默认创建三台云服务器,分别安装Mysql-5.7.34版本的数据库,一主(后缀名为master)两从(后缀名为slave1、slave2)。MySQL中默认创建名为mysql的用户组并添加mysql用户,服务端口默认开启3306。主数据库上创建主从复制账户repl,密码同云服务器初始化密码,允许登录地址为192.168.100.0/24网段。MHA Manger默认安装在从数据库slave2上,管理账户mha,密码同云服务器初始化密码。
SHOW SLAVE STATUS\G;
在主数据库Master上创建复制账户命令(默认已创建repl账户,密码为云服务器初始化密码):
mysql -uroot -S /tmp/mysql.sock -e "grant replication slave on *.* to 账户@'%' identified by '密码'"; 例如 mysql -uroot -S /tmp/mysql.sock -e "grant replication slave on *.* to repl@'192.168.100.%' identified by '123'";
在主数据库Master上创建MHA管理账户(默认已创建mha账户,密码为云服务器初始化密码):
mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO 账户@'允许登录地址' IDENTIFIED BY '密码'"; 例如: mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO mha@'192.168.100.%' IDENTIFIED BY '123'";
修改MySQL账户密码
update mysql.user set authentication_string=password('密码') where user='账户' and Host = 'localhost'; 例如: update mysql.user set authentication_string=password('123456') where user='repl' and Host = '192.168.100.%';
- 修改MySQL数据库中账户密码,如修改了主从复制账户密码,须同时在从数据库重新配置主数据库信息:
> CHANGE MASTER TO
MASTER_HOST='192.168.100.111',
MASTER_USER='repl',
MASTER_PASSWORD='密码',
MASTER_PORT=3306,
MASTER_CONNECT_RETRY=10,
MASTER_AUTO_POSITION=1;
> START SLAVE;
MHA使用
MHA Manager安装在从数据库slave2中,一个MHA可以管理多套主从,只需要创建不同的配置文件即可,方案初始化时默认创建一套主从配置文件,MHA管理的用户默认mha,密码同云服务器初始化密码,配置文件路径:/datadisk/mha/conf/app1.cnf。
MHA管理命令:
masterha_check_ssh --conf=/datadisk/mha/conf/app1.cnf 见图15,出现“All SSH connection tests passed successfully”则说明三台服务器可以互相免密登录
masterha_check_repl --conf=/datadisk/mha/conf/app1.cnf 见图16,出现“MySQL Replication Health is OK”则说明主从状态良好
mha_app1_start
mha_app1_status
mha_app1_stop
tail -f /datadisk/mha/logs/manager
故障模拟
- 在MHA Manager上查看日志变化:
tail -f /datadisk/mha/logs/manager
图14 日志
- 关闭主数据服务:
systemctl stop mysqld
- 回到MHA Manager服务器,查看日志,出现“Master failover to ......completed successfully.”
图15 故障转移
- 登录从数据库slave1,查看虚拟IP漂移成功。
图16 VIP漂移成功
- 查看MHA Manager运行状态,此时MHA Manager已经完成工作,处于停止状态。
mha_app1_status
图17 MHA完成故障转移
- 登录收件人邮箱查看报警邮件。
图18 报警邮件
故障恢复
- 在旧主数据库上重新启动MySQL服务,将其作为从数据库加入集群(注意主数据库IP已更新)。
systemctl start mysqld.service mysql -uroot > CHANGE MASTER TO MASTER_HOST='192.168.100.112', MASTER_USER='repl', MASTER_PASSWORD='密码', MASTER_PORT=3306, MASTER_CONNECT_RETRY=10, MASTER_AUTO_POSITION=1; > START SLAVE; > SHOW SLAVE STATUS\G;
- 修改MHA Manager配置文件,将旧主数据库加入集群。
vim /datadisk/mha/conf/app1.cnf [server1] candidate_master=1 check_repl_delay=0 hostname=192.168.100.111 port=3306
- 重新启动MHA服务。
mha_app1_start mha_app1_status
手动切换
手动切换主数据库,必须先停止MHA服务:
mha_app1_stop
然后在MHA Manager上运行以下命令,进行手动在线切换主从数据库:
masterha_master_switch --conf=/datadisk/mha/conf/app1.cnf --master_state=alive --new_master_host=192.168.100.111 --orig_master_is_new_slave --running_updates_limit=10000 --interactive=0 出现-- Switching master to 192.168.0.111(192.168.0.111:3306) completed successfully. 代表切换成功
在新的主数据库(192.168.100.111)查看VIP漂移成功
ifconfig
在MHA Manager服务器上开启MHA服务即可。
mha_app1_start mha_app1_status