8 - MySQL数据读写分离|MySQL多实例

MySQL数据读写分离|MySQL多实例

  • MySQL数据读写分离
    • 数据读写分离
    • 如何实现数据的读写分离
    • 提供数据读写分离服务的软件(中间件)
    • maxscale 软件提供的读写分离服务的工作过程
    • 配置数据读写分离结构 提供数据存储服务
  • MySQL多实例

MySQL数据读写分离

前置条件:配置192.168.4.56 不需要安装mysql服务 确保一主一从(51,52)

数据读写分离

把客户端查询数据的请求 和 写数据的请求(instert,delete,update)
分别发送给不同数据库服务处理

  • 减去数据库服务器的访问压力
  • 提高硬件利用率

如何实现数据的读写分离

第一种方式:通过程序实现(程序在编写访问数据库服务的脚本 执行select命令时,固定连接从服务器 执行insert命令时 固定连接master数据库服务器)

第二种方式:通过服务实现 搭建提供读写分离服务功能的服务器(程序访问时 连接的不是数据库服务器本机,而是连接读写分离服务器,有读写分离服务器提供数据库连接服务)

提供数据读写分离服务的软件(中间件)

mysql-proxy mycat maxscale

maxscale 软件提供的读写分离服务的工作过程

  • 接收到客户连接数据库服务的请求后
  • 根据客户端访问数据的命令类型 把请求给不同的数据库服务器处理

配置数据读写分离结构 提供数据存储服务

第一步 配置mysql一主一从 同步结构 (参考前面教程)
第二步 配置读写分离服务器(这个主机没有mysql服务)

  1. 安装软件
yum -y install maxscale-2.1,..... 
  1. 修改配置文件
# 备份配置文件
cp /etc/maxscale.cnf /root/
# 修改配置文件
vim /etc/maxscale.cnf
[maxscale]
threads=auto # 线程数
# 两台主从服务器 需要两个server
[server1]
type=server
address=192.168.4.51
port=3306
protocol=MySQLBackend
[server2]
...
[MySQL Monitor]
...
servers=server1,server2
user=mysqla
passwd=123qqq...a
...
#[Read-Only Service] 只读服务得注释掉
#...
[Read-Write Service]
...
servers=server1,server2
user=mysqlb
passwd=123qqq...a
...
#[Read-Only Listener] 服务没启动 默认注释掉
#...
[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default
port=4016
  1. 根据配置文件设置 配置数据库服务器‘
    因为服务器主从结构,所有添加用户只需要在主服务器主机添加。 从服务器通过添加用户的命令在本机执行 所以只需在主服务器 执行添加用户的命令
 添加监控用户mysqla 监视服务器状态 replication client监视服务器运行状态。replication slave 数据库服务器的主从角色
grant replication client,replication slave on *.* to mysqla@"%" identified by "123qqq...A"添加路由用户mysqlb 检查数据库服务器上是添加了客户端连接服务使用的用户
grant slelct on mysql.* to mysqlb@"%" identified by "123qqq...a"
  1. 启动读写分离服务
# 首先测试数据库服务器的监视服务
# 启动读写分离服务
maxscale -f /etc/maxscale.cnf
# 看日志文件
vim /var/log/maxscale/maxscale.log ERROR error 字样
  1. 查看服务状态
    在这里插入图片描述
  2. 查看监控信息
    在56本机查看监控状态
maxadmin -admin -pmariadb -p4016
MaxScale > list servers

在这里插入图片描述

第三步 测试配置
先启动 51系统 再启动52系统 最后是56系统
第一步 客户端能够连接读写分离服务器访问数据库服务
首先在主数据库服务器 添加客户端连接使用的用户

51 ~]# mysql -uroot -pNSD2019...a
mysql> create database bbsbd;
mysql> create table bbsdb.a(id int);
grant select,insert on bbsdb.* to yaya@"%" identified by "123qqq...a";
# 在从数据库1上查看存储数据库表和添加用户
52 ~]# mysql -uroot -pNSD2019...a
mysql> desc bbsdb.a;
mysql> select user from mysql.user where user="yaya"

客户端连接读写分离服务 访问数据库服务

mysql -h读写分离服务器的ip -P读写分离服务的端口 -u数据库授权用户名 -p密码
50 ~]# mysql -h192.168.4.56 -P4006 -uyaya -p123qqq...a

