高可用数据库集群mariadb(mysql)

news2024/10/6 10:28:22

    一、概述
        是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件
    二、端口号
                                               22
    三、高可用MHA简述
        目前在mysql高可用方面是一个成熟的方案,是一套优秀的高可用环境下故障切换和主从提升的高可用软件
    四、原理
        组成
                                    MHA Manager(管理节点)
                                    MHA Node(数据节点)
        在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。

        目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。MHA 适合任何存储引擎, 只要能主从复制的存储引擎它都支持,不限于支持事物的 innodb 引擎。

        我们自己使用其实也可以使用一主一从,但是master主机宕机后无法切换,以及无法补全二进制日志。master的mysqld进程crash(停止工作)后,还是可以切换成功,以及补全二进制日志
    五、简述流程
        1、先找服务器
                            至少四台
                            安装系统centos5.7版
        2、数据库安装
        3、免密设置
                            (1)生成密钥

                                        ssh-keygen -t rsa

                            (2)复制密钥

                                        ssh-copy-id -i

                            (3)粘贴

                                        scp

        4、主从复制
        5、测试
    六、架构
        
    七、安装部署
        1、安装
            (1)环境
                                centos7.5.1804
                                准备四台机器

 

                    角色                  节点                ip                       说明
                    manager                node1        192.168.174.130        管理
                    master                node2        192.168.174.131        主
                    slave1                node3        192.168.174.132        从
                    slave2                  node4        192.168.174.133      从

            (2)yum安装

                epel-release
                mariadb mariadb-server
                rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

            (3)修改配置文件

                vim /etc/my.cnf

                    
            (4)重启服务

                systemctl restart mysqld

            (5)授权给从用户

                grant ...

            (6)查看状态

            (7)配置从服务器

                授权manager

            (8)创建manager配置文件

                /etc/mha_master
                /etc/mha_master/mha.cnf

            (9)对各个节点进行检测

            (10)检查mysql复制集群的连接配置参数是否ok

        2、部署
            1、主机名设置
                临时修改主机名

                    hostname 主机名

                永久修改主机名

                    hostnamectl set-hostname 主机名

            2、hosts文件修改
                                指定客户端用户跟IP

 [root@localhost ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.174.130 node1
192.168.174.131 node2
192.168.174.132 node3
192.168.174.133 node4

            3、关闭防火墙
                                    四台全关
            4、生成密钥

[root@node1 ~]# ssh-keygen -t rsa

[root@node2 ~]# ssh-keygen -t rsa

[root@node3 ~]# ssh-keygen -t rsa

[root@node4 ~]# ssh-keygen -t rsa

            5、复制密钥到代理服务器node1

              

[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@node3 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@node4 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1

            6、在node1查看是否已复制过来

[root@node1 ~]# cat /root/.ssh/authorized_keysau


                    
            7、将authorized_keysau密钥文件发送给node2/3/4

 

[root@node1 ~]# scp .ssh/authorized_keys root@node2:.ssh/
[root@node1 ~]# scp .ssh/authorized_keys root@node3:.ssh/
[root@node1 ~]# scp .ssh/authorized_keys root@node4:.ssh/

            8、测试免密登录

[root@node1 ~]# ssh node2

[root@node1 ~]# ssh node3

[root@node1 ~]# ssh node4

            9、master主服务器配置

[root@node2 ~]# yum -y install epel-release
[root@node2 ~]# yum -y install mariadb mariadb-server
[root@node2 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 

修改配置文件
[root@node2 ~]# vim /etc/my.cnf
server-id = 1
log-bin = master-log
relay-log = relay-log
skip_name_resolve
[root@node2 ~]# systemctl restart mariadb #重启mysql

            10、master主服务器操作                

[root@node2 ~]# mysql              #登录

#授权用户给从库使用
MariaDB [(none)]> grant replication slave on *.* to ‘slave’@'%' identified by '123'; 
Query OK, 0 rows affected (0.04 sec)

#授权用户给manager管理master使用
MariaDB [(none)]> grant all on *.* to ‘mha’@'%' identified by '123'; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show master status;                #查看数据库位置及文件名
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000003 |      529 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

            11、slave1从服务器操作

                

[root@node2 ~]# mysql              #登录

#授权用户给从库使用
MariaDB [(none)]> grant replication slave on *.* to ‘slave’@'%' identified by '123'; 
Query OK, 0 rows affected (0.04 sec)

#授权用户给manager管理master使用
MariaDB [(none)]> grant all on *.* to ‘mha’@'%' identified by '123'; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show master status;                #查看数据库位置及文件名
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000003 |      529 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

            12、slave2从服务器操作

              

[root@node4 ~]# yum -y install mariadb mariadb-server epel-release
[root@node4 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 
[root@node3 ~]# vim /etc/my.cnf                     #配置一下参数
server-id = 3                 
relay-log = relay-log         
log-bin = master-log         
read_only = ON               
relay_log_purge = 0           
skip_name_resolve              
log_slave_updates = 1
[root@node3 ~]# mysql                                       #登录

MariaDB [(none)]> change master to master_host='192.168.174.131',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529;                         #授权指定主服务器数据库
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> start slave;                              #开启从服务
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show slave status \G;                  #查看从数据库连接状态

#授权用户给manager管理slave使用  
MariaDB [(none)]> grant all on *.* to ‘slave’@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)                       #创建slave用户供管理服务器使用,与slave1用户一致


            13、manager管理服务器操作
                

[root@node4 ~]# yum -y install mariadb mariadb-server epel-release
[root@node4 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 
[root@node3 ~]# vim /etc/my.cnf                     #配置一下参数
server-id = 3                 
relay-log = relay-log         
log-bin = master-log         
read_only = ON               
relay_log_purge = 0           
skip_name_resolve              
log_slave_updates = 1
[root@node3 ~]# mysql                                       #登录

MariaDB [(none)]> change master to master_host='192.168.174.131',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529;                         #授权指定主服务器数据库
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> start slave;                              #开启从服务
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> show slave status \G;                  #查看从数据库连接状态

#授权用户给manager管理slave使用  
MariaDB [(none)]> grant all on *.* to ‘slave’@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)                       #创建slave用户供管理服务器使用,与slave1用户一致

            14、对各个节点进行检测

              

 [root@node1 ~]# masterha_check_ssh --conf=/etc/mha_master/mha.cnf

                    
            15、检查管理的MySQL复制集群的连接配置参数是否OK

 

                

 [root@node1 ~]# masterha_check_ssh --conf=/etc/mha_master/mha.cnf

                    

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/661823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在用户界面线程上等待的危险性

我们做这么一个假设哈。 如果有一个线程,它拥有一个窗口,则在这个线程的整个运行过程中,我们都不应该调用 Sleep 函数。为什么? 因为 Sleep 调用会导致线程在睡眠等待期停止处理窗口消息。即使对于持续时间较短的睡眠也是如此&a…

【正点原子STM32连载】 第三十三章 DAC实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第三…

亚马逊云服务器EC2开通Windows系统实例和远程RDP连接远程桌面

在这篇文章中,我们准备详细的亲测记录开通亚马逊云服务器EC2开通Windows系统。这里需要提醒的是,如果我们是初次免费体验亚马逊云服务器账户的话,是有支持单个云服务器750小时免费,如果我们超过部分是需要支付的,所以如…

探究贴纸滤镜和美颜SDK的技术实现原理

在移动应用高需求的背景下,贴纸滤镜和美颜SDK成为了移动应用中不可或缺的功能之一。那么,这些功能是如何实现的呢?本文将探究贴纸滤镜和美颜SDK的技术实现原理。 一、贴纸滤镜的技术实现原理 贴纸滤镜是一种可以在图片或视频上添加贴纸、滤镜…

1、DuiLib的编译和运行

文章目录 1、原生DuiLib的编译和运行1.1、下载并解压成这个样子1.2、打开.sln解决方案文件1.3、编译成功 2、网易DuiLib编译和运行2.1、下载并解压成这个样子2.2、打开.sln解决方案文件2.3、编译成功 3、腾讯DuiLib编译和运行vs 20173.1、下载并解压成这个样子3.2、打开.sln解决…

个人IP打造全过程:如何打造出属于自己的个人IP?

随着互联网的快速发展,个人IP已经逐渐成为一个热门话题。拥有自己的个人IP可以为你带来更多的机会和收益,让你在竞争激烈的市场中脱颖而出。但是,要想打造自己的个人IP并不是一件容易的事情。本文将为你介绍如何打造属于自己的个人IP。#IP# 一…

Burp Suite 功能详解(渗透测试工具)

一、抓包。 找到 代理--拦截--打开自带浏览器(这里也可以自己找扩展设置代理,但还要添加安全证书等等,我觉得太麻烦了,还不如直接使用Burp Suite自带的浏览器抓包)。 这是Burp Suite自带网页的页面。 点击开启拦截。 …

VMware Cloud Director Availability 4.6 | 灾难恢复和迁移 | DRaaS

VMware Cloud Director Availability 4.6 | 灾难恢复和迁移 | DRaaS 请访问原文链接:https://sysin.org/blog/vmware-cloud-director-availability-4/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org VMware Cloud …

二维码在隐患排查中的应用:扫码上报,实时通知

正值安全生产月,对企业而言隐患排查是安全管理的重要环节,众多企业设立了安全部门,部门内的相关人员会定期对生产设备、作业场所、作业人员等进行检查,以确保安全隐患的消除,从而预防事故的发生。 传统的隐患排查主要…

2018年全国硕士研究生入学统一考试管理类专业学位联考写作试题

2018年1月真题 四、写作:第56~57小题,共65分。其中论证有效性分析30 分,论说文35分。 56.论证有效性分析: 分析下述论证中存在的缺陷和漏洞,选择若干要点,写一篇600字左右的文章,对该论证的有…

掌握Spring Cloud:打造高效可靠的微服务生态系统

1、SpringCloud概述 Spring Cloud是一个用于构建分布式系统的开源框架,它提供了一系列的组件和工具,用于实现微服务架构中的各项核心功能。本文将重点介绍Spring Cloud中的关键组件,并详细探讨它们的功能和作用。 网关:Zuul/Gat…

自动化测试-selenium基础操作

元素操作 方法: 1、.send_keys() # 输入方法 2、.click() # 点击方法 3、.clear() # 清空方法# 导包 from time import sleep from selenium import webdriver# 实例化浏览器 driver webdriver.Chrome()# 打开网址 driver.get(https://www.baidu.com/)# 需求 e…

HTTP项目常见状态码笔记(200,302,400,403,404,405,500...),

目录 认识 "状态码" (status code) 出现200 403 Forbidden 出现404 404 Not Found 出现 405 Method Not Allowed 出现 500 Internal Server Error 504 Gateway Timeout 302 Move temporarily 301 Moved Permanently 出现 "空白页面" 出现 &qu…

制作内网离线百度地图

下载离线地图瓦片 通过百度ak(没有的可以去百度官网自行申请下载),拉取下列git 项目,可以免费下载离线瓦片 https://gitee.com/jinqianwang/baidu-offline-map-download 目录结构: 使用步骤: 第一步&am…

Midjourney绘画常用聊天界面介绍

刚开始使用MJ (Midjourney) 的小伙伴可能对这个复杂的界面有点迷糊,网站也无法翻译。 实不相瞒刚开始的时候我也一脸懵逼,对于小白来说启动门槛很高,但是认识之后就一点也不复杂。 接下来我们分三步认识Midjourney的界面: 第一步: 打开Mid…

基于Java+Swing+Mysql实现酒店管理系统

基于JavaSwingMysql实现酒店管理系统 一、系统介绍二、功能展示1.用户登陆2.首页3.开房4.退房5.房间信息6、顾客信息 三、数据库四、其它1.其他系统实现2.获取源码 一、系统介绍 系统功能:用户登陆、验证码验证、开房、退房、房间信息、顾客信息 运行环境&#xf…

【im群发推送软件】(Apple Push Notification service):APNs 是苹果提供的推送服务

iMessage 推送需要您对苹果的推送服务和相关开发技术有一定的了解,并熟悉应用程序开发的相关知识。以下是一些关键的方面和步骤,供您参考: 开发者账号和证书:您需要注册苹果开发者账号,并获取开发者证书用于推送服务。…

PEFAT:通过伪损失估计和特征对抗训练增强半监督医学图像分类

文章目录 PEFAT: Boosting Semi-supervised Medical Image Classification via Pseudo-loss Estimation and Feature Adversarial Training摘要本文方法Feature Adversarial Training 实验结果 PEFAT: Boosting Semi-supervised Medical Image Classification via Pseudo-loss …

PIQN:Parallel Instance Query Network for Named Entity Recognition

原文链接:https://aclanthology.org/2022.acl-long.67.pdf ACL 2022 介绍 问题 将命名实体识别任务作为阅读理解任务(MRC:machine reading comprehensive)来做,存在3个问题: 1)一类问题只能提取…