更新时间:2024-07-22 GMT+08:00

开始使用

安全组规则修改(可选)

  • MySQL服务端口号默认3306,默认对该方案创建的VPC子网网段放开,请参考修改安全组规则,配置IP地址白名单,以便能正常访问服务。
  • 该解决方案使用22端口用来远程登录云服务器,默认对该方案创建的VPC子网网段放开,请参考修改安全组规则,配置IP地址白名单,以便能正常访问服务。

安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。

如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。

  • 添加安全组规则:根据业务使用需求需要开放某个TCP端口,请参考添加安全组规则添加入方向规则,打开指定的TCP端口。
  • 修改安全组规则:安全组规则设置不当会造成严重的安全隐患。您可以参考修改安全组规则,来修改安全组中不合理的规则,保证云服务器等实例的网络安全。
  • 删除安全组规则:当安全组规则入方向、出方向源地址/目的地址有变化时,或者不需要开放某个端口时,您可以参考删除安全组规则进行安全组规则删除。
  1. 登录华为云服务器控制台,查看一键部署创建的云服务及其绑定的弹性公网IP。

    图1 云服务器

  2. 打开业务虚拟机所属的子网,单击“IP地址管理”查看虚拟IP。

    图2 VIP

  3. 查看安全组。打开安全组控制台,找到以虚拟私有云VPC名称为前缀的安全组,单击进入查看该方案创建的安全组规则,入方向规则默认22端口、3306端口全放开,请参考安全组规则修改(可选)进行修改。

    图3 安全组

  4. 登录三台云服务器。管理员账户为root。

    图4 使用远程连接软件登录

  5. 释放“主数据库”及“从数据库”绑定的弹性公网IP。登录华为云服务器控制台,选择以“master”、“slave1”为后缀的两台主从数据库服务器,分别单击其绑定的弹性公网IP,单击“解绑>是”进行解绑(注意请勿释放从数据库slave2绑定的公网IP,其上安装了MHA服务软件,故障切换时需要发送报警邮件,如果释放会导致报警邮件发送失败)。

    图5 解绑EIP
    图6 确认解绑

  6. 释放弹性公网IP。找到上一步骤释放的两个弹性公网IP,分别单击右侧“更多>释放>是”,释放弹性公网IP。

    图7 释放EIP
    图8 确认释放

环境初始化

服务器重启后,有可能导致集群服务停止,需要用户重新手动启动服务,下面是手动开启服务的介绍。

  1. 重新配置虚拟IP。登录主数据库服务器,执行ifconfig eth0:1 VIP/24命令,VIP为3.3步骤33.2步骤9中获取的VIP地址。

    图9 重新配置VIP

  2. 开启MHA服务。登录MHA Manager服务器名称后缀为slave2,执行mha_app1_start命令启动MHA监控服务。检查mha状态为“running”,则集群服务启动成功。

    图10 开启MHA服务

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;
图11 从数据库复制状态

在主数据库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)app1配置文件中同步修改密码:

    vim /datadisk/mha/conf/app1.cnf修改password字段值。

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”则说明三台服务器可以互相免密登录
图12 互信检查
主从数据库状态检查
masterha_check_repl  --conf=/datadisk/mha/conf/app1.cnf
见图16,出现“MySQL Replication Health is OK”则说明主从状态良好
图13 主从数据库状态
启动MHA监控
mha_app1_start
检查MHA运行状态
mha_app1_status
停止MHA监控
mha_app1_stop
查看MHA日志
tail -f /datadisk/mha/logs/manager

故障模拟

  1. 在MHA Manager上查看日志变化:

    tail -f /datadisk/mha/logs/manager
    图14 日志

  2. 关闭主数据服务:

    systemctl stop mysqld

  3. 回到MHA Manager服务器,查看日志,出现“Master failover to ......completed successfully.”

    图15 故障转移

  4. 登录从数据库slave1,查看虚拟IP漂移成功。

    图16 VIP漂移成功

  5. 查看MHA Manager运行状态,此时MHA Manager已经完成工作,处于停止状态。

    mha_app1_status
    图17 MHA完成故障转移

  6. 登录收件人邮箱查看报警邮件。

    图18 报警邮件

故障恢复

  1. 在旧主数据库上重新启动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;

  2. 修改MHA Manager配置文件,将旧主数据库加入集群。

    vim /datadisk/mha/conf/app1.cnf ​ 
    [server1]
    candidate_master=1
    check_repl_delay=0
    hostname=192.168.100.111
    port=3306

  3. 重新启动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. 代表切换成功
图19 手动在线切换

在新的主数据库(192.168.100.111)查看VIP漂移成功

ifconfig

在MHA Manager服务器上开启MHA服务即可。

mha_app1_start
mha_app1_status