第二步 连接读写分离服务后,可以对数据做查询和存储操作

mysql> select * from bbsdb.a;
mysql> insert into bbsdb.a values(8888) 

第三步 测试数据读写分离
怎么验证查询select 访问就在52服务器
从服务器本机表里添加一条记录 (在从服务器添加的新数据 主服务器不会同步)
怎么验证存储数据insert访问在51服务器

如果主从结构中的从服务器宕机了,就实现不了读写分离了,会把读写请求都给主服务器
如果主从结构都宕机了,读写分离服务无法访问
读写分离服务器只有1台 单点故障问题无法避免

MySQL多实例

前置条件:配置58 不需要安装mysql服务
在一台服务器上运行多个数据库服务 节约运维成本 提高硬件利用率
在这里插入图片描述

配置多实例:

  1. 安装软件

在这里插入图片描述

  1. 创建并编辑主配置文件(重点)
确保没有 /etc/my.cnf 如果有 要删掉
vim /etc/my.cnf
# 第一部分  管理实例服务的运行参数
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
user=root
# 第二部分  定义实例
[mysqld1] # 实例1
datadir=/dir1 # 第一个实例的数据库目录
port=3307 # 多实例 端口号不能一样
pid-file=/dir1/mysqld1.pid
log-error=/dir1/mysqld1.err
socket=/dir1/mysqld1.sock
[mysqld2] # 实例2
datadir=/dir2 # 第一个实例的数据库目录
port=3308 # 多实例 端口号不能一样
pid-file=/dir2/mysqld1.pid
log-error=/dir2/mysqld1.err
socket=/dir2/mysqld1.sock
  1. 启动多实例
    mysqld_multi start 1
    在这里插入图片描述
    无论启动成功没成功,都需要 查看有没有实例的端口 如果查到了得干掉进程, 查看父进程 pstree
    在这里插入图片描述
  2. 实例停止
# 需要输入用户名和密码
mysqld_multi --user=root --password=密码 stop 实例编号

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

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

相关文章

二分-补题

文章目录 造海船描述输入描述输出描述样例输入 1样例输出 1提示题解 寻找第一个1题目描述输入描述输出描述测试用例题解 查找数字是否出现描述输入描述输出描述样例输入 1样例输出 1题解 字典找数描述输入描述输出描述样例输入 1样例输出 1题解 寻找第一个偶数题目描述输入描述…

关于 setData 同步异步的问题

小程序官方文档中的回答解释: 所以大概意思就是: 1.setData在逻辑层的操作是同步,因此this.data中的相关数据会立即更新,比如下面的例子: const a 1 this.setData({b: a ? a : , }) console.log(that.data.b) // 1 2. setData在视图层的操作是异步,…

自定义白平衡调节的步骤 白平衡怎么设置好 白平衡和色温的关系 用什么软件调节白平衡

不管是拍摄视频/图片,还是视频/图片后期处理,白平衡调节都是很重要的环节,比如在氛围感很好咖啡厅内拍一张照,但是拍出来的人物脸色蜡黄,就是因为白平衡没设置好,下面就说说自定义白平衡调节的步骤&#xf…

java: 5-6 break

文章目录 1. break1.1 介绍1.2 语法和流程图1.3 入门练习1.4 细节说明1.5 练习 【老韩视频p137-】 1. break 看个需求:随机生成 1-100 的一个数,直到生成了 97 这个数,看看你一共用了几次? 【思路分析:循环,但是循环的次数不知道…

大厂咋做支付系统的核对?

核对是保障资金安全的重要机制。 时效角度,主要有: (准)实时核对 准确性不如离线核对,且需相应实时核对平台建设 离线核对(如 T1 核对) 主要问题是发现问题的时机较为后置,部分场景…

Java基础之并发篇(二)

1、前言 本篇主要基于Java基础之并发篇(一)继续梳理java中关于并发相关的基础只是。本篇基于网络整理,和自己编辑。在不断的完善补充哦。 2、synchronized 的原理是什么? synchronized是 Java 内置的关键字,它提供了一种独占的…

【复现】大华 DSS 数字监控系统 SQL 注入漏洞_18

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 大华DSS是大华的大型监控管理应用平台,支持几乎所有涉及监控等方面的操作,支持多级跨平台联网等操作。 可…

Echarts图表如何利用formatter自定义tooltip的内容和样式

