mysql 主从复制 读写分离 MHA

在高可用性和高性能的数据库系统中,MySQL主从复制、读写分离和MHA(Master High Availability)是重要的技术手段。下面详细介绍它们的概念、配置方法和实践。

1. MySQL 主从复制

概念

MySQL主从复制是一种从主数据库(Master)到一个或多个从数据库(Slave)的数据复制机制。主库上的数据变更会异步地复制到从库,从而实现数据的冗余备份和读写分离。

配置方法
  1. 配置主库

    • 编辑my.cnf文件:
      [mysqld]
      server-id=1
      log-bin=mysql-bin
      
    • 重启MySQL服务:
      sudo systemctl restart mysql
      
    • 创建用于复制的用户并授权:
      CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
      GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
      FLUSH PRIVILEGES;
      
    • 获取主库的二进制日志位置:
      SHOW MASTER STATUS;
      
  2. 配置从库

    • 编辑my.cnf文件:
      [mysqld]
      server-id=2
      
    • 重启MySQL服务:
      sudo systemctl restart mysql
      
    • 配置从库:
      CHANGE MASTER TOMASTER_HOST='master_host_ip',MASTER_USER='replica',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=position;
      START SLAVE;
      
    • 检查复制状态:
      SHOW SLAVE STATUS\G;
      

2. 读写分离

读写分离是将写操作定向到主库,而将读操作定向到从库,从而提高系统的读性能。实现读写分离的方法有多种,常见的方法是使用中间件,如ProxySQL或MySQL Router。

ProxySQL 配置方法
  1. 安装ProxySQL

    sudo apt-get install proxysql
    
  2. 配置ProxySQL

    • 登录到ProxySQL管理控制台:
      mysql -u admin -p -h 127.0.0.1 -P 6032
      
    • 配置主从服务器:
      INSERT INTO mysql_servers (hostgroup_id, hostname, port, weight) VALUES (1, 'master_host_ip', 3306, 1);
      INSERT INTO mysql_servers (hostgroup_id, hostname, port, weight) VALUES (2, 'slave_host_ip', 3306, 1);
      
    • 配置读写分离规则:
      INSERT INTO mysql_query_rules (rule_id, match_pattern, destination_hostgroup, apply) VALUES (1, '^SELECT', 2, 1);
      
    • 加载并保存配置:
      LOAD MYSQL SERVERS TO RUNTIME;
      SAVE MYSQL SERVERS TO DISK;
      LOAD MYSQL QUERY RULES TO RUNTIME;
      SAVE MYSQL QUERY RULES TO DISK;
      

3. MHA(Master High Availability)

MHA是一个自动化的主从复制故障切换解决方案,能够在主库出现故障时,自动选择新的主库并重新配置复制。

配置方法
  1. 安装MHA

    • 安装MHA Manager:
      sudo apt-get install mha4mysql-manager
      
    • 安装MHA Node:
      sudo apt-get install mha4mysql-node
      
  2. 配置MHA Manager

    • 创建配置文件:

      [server default]
      manager_workdir=/var/log/mha/app1
      manager_log=/var/log/mha/app1/manager.log
      user=manager
      password=password
      repl_user=replica
      repl_password=password
      ssh_user=root[server1]
      hostname=master_host_ip[server2]
      hostname=slave1_host_ip[server3]
      hostname=slave2_host_ip
      
    • 配置SSH免密登录:

      ssh-keygen -t rsa
      ssh-copy-id root@server1
      ssh-copy-id root@server2
      ssh-copy-id root@server3
      
  3. 启动MHA Manager

    • 启动MHA Manager:
      masterha_manager --conf=/etc/mha/app1.cnf
      
    • 检查MHA状态:
      masterha_check_status --conf=/etc/mha/app1.cnf
      

总结

通过配置MySQL主从复制、实现读写分离以及使用MHA进行高可用性管理,可以有效地提高数据库系统的性能和可靠性。这些技术手段不仅能分担数据库负载,还能在主库故障时快速恢复,确保系统的稳定运行。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx代理设置时能获取到源IP地址的方法

nginx通过http_x_forwarded_for限制来访IP示例_ngnix 根据header的x-forwarded-for限制接入-CSDN博客 名称ip客户端地址10.0.23.90nginx服务器地址110.0.202.48:18888,代理到10.0.204.82:8888nginx服务器地址210.0.204.82:8888,代理到10.0.204.82:8887后…

自写ApiTools工具,功能参考Postman和ApiPost

近日在使用ApiPost的时候,发现新版本8和7不兼容,也就是说8不支持离线操作,而7可以。 我想说,我就是因为不想登录使用才从Postman换到ApiPost的。 众所周知,postman时国外软件,登录经常性抽风,…

leetcode 1555 银行账号概要(postgresql)

需求 用户表: Users --------------------- | Column Name | Type | --------------------- | user_id | int | | user_name | varchar | | credit | int | --------------------- user_id 是这个表的主键。 表中的每一列包含每一个用户当前的额度信息。 交易表&…

使用 Elastic Observability 中的 OpenTelemetry 进行基础设施监控

作者:来自 Elastic ISHLEEN KAUR 将 OpenTelemetry 与 Elastic Observability 相结合,形成应用程序和基础设施监控解决方案。 在 Elastic,我们最近决定全面采用 OpenTelemetry 作为首要的数据收集框架。作为一名可观察性工程师,我…

