2 Star 0 Fork 1

HuaweiCloudDeveloper / huaweicloud-solution-deploy-a-highly-available-MHA-MySQL-cluster

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

[TOC]

解决方案介绍

该解决方案基于开源软件MHA构建,快速帮助用户在华为云服务器上完成高可用的MySQL集群部署。MHA(Master High Availability)是一款成熟且开源的MySQL高可用程序,主要提供心跳检测、主从复制、故障转移,并发送告警邮件。适用于需要高可用性、数据完整性以及近乎不间断的主服务器维护等场景。

解决方案实践详情页面地址:https://www.huaweicloud.com/solution/implementations/deploy-a-highly-available-mha-mysql-cluster.html

架构图

方案架构

架构描述

该解决方案会部署如下资源:

  1. 创建3台Linux弹性云服务器,加入同一个云服务器组,配置反亲和策略,跨可用区部署,并分别安装MHA和MySQL软件。
  2. 创建虚拟IP(VIP),用于MySQL数据库主从切换。
  3. 创建3条弹性公网IP,用于MHA和MySQL环境部署及后期发生故障后发送告警邮件。
  4. 创建安全组,可以保护弹性云服务器的网络安全,通过配置安全组规则,限定云服务器的访问端口。

组织结构

huaweicloud-solution-deploy-a-highly-available-MHA-MySQL-cluster
├── deploy-a-highly-available-MHA-MySQL-cluster.tf.json -- 资源编排模板
├── userdata
    ├── initialize-master.sh  -- 主数据脚本配置文件
    ├── initialize-slave1.sh  -- 从数据脚本配置文件
    ├── initialize-slave2.sh  -- 从数据库及MHA Manager脚本配置文件

开始使用

该解决方案默认创建三台弹性云服务器,分别安装Mysql-5.7.34版本的数据库,一主(后缀名为matser)两从(后缀名为slave1、slave2)。MySQL管理用户用户组默认创建mysql,服务端口默认开启3306。主数据库上创建主从复制账户repl,密码同ECS初始化密码,允许登录地址为192.168.100.0/24网段。主数据库绑定虚拟IP,主从切换时,虚拟IP自动切换至新的主数据库。

MHA Manager安装在从数据库slave2中,一个MHA可以管理多套主从,只需要创建不同的配置文件即可,方案初始化时默认创建一套主从配置文件,MHA管理的用户默认mha,密码为ECS初始化密码,配置文件路径:/mha/conf/app1.cnf。

1、登陆华为云服务器控制台,找到该方案创建的三台弹性云服务器,使用远程连接工具登陆服务器。

图1 弹性云服务器 弹性云服务器

2、进入两台从数据库,输入以下命令,查看主从复制状态:

mysql -uroot
SHOW SLAVE STATUS\G;

图2 主从复制状态

主从复制状态

3、登陆MHA Manager管理服务器,输入:masterha_check_ssh --conf=/mha/conf/app1.cnf,检查主从数据库互信状态。

图3 主从数据库互信状态 主从数据库互信状态

4、在MHA Manager管理服务器,输入:masterha_check_repl --conf=/mha/conf/app1.cnf,检查主从数据库状态。

图4 主从数据库状态

主从数据库状态

5、在MHA Manager管理服务器,输入:mha_app1_status,检查MHA运行状态。

图5 MHA运行状态

MHA运行状态

6、在MHA Manager管理服务器,输入:tail -f /mha/logs/manager,查看日志变化。

7、当发生故障时,MHA Manager管理服务器会自动完成主从切换,并发送告警邮件。用户收到报警邮件后可以去人工检查主数据的故障并处理。完成一次故障转移后,MHA Manager会自动停止,需要用户手动去启动。

图6 故障切换 故障切换

8、在新的主数据库(192.168.100.112)查看VIP漂移成功:

ifconfig

图7 VIP挂载

VIP挂载

9、在主数据库上重新启动MySQL服务,将其作为从数据库加入集群。

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;

10、修改MHA Manager配置文件,将旧主数据库加入集群:

vim /mha/conf/app1.cnf
[server1]
candidate_master=1
check_repl_delay=0
hostname=192.168.100.111
port=3306
systemctl start mysqld.service

11、在MHA Manager服务器上重新开启MHA服务即可。

mha_app1_start
mha_app1_status

12、手动切换主数据库,必须先停止MHA服务:

mha_app1_stop

13、然后在MHA Manager上运行以下命令,进行手动在线切换主从数据库:

masterha_master_switch --conf=/mha/conf/app1.cnf --master_state=alive --new_master_host=192.168.0.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. 代表切换成功

图8 手动在线切换 手动在线切换

14、在新的主数据库(192.168.100.112)查看VIP漂移成功:

ifconfig

14、在MHA Manager服务器上重新开启MHA服务即可:

mha_app1_start
mha_app1_status
Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

云上自建MySQL集群 展开 收起
Shell
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/HuaweiCloudDeveloper/huaweicloud-solution-deploy-a-highly-available-mha-mysql-cluster.git
git@gitee.com:HuaweiCloudDeveloper/huaweicloud-solution-deploy-a-highly-available-mha-mysql-cluster.git
HuaweiCloudDeveloper
huaweicloud-solution-deploy-a-highly-available-mha-mysql-cluster
huaweicloud-solution-deploy-a-highly-available-MHA-MySQL-cluster
master-dev

搜索帮助