
# 开始使用
#### 安全组规则修改（可选）
![](https://support.huaweicloud.com/mhamysql-ctf/public_sys-resources/notice_3.0-zh-cn.png)
- MySQL服务端口号默认3306，默认对该方案创建的VPC子网网段放开，请参考[修改安全组规则](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0005.html)，配置IP地址白名单，以便能正常访问服务。
- 该解决方案使用22端口用来远程登录云服务器，默认对该方案创建的VPC子网网段放开，请参考[修改安全组规则](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0005.html)，配置IP地址白名单，以便能正常访问服务。
 
安全组实际是网络流量访问策略，包括网络流量入方向规则和出方向规则，通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。
如果您的实例关联的安全组策略无法满足使用需求，比如需要添加、修改、删除某个TCP端口，请参考以下内容进行修改。
- 添加安全组规则：根据业务使用需求需要开放某个TCP端口，请参考**[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)**添加入方向规则，打开指定的TCP端口。
- 修改安全组规则：安全组规则设置不当会造成严重的安全隐患。您可以参考**[修改安全组规则](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0005.html)**，来修改安全组中不合理的规则，保证云服务器等实例的网络安全。
- 删除安全组规则：当安全组规则入方向、出方向源地址/目的地址有变化时，或者不需要开放某个端口时，您可以参考**[删除安全组规则](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0006.html)**进行安全组规则删除。
1. 登录[华为云服务器控制台](https://console.huaweicloud.com/ecm/?agencyId=084d9251a8bf46ef9c4d7c408f8b21e8&region=cn-north-4&locale=zh-cn#/ecs/manager/vmList)，查看一键部署创建的弹性云服务及其绑定的弹性公网IP。
   
   图1云服务器   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001950543628.png)
   
   
2. 打开业务虚拟机所属的[子网](https://console.huaweicloud.com/vpc/?agencyId=084d9251a8bf46ef9c4d7c408f8b21e8&region=cn-north-4&locale=zh-cn#/vpc/subnets)，单击"IP地址管理"查看虚拟IP。
   
   图2VIP   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001393606081.png)
   
   
3. 使用远程连接工具，登录三台云服务器。管理员账户为root。 
   图3使用远程连接软件登录   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001383508941.png)
   
   
4. 或者通过[华为云服务器控制台](https://console.huaweicloud.com/ecm/?agencyId=084d9251a8bf46ef9c4d7c408f8b21e8&region=cn-north-4&locale=zh-cn#/ecs/manager/vmList)，选择以{ecs_name}名称为前缀的云服务器，选择"远程登录"方式登录服务器。
   
   图4VNC远程登录   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001343011658.png)
   图5VNC登录界面   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001343171450.png)
   
   
5. 查看安全组。打开[安全组控制台](https://console.huaweicloud.com/vpc/?agencyId=084d9251a8bf46ef9c4d7c408f8b21e8&region=cn-north-4&locale=zh-cn#/vpc/secGroups)，找到以虚拟私有云VPC名称为前缀的安全组，单击进入查看该方案创建的安全组规则。
   
   图6安全组   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001983418809.png)
   
   
6. 解绑弹性公网IP。注意，在一键部署成功后等待大约15分钟，环境部署成功后，方可解绑。登录[云服务器控制台](https://console.huaweicloud.com/hecsx/?agencyId=&locale=zh-cn&region=cn-north-4#/ecs/manager/xList)，选择该解决方案创建的云服务器，分别单击云服务器绑定的公网IP地址，进入弹性公网IP控制台。
   
   图7解绑EIP   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001983443061.png)
   
   
7. 单击"解绑\>确定"，进行公网IP解绑。 
   图8释放EIP   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001951324786.png)
   图9确认释放   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001983284285.png)
   
   
8. 单击"更多\>释放\>确定"，释放弹性公网IP。 
   图10释放EIP   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001983447697.png)
   图11确认释放   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001983447865.png)
   
   
#### 环境初始化
服务器重启后，有可能导致集群服务停止，需要用户重新手动启动服务，下面是手动开启服务的介绍。
1. 重新配置虚拟IP。登录主数据库服务器，执行ifconfig eth0:1 VIP/24命令，VIP为[3.3步骤3]或[3.2步骤9](https://support.huaweicloud.com/mhamysql-ctf/mhamysql_05.html#mhamysql_05__li555211694712)中获取的VIP地址。
   
   图12重新配置VIP   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001392465117.png)
   
   
2. 开启MHA服务。登录MHA Manager服务器名称后缀为slave2，执行mha_app1_start命令启动MHA监控服务。检查mha状态为"running"，则集群服务启动成功。 
   图13开启MHA服务   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001341985328.png)
   
   
 
#### MySQL使用
该解决方案默认创建三台Flexus云服务器X实例，分别安装Mysql-5.7.34版本的数据库，一主（后缀名为master）两从（后缀名为slave1、slave2）。MySQL管理用户用户组默认创建mysql，服务端口默认开启3306。主数据库上创建主从复制账户repl，密码同ECS初始化密码，允许登录地址为192.168.100.0/24网段。MHA Manger默认安装在从数据库slave2上，管理账户mha，密码同ECS初始化密码。
查看主从数据库复制状态
```
SHOW SLAVE STATUS\G;
```
图14从数据库复制状态   
![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001343502716.png)
在主数据库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.%';
```
![](https://support.huaweicloud.com/mhamysql-ctf/public_sys-resources/note_3.0-zh-cn.png)
- 修改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，密码为ECS初始化密码，配置文件路径：/datadisk/mha/conf/app1.cnf。
**MHA管理命令：**
主从数据库互信检查
```
masterha_check_ssh  --conf=/datadisk/mha/conf/app1.cnf
见图15，出现“All SSH connection tests passed successfully”则说明三台服务器可以互相免密登录
```
图15互信检查   
![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001343182452.png)
主从数据库状态检查
```
masterha_check_repl  --conf=/datadisk/mha/conf/app1.cnf
见图16，出现“MySQL Replication Health is OK”则说明主从状态良好
```
图16主从数据库状态   
![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001343182344.png)
启动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
   ```
   图17日志   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001393754437.png)
   
   
2. 关闭主数据服务： 
   ```
   systemctl stop mysqld
   ```
   
   
3. 回到MHA Manager服务器，查看日志，出现"Master failover to ......completed successfully." 
   图18故障转移   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001343355592.png)
   
   
4. 登录从数据库slave1，查看虚拟IP漂移成功。 
   图19VIP漂移成功   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001343196076.png)
   
   
5. 查看MHA Manager运行状态，此时MHA Manager已经完成工作，处于停止状态。 
   ```
   mha_app1_status
   ```
   图20MHA完成故障转移   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001332670186.png)
   
   
6. 登录收件人邮箱查看报警邮件。 
   图21报警邮件   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001343198308.png)
   
   
 
#### 故障恢复
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
   ```
   
   
 
#### 手动切换
1. 手动切换主数据库，必须先停止MHA服务： 
   ```
   mha_app1_stop
   ```
   
   
2. 然后在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. 代表切换成功
   ```
   图22手动在线切换   
   ![](https://support.huaweicloud.com/mhamysql-ctf/zh-cn_image_0000001734910666.png)
   
   
3. 在新的主数据库（192.168.100.111）查看VIP漂移成功。 
   ```
   ifconfig
   ```
   
   
4. 在MHA Manager服务器上开启MHA服务即可。 
   ```
   mha_app1_start
   mha_app1_status
   ```
   
   
 