分享5款ai头像工具,助你轻松实现社交新形象

如今,无论是社交媒体上的个人形象塑造,还是虚拟世界中的角色扮演,一个独特而吸引人的AI头像都能成为你个性化的代表。 例如,ai头像男古风通常代表着一种对传统文化的尊重和热爱;而现代简约头像可能代表着一种追求简洁…

Mongodb集合操作

文章目录 1、进入容器2、如果数据库不存在,则创建数据库,否则切换到指定数据库3、在 MongoDB 中,创建集合不是必须操作。当你插入一些文档时,MongoDB 会自动创建集合。4、查看数据库列表5、查看集合6、显示创建集合7、删除集合 1、…

百度竞价托管如何判断关键词出价是否偏高

在百度竞价推广中,关键词出价的高低直接影响着广告的展示位置、点击率以及最终的转化效果。然而,过高的出价不仅会增加推广成本,还可能导致预算的浪费。因此,作为百度竞价托管 www.pansem.com 的专业团队,如何准确判断…

springboot校园跑腿服务系统-计算机毕业设计源码15157

摘要 本文介绍了一种基于Springboot和uniapp的校园跑腿服务系统的设计与实现。该系统旨在为大学校园提供一种方便快捷的跑腿服务,满足学生和教职员工的日常需求。首先,系统采用了Springboot作为后端框架,利用其轻量级、高效的特性&#xff0c…

httpx,一个网络请求的 Python 新宠儿

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能…

计算机网络-七层协议栈介绍

之前介绍了网络世界的构成,从宏观角度介绍了网络设备和网络架构,链接: link,但是这种认识过于粗糙,过于肤浅。网络本质上是用于主机之间的通信,是端对端的连接通信,两台计算机可能距离很远,主机…

thinkPHP开发的彩漂网站源码,含pc端和手机端

源码简介 后台thinkPHP架构,页面程序双分离,Mysql数据库严谨数据结构、多重数据审核机制、出票机制和监控机制,html5前端技术适用移动端,后台逻辑更多以server接口可快捷实现对接pc和ap,下载会有少量图片素材丢失,附件有下载说明前端demo账户密码和后台管理地址管理员账户密码…

C 语言动态链表

线性结构->顺序存储->动态链表 一、理论部分 从起源中理解事物,就是从本质上理解事物。 -杜勒鲁奇 动态链表是通过结点(Node)的集合来非连续地存储数据,结点之间通过指针相互连接。 动态链表本身就是一种动态分配内存的…

Java 8-函数式接口

目录 一、概述 二、 函数式接口作为方法的参数 三、函数式接口作为方法的返回值 四、 常用的函数式接口 简单总结 简单示例 4.1 Consumer接口 简单案例 自我练习 实际应用场景 多线程处理 4.2 Supplier接口 简单案例 自我练习 实际应用场景 配置管理 4.3 Func…

TypeError: Components is not a function

Vue中按需引入Element-plus时,报错TypeError: Components is not a function。 1、参考Element-plus官方文档 安装unplugin-vue-components 和 unplugin-auto-import这两款插件 2、然后需要在vue.config.js中配置webPack打包plugin配置 3、重新启动项目会报错 T…

Java----反射

什么是反射? 反射就是允许对成员变量、成员方法和构造方法的信息进行编程访问。换句话来讲,就是通过反射,我们可以在不需要创建其对象的情况下就可以获取其定义的各种属性值以及方法。常见的应用就是IDEA中的提示功能,当我…

鸿蒙(HarmonyOS)自定义Dialog实现时间选择控件

一、操作环境 操作系统: Windows 11 专业版、IDE:DevEco Studio 3.1.1 Release、SDK:HarmonyOS 3.1.0(API 9) 二、效果图 三、代码 SelectedDateDialog.ets文件/*** 时间选择*/ CustomDialog export struct SelectedDateDialog {State selectedDate:…

声学气膜馆的优势:卓越声学性能与多样化应用—轻空间

随着科技的发展和人们对音质要求的提高,声学气膜馆逐渐成为现代建筑中的重要组成部分。声学气膜馆不仅在设计和声学性能上有显著优势,还在提高场馆舒适度、增加活动多样性以及带来经济效益方面表现突出。 提升声学环境质量 声学气膜馆通过利用先进的声学…

未来GenAI 怎样逐步改变搜索?

欢迎来到雲闪世界。人工智能的进步正在将传统搜索引擎转变为应答机。这一转变是由网络搜索领域的新老参与者共同推动的,并正在影响世界各地人们获取信息的方式。 谁是基于 GenAI 的搜索的主要参与者?他们如何提出解决方案?这对用户有何影响&a…

18万就能买华为智驾车,你当不了韭菜!

文 | AUTO芯球 作者 | 雷慢 万万没想到啊, 把智能驾驶汽车价格打到最低的, 居然是智驾实力最强的华为, 这你敢信吗 就现在,17.99万就能买华为智驾的车了, 它就是长安和华为合作的首个车型, 深蓝S07…

【Spring Boot教程:从入门到精通】掌握Spring Boot开发技巧与窍门(三)-配置git环境和项目创建

主要介绍了如何创建一个Springboot项目以及运行Springboot项目访问内部的html页面!!! 文章目录 前言 配置git环境 创建项目 ​编辑 在SpringBoot中解决跨域问题 配置Vue 安装Nodejs 安装vue/cli 启动vue自带的图形化项目管理界面 总结 前言 …