MySQL高可用集群MHA配置

本文涉及的产品
全球加速 GA,每月750个小时 15CU
简介:

简介:

    MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,master节点故障后,管理节点会在slave节点里面选取一个节点提升为新master。要搭建MHA,要求一个复制集群中最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库。管理节点程序可以安装在从服务器上也可以单独安装一台服务器作为管理节点。

    管理节点程序分为Manager节点程序和Node节点程序。

Manager节点组件:

masterha_check_ssh:MHA依赖的SSH环境检测工具;

masterha_check_repl:MYSQL复制环境检测工具

masterha_manager:MHA服务主程序

masterha_check_status:MHA运行状态探测工具

masterha_master_monitor:MYSQL master节点可以性监测工具

masterha_master_switch:master节点切换工具

masterha_conf_host:添加或删除配置节点;

masterha_stop;关闭MHA服务的工具

Node节点组件:

save_binary_logs:保存和复制master的二进制日志

apply_diff_relay_logs:识别差异的中继日志事件并应用于其他slave

filter_mysqlbinlog:去除不必要的ROLLBACK事件(MHA已不再使用这个工具)

purge_relay_logs:清除中继日志(不会阻塞SQL线程)

自定义扩展;

secondary_check_script:通过多条网络路由检测master的可用性;

master_ip_failover_script:更新application使用的masterip

shutdown_script:强制关闭master节点:

report_script:发送报告

init_conf_load_script:加载初始配置参数

master_ip_online_change_script:更新master节点ip地址


基础环境:

    d3908.jpg

 MHA管理工具下载链接:https://pan.baidu.com/s/1pMo93Nd 密码:27i2

    mha4mysql-manager-0.56-0.el6.noarch.rpm

    mha4mysql-node-0.56-0.el6.noarch.rpm

 配置过程:

        首先将三台服务器配置为主从复制

        三台服务器分别执行:yum install mairadb-server mariadb -y      

        [root@localhost ~]#  vim /etc/my.cnf

        在[mysqld]中加入如下内容:

        主服务器:

        innodb_file_per_table = 1

        skip_name_resolve = 1

        log-bin = master-bin

        relay-log = relay-bin

        server_id=1

        从服务器1:

        innodb_file_per_table = 1

        skip_name_resolve = 1

        log-bin = master-bin

        relay-log = relay-bin

        server_id = 2

        read_only = 1

        relay_log_purge = 0

        从服务器2:

        innodb_file_per_table = 1

        skip_name_resolve = 1

        log-bin = master-bin

        relay-log = relay-bin

        server_id = 3

        read_only = 1

        relay_log_purge = 0

        

        主服务器上:

        MariaDB [(none)]> show master status    #这一步一定要先执行,查看position后再创建用户,设置从服务器时用这个position,新创建的用户才能同步到从服务上,从服务器也需要这两个账号。因为主服务器故障时从服务器会被提升为主。

            -> ;

        +-------------------+----------+--------------+------------------+

        | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

        +-------------------+----------+--------------+------------------+

        | master-bin.000002 |      245 |              |                  |

        +-------------------+----------+--------------+------------------+

        1 row in set (0.00 sec)

        创建复制用户和管理节点用于管理的用户。

        MariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'172.16.6.%' identified by '123456';

        MariaDB [(none)]> grant all on *.* to 'admin'@'172.16.6.%' identified by 'admin';

        MariaDB [(none)]> flush privileges;

        

        从服务器1上执行:

        MariaDB [(none)]> change master to master_host='172.16.6.80',master_user='repluser',master_password='123456',master_log_file='master-bin.000002',master_log_pos=245;

        MariaDB [(none)]> start slave;

        MariaDB [(none)]> show slave status\G;

         Slave_IO_Running: Yes

         Slave_SQL_Running: Yes

        从服务器2上执行:

        MariaDB [(none)]> change master to master_host='172.16.6.80',master_user='repluser',master_password='123456',master_log_file='master-bin.000002',master_log_pos=245;

        MariaDB [(none)]> start slave;

        MariaDB [(none)]> show slave status\G;

         Slave_IO_Running: Yes

         Slave_SQL_Running: Yes

 

开始配置MHA:        

       配置SSH互通: (注意:配置方法有多种)

       在管理节点:172.16.6.79上面生成秘钥。直接拷贝私钥和公钥到三台数据库服务器上。

       [root@localhost ~]# ssh-keygen -t rsa -P ''

       [root@localhost ~]# cat .ssh/id_rsa.pub > .ssh/authorized_keys

       [root@localhost ~]# chmod go= .ssh/authorized_keys 

       [root@localhost ~]# scp .ssh/id_rsa .ssh/authorized_keys 172.16.6.80:/root/.ssh

       [root@localhost ~]# scp .ssh/id_rsa .ssh/authorized_keys 172.16.6.81:/root/.ssh

       [root@localhost ~]# scp .ssh/id_rsa .ssh/authorized_keys 172.16.6.82:/root/.ssh

                 

         安装EPEL源:

        [root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

        [root@localhost ~]# rpm -ivh epel-release-latest-7.noarch.rpm

        [root@localhost ~]# yum repolist      ##检查是否已添加至源列表

        安装管理节点程序:

        将下载的上传到管理节点上:

        [root@localhost ~]# yum install mha4mysql-*

        [root@localhost ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm  172.16.6.80:/root

        [root@localhost ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm  172.16.6.81:/root

        [root@localhost ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm  172.16.6.82:/root

        三个数据库节点分别执行: 

        [root@localhost ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y

        配置管理节点:

        [root@localhost ~]# mkdir /etc/masterha

        [root@localhost ~]# vi /etc/masterha/app1.cnf

        [server default]

        user=admin

        password=amdin

        manager_workdir=/data/masterha/app1

        manager_log=/data/masterha/app1/manager.log

        remote_workdir=/data/masterha/app1

        ssh_user=root

        repl_user=repluser

        repl_password=123456

        ping_interval=1

        

        [server1]

        hostname=172.16.6.80

        #ssh_prot=22222

        

        [server2]

        hostname=172.16.6.81

        #ssh_prot=22222

        candidate_master=1

        

        [server3]

        hostname=172.16.6.82

        #ssh_prot=22222

        candidate_master=1

        

        检测SSH互通:

         [root@localhost ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf 

        检测复制环境:

        [root@localhost ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf

        启动管理程序

        [root@localhost ~]# masterha_manager --conf=/etc/masterha/app1.cnf




     本文转自阿伦艾弗森 51CTO博客,原文链接:http://blog.51cto.com/perper/2060018,如需转载请自行联系原作者






相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
6月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
4月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
326 11
|
5月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
613 30
|
5月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
1396 26
|
5月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
6月前
|
SQL 关系型数据库 MySQL
seatunnel配置mysql2hive
本文介绍了SeaTunnel的安装与使用教程,涵盖从安装、配置到数据同步的全过程。主要内容包括: 1. **SeaTunnel安装**:详细描述了下载、解压及配置连接器等步骤。 2. **模拟数据到Hive (fake2hive)**:通过编辑测试脚本,将模拟数据写入Hive表。 3. **MySQL到控制台 (mysql2console)**:创建配置文件并执行命令,将MySQL数据输出到控制台。 4. **MySQL到Hive (mysql2hive)**:创建Hive表,配置并启动同步任务,支持单表和多表同步。
|
5月前
|
存储 Oracle 关系型数据库
MySQL 8.4 配置SSL组复制(八个步骤)
MySQL 8.4 配置SSL组复制(八个步骤)
289 0
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
665 1
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
255 62

推荐镜像

更多