在展示多数据图表的时候 有的时候需要图例也展示出一些内容来,例如官方这样子:鼠标悬停的时候展示该点数据 但是,官方提供的样式有时不适用所有的开发场景 我的项目需要实现鼠标悬停在某一点的时候,只展示该条线的数据&#xff0…

【XILINX】使用SMPTE UHD-SDI IP时怎么约束core?

SMPTE UHD-SDI IP 通过使用以下步骤指定与IP核心相关联的各种参数的值,可以自定义IP以在设计中使用: 1.从IP目录中选择IP。 2.双击所选IP,或从工具栏或右键单击菜单中选择“自定义IP”命令。 所需约束 rx_clk和tx_clk的周期必须根据要支…

Java21 + SpringBoot3集成WebSocket

文章目录 前言相关技术简介什么是WebSocketWebSocket的原理WebSocket与HTTP协议的关系WebSocket优点WebSocket应用场景 实现方式1. 添加maven依赖2. 添加WebSocket配置类,定义ServerEndpointExporter Bean3. 定义WebSocket Endpoint4. 前端创建WebSocket对象 总结 前…

【Nacos】Nacos 双端版本升级实战手册

背景 由于原来使用的 Nacos 版本(1.1.4)存在安全漏洞,需要进行升级修复。经过查询后,决定将版本升级到2.2.4。 Nacos 服务共有三个: 192.168.2.190:8848192.168.2.191:8848192.168.2.192:8848 步骤 服务端升级&am…

[Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用

前面讲解了使用Helm部署mysql集群,这里来看看使用Ingress搭建负载均衡功能 1.介绍 功能类似 Nginx ,可以根据域名、路径把请求转发到不同的 Service , Ingress 为外部访问集群提供了一个 统一 入口, 避免 了 对外暴露集群端口 ,可以配置 https,http访问集群应用,接下来看看如…

2024年《一个项目征服Java中高级体系》博客计划

终于下决心来写一套大型的Java 笔记,不为别的,就是为了强迫自己将整个Java体系梳理清楚,让自己成为内功扎实的Java高级架构师。牛已经吹出来了,不做对不起网友! 经过一个多月的持续规划,现在终于定好了整体…

8年老鸟,自动化测试经验,测试数据管理分析总结,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 问题:…

Linux学习记录——사십삼 高级IO(4)--- Epoll型服务器

文章目录 1、理解Epoll和对应接口2、实现 1、理解Epoll和对应接口 poll依然需要OS去遍历所有fd。一个进程去多个特定的文件中等待,只要有一个就绪,就使用select/poll系统调用,让操作系统把所有文件遍历一遍,哪些就绪就加上哪些fd…

ssm基于VUE.js的在线教育系统论文

摘 要 随着学习压力越来越大,课外参加补习班的学生越来越多。现在大多数学生采用请家教、自学、报名补习班的方式进行课外的额外学习。请家教费用昂贵,自学效率低,碰到自己不会的知识不能及时得到解达,报名补习班需要时间、地点的…

x-cmd pkg | trash-cli - 类 Unix 系统的命令行垃圾桶

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trash-cli 是类 Unix 系统的命令行垃圾桶,用于移动文件到回收站,同时会记录文件的原地址和删除日期。 该工具使用与 GNOME、KDE ​​和 XFCE 等桌面环境相同的垃圾桶,所以即使是非 …

PVE虚拟机配置文件恢复

一、pve 创建的虚拟机的配置文件位置 在宿主机的 /etc/pve/qemu-server,这里有创建虚拟机的相关硬件信息。 rootpve1:/etc/pve/qemu-server# pwd /etc/pve/qemu-server二、故障现象 在命令行执行qm list不显示虚拟机,查看 宿主机的 /etc/pve/qemu-ser…

Codeforces Round 913 (Div. 3)E 不进位各数位和与打表

Problem - E - Codeforces digsum(a)digsum(b)digsum(c)digsum(n) 要点一: 当左边和发生进位,比如56 11,那么数位和会变小。其实下一位就是相加后对9取余,各数位和必定变小的。 要点二: 然后就是组合情况了&#x…

Echarts可视化-数据请求-代码实现和思路

需求:为前端可视化图表提供数据支持。 实现: 时间戳获取优化(细化到秒) 根据时间获取数据(SQL编写) 前端需求数据返回(数据VO) 内容 Apache ECharts 营业额统计 用户统计 订单…