【数据库】mysql架构之MMM,高可用同时实现读写分离

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 文章目录前言一、mmm架构1.0 思路1.1 架构

一、mmm架构

1.0 思路

  • 主从复制:先安装数据库–>主服务器授权,刷新授权–>从节点同步配置(需先获得主的文件名及偏移量)
  • 注:两个主需要互相做主从,为了故障转换之后数据能继续同步

1.1 架构

作用 IP地址 安装服务
主负载均衡器 192.168.13.10 mmm/mysql5.7
备负载均衡器 192.168.13.20 mmm/mysql5.7
节点服务器1 192.168.13.30 mmm/mysql5.7
节点服务器2 192.168.13.40 mmm/mysql5.7
monitor监控节点 192.168.13.50 mmm

1.2 主负载均衡

systemctl stop firewalld
setenforce 0
vim /etc/my.cnf
  server-id = 1
  log-error=/usr/local/mysql/data/mysql_error.log
  general_log=ON
  general_log_file=/usr/local/mysql/data/mysql_general.log
  slow_query_log=ON
  slow_query_log_file=mysql_slow_query.log
  long_query_time=5
  binlog-ignore-db=mysql,information_schema
  log_bin=mysql_bin
  log_slave_updates=true
  sync_binlog=1
  innodb_flush_log_at_trx_commit=1
  auto_increment_increment=2
  auto_increment_offset=1
scp /etc/my.cnf root@192.168.13.20:/etc/
scp /etc/my.cnf root@192.168.13.30:/etc/
scp /etc/my.cnf root@192.168.13.40:/etc/
systemctl restart mysqld
mysql -uroot -pabc123
  grant replication slave on *.* to 'replication'@'192.168.13.%' identified by '123456';
  show master status;
  #此处获得二进制日志文件名及偏移量,其他服务器配置主从复制时候需要
  grant super, replication client, process on *.* to 'mmm_agent'@'192.168.13.%' identified by '123456';
  grant replication client on *.* to 'mmm_monitor'@'192.168.13.%' identified by '123456';
  flush privileges;
  #为monitor服务器授权
  change master to master_host='192.168.13.20',master_user='replication',master_password='123456',master_log_file='mysql_bin.000001',master_log_pos=460;
  #此时的二进制文件名与偏移量是从master2获得的,原因:当故障转移后,能够和新主保持主从复制(可以先不执行这一步,等操作完master2再回来授权)
  show slave status\G
  #查看主从同步是够配置成功
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum -y install mysql-mmm*
cd /etc/mysql-mmm/
vim mmm_common.conf
  4行:cluster_interface       ens33
  8行:replication_password    123456
  10行:agent_password          123456
  14行:ip      192.168.13.10
  20行:ip      192.168.13.20
  26行:ip      192.168.13.30
  24-28行复制:24,,28 co 28
  31行:ip      192.168.13.40
  35行:hosts   db1, db2
  37行:ips     192.168.13.188
  41行:hosts   db3, db4
  43行:ips     192.168.13.198, 192.168.13.199
scp mmm_common.conf root@192.168.13.20:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.13.30:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.13.40:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.13.50:/etc/mysql-mmm/
systemctl start mysql-mmm-agent.service
systemctl enable mysql-mmm-agent.service

1.3 备负载均衡器

systemctl stop firewalld
setenforce 0
vim /etc/my.cnf
  server-id = 2
systemctl restart mysqld.service
mysql -u root -pabc123
  grant replication slave on *.* to 'replication'@'192.168.13.%' identified by '123456';
  show master status;
  #此处获得二进制日志文件名及偏移量,为了给master1使用
  change master to master_host='192.168.13.20',master_user='replication',master_password='123456',master_log_file='mysql_bin.000001',master_log_pos=460;
  #此时的二进制文件名与偏移量是从master1获得的,原因:为了保持数据一致性,随时可以进行故障转移
  grant super, replication client, process on *.* to 'mmm_agent'@'192.168.13.%' identified by '123456';
  grant replication client on *.* to 'mmm_monitor'@'192.168.13.%' identified by '123456';
  flush privileges;
  #为monitor服务器授权
  show slave status\G
  #查看主从同步是够配置成功
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum -y install mysql-mmm*
vim /etc/mysql-mmm/mmm_agent.conf
  6行:this db2
systemctl start mysql-mmm-agent.service
systemctl enable mysql-mmm-agent.service

1.4 从服务器

systemctl stop firewalld
setenforce 0
vim /etc/my.cnf
  server-id = 3
systemctl restart mysqld.service
mysql -u root -pabc123
  change master to master_host='192.168.13.10',master_user='replication',master_password='123456',master_log_file='mysql_bin.000001',master_log_pos=460;
  #与master1保持主从复制
  grant super, replication client, process on *.* to 'mmm_agent'@'192.168.13.%' identified by '123456';
  grant replication client on *.* to 'mmm_monitor'@'192.168.13.%' identified by '123456';
  flush privileges;
  #为monitor服务器授权
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum -y install mysql-mmm*
vim /etc/mysql-mmm/mmm_agent.conf
  6行:this db3
systemctl start mysql-mmm-agent.service
systemctl enable mysql-mmm-agent.service
#另外一台从服务器重复此操作,server-id = 4,6行:this db4。修改这两项即可

1.5 monitor服务器

systemctl stop firewalld
setenforce 0
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum -y install mysql-mmm*
vim /etc/mysql-mmm/mmm_mon.conf
  8行:ping_ips        192.168.13.10,192.168.13.20,192.168.13.30,192.168.13.40
  9行:auto_set_online     10
  20行:monitor_user        mmm_monitor
  21行:onitor_password    123456
systemctl restart mysql-mmm-monitor.service
mmm_control show
#检查各节点的情况,正确显示如下
  db1(192.168.13.10) master/ONLINE. Roles: writer(192.168.13.188)
  db2(192.168.13.20) master/ONLINE. Roles: 
  db3(192.168.13.30) slave/ONLINE. Roles: reader(192.168.13.198)
  db4(192.168.13.40) slave/ONLINE. Roles: reader(192.168.13.199)
#mmm高可用搭建完毕
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
72 15
|
2天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
2天前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
9天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
13天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
15天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
21天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
1月前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
158 0
|
13天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
22天前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
35 3