当前位置:   article > 正文

数据库之MHA高可用集群部署及故障切换_mha一主两从高可用集群示意图:

mha一主两从高可用集群示意图:

数据库之MHA高可用集群部署及故障切换


前言

在实际生产环境中,当MySQL主从复制与读写分离不能满足实际需求时,就需要考虑MySQL高可用群集的部署配置。


一 部署原由

1.1 原由概述:

传统的MySQL主从架构存在的问题

   单点故障

 
 
 
    • 1

    二 部署前置知识点

    2.1 MHA概述:(基于一主多次架构)

    一套优秀的MySQL高可用环境故障切换和主从复制的软件
    
    • 1

    MySQL故障过程中,MHA能做到0-30秒内自动完成故障切换

      2.2 MHA的组成

      MHA Manager(管理节点)(监控端)
      
      • 1

      MHA Node (数据节点)(被监控端)

        2.3 MHA特点

          自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失
        
        • 1

        使用半同步复制,可以大大降低数据丢失的风险

        目前MHA支持一主多从架构,最小三台服务,即一主两从

          2.3.1 复制区别分类

          1.异步复制

          主库将事务Binlog事件写入到Binlog文件中,此时主库只会通知一下Dump线程发送这些新的Binlog,然后主库就会继续处理提交操作,而此时不会保证这些Binlog传到任何一个从库节点上。
          
           
           
           
            • 1

            2.全同步复制

            当主库提交事务之后,所有的从库节点必须收到,APPLY并且提交这些事务,然后主库线程才能继续做后续操作。这里面有一个很明显的缺点就是,主库完成一个事务的时间被拉长,性能降低。
            
             
             
             
              • 1

              3.半同步复制

              是介于全同步复制和异步复制之间的一种,主库只需要等待至少一个从库节点收到并且Flush Binlog到Relay Log文件即可,主库不需要等待所有从库给主库反馈。同时,这里只是一个收到的反馈,而不是已经完全执行并且提交的反馈,这样就节省了很多时间。
              
               
               
               
                • 1

                三 部署操作

                3.1 部署环境图示

                在这里插入图片描述

                3.2 部署思路:

                1.MHA架构搭建流程

                1.数据库安装
                2.一主两从
                3.MHA搭建
                
                 
                 
                 
                  • 1
                  • 2
                  • 3

                  2.故障模拟

                  1.主库故障失效
                  2.备选主库成为主库
                  3.从库2将备选主库指向为主库
                  
                   
                   
                   
                    • 1
                    • 2
                    • 3

                    3.故障修复

                    1.故障库修复重新上线启动
                    2.在修复好的库上建立新主从关系
                    3.修改manager配置文件,添加修好的库的记录
                    4.重启mha
                    
                     
                     
                     
                      • 1
                      • 2
                      • 3
                      • 4

                      4.案例实现思路

                      安装 MySQL 数据库
                      配置 MySQL 一主两从
                      安装 MHA 软件
                      配置无密码认证
                      配置 MySQL MHA 高可用
                      模拟 master 故障切换
                      
                       
                       
                       
                        • 1
                        • 2
                        • 3
                        • 4
                        • 5
                        • 6

                        3.3 部署准备

                        1.设备

                        mysql-server;20.0.0.10
                        mysql-slvae1:   20.0.0.11
                        mysql-slvae2:   20.0.0.12
                        mha-manager:  20.0.0.13
                        
                         
                         
                         
                          • 1
                          • 2
                          • 3
                          • 4

                          2.重命名

                          [root@server1 ~]# hostnamectl set-hostname mysql-server
                          [root@server1 ~]# bash
                          [root@server2 ~]# hostnamectl set-hostname mysql-slvae1
                          [root@server2 ~]# bash
                          [root@client1 ~]# hostnamectl set-hostname mysql-slvae2
                          [root@client1 ~]# bash
                          [root@server1 ~]# hostnamectl set-hostname mha-manager
                          [root@server1 ~]# bash
                          
                           
                           
                           
                            • 1
                            • 2
                            • 3
                            • 4
                            • 5
                            • 6
                            • 7
                            • 8

                            3.4 部署流程

                            首先
                            完成配置 MySQL一主两从的主从同步复制部署

                            添加
                            cmake-2.8.6.tar.gz
                            mysql-5.6.36.tar.gz

                            安装依赖包

                            [root@master ~]#  yum -y install ncurses-devel gcc-c++ perl-Module-Install
                            
                             
                             
                             
                              • 1

                              在这里插入图片描述

                              2.安装 gmake 编译软件
                              解压缩

                              [root@mysql-server ~]# tar zxvf cmake-2.8.6.tar.gz
                              [root@mysql-serverr ~]# cd cmake-2.8.6 
                              [root@master cmake-2.8.6]# ./configure             设置配置
                              [root@master cmake-2.8.6]#  gmake && gmake install  编译安装
                              
                               
                               
                               
                                • 1
                                • 2
                                • 3
                                • 4

                                安装 MySQL 数据库

                                [root@master cmake-2.8.6]# cd
                                [root@master ~]#  tar -zxvf mysql-5.6.36.tar.gz 解压缩 mysql
                                [root@master ~]#  cd mysql-5.6.36
                                [root@master mysql-5.6.36]#  cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc
                                [root@master mysql-5.6.36]# make && make install 编译安装
                                [root@master mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf  
                                [root@master mysql-5.6.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
                                [root@master mysql-5.6.36]# cd
                                [root@master ~]# chmod +x /etc/rc.d/init.d/mysqld  添加权限
                                [root@master ~]#  chkconfig --add mysqld          加入系统管理
                                
                                 
                                 
                                 
                                  • 1
                                  • 2
                                  • 3
                                  • 4
                                  • 5
                                  • 6
                                  • 7
                                  • 8
                                  • 9
                                  • 10

                                  在这里插入图片描述

                                  [root@master ~]#  echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile  环境变量设置
                                  [root@master ~]#  source /etc/profile     配置生效
                                  [root@master ~]# groupadd mysql           加入组mysql
                                  [root@master ~]# useradd -M -s /sbin/nologin mysql -g mysql 创建不可登录,没有宿主的用户
                                  [root@master ~]# chown -R mysql.mysql /usr/local/mysql  添加权限
                                  [root@master ~]# mkdir -p /data/mysql     创建目录
                                  [root@master ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
                                  
                                   
                                   
                                   
                                    • 1
                                    • 2
                                    • 3
                                    • 4
                                    • 5
                                    • 6
                                    • 7

                                    修改 Master 的主配置文件/etc/my.cnf 文件,三台服务器的 server-id 不能一样,另外两台写 2 和 3 即可!写入内容如下:

                                    设置数据库密码

                                    mysqladmin -uroot -p password 'abc123'
                                    
                                     
                                     
                                     
                                      • 1

                                      在主数据库上

                                      [root@mysql-server ~]# vi /etc/my.cnf   编辑配置文件
                                      [root@mysql-server ~
                                      • 1
                                      声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/294785
                                      推荐阅读
                                      相关标签
                                        

                                      闽ICP备14008679号