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题解 寻找第一个偶数题目描述输入描述…

安全兜底:涉及钱时短信必须考虑防刷、限量和防重

开放平台资源的使用需要考虑防刷 短信验证码服务属于开放性服务,由用户侧触发,且因为是注册验证码所以不需要登录就可以使用,很容易被短信轰炸平台利用 GetMapping("wrong") public void wrong() {sendSMSCaptcha("13600000000");…

ubuntu卸载docker

简介:docker虽然好用,但是存在着以下几个问题: 1、空间占用过大,Docker在本地存储映像文件和容器,如果没有及时清理会占用大量磁盘空间。 2、安全性问题:虽然Docker提供了一些安全机制,但仍有…

关于 setData 同步异步的问题

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

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

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

力扣labuladong——一刷day92

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣211. 添加与搜索单词 - 数据结构设计二、力扣677. 键值映射 前言 Trie 树又叫字典树、前缀树、单词查找树,是一种二叉树衍生出来的高级数据…

java: 5-6 break

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

C++ | 三、字符串string、引用、函数

(以下内容对应卡码网题目10.平均绩点、11.句子缩写) 字符串string类型 相较于用单引号括起来的字符char类型,用双引号""括起来的字符串string类(这是C标准库中定义的一个类)可表示多个字符,并支…

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

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

OD机考真题搜集:考古学家

题目 有一个考古学家发现一个石碑,但是很可惜,发现时其已经断成多段,原地发现n个断口整齐的石碑碎片。为了破解石碑内容,考古学家希望有程序能帮忙计算复原后的石碑文字组合数,你能帮忙吗? 输入 第一行输入n,n表示石碑碎片的个数。 第二行依次输入石碑碎片上的文字内…

初学者的嵌入式 Linux 计划!

俗话说万事开头难,刚开始的时候,是不是根本就不知如何开始?今天给大家分享一个嵌入式大神总结的Linux学习计划!希望给大家提供帮助,;另外想要系统学习也可以dd我! 第一阶段:嵌入式硬…

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高级架构师。牛已经吹出来了,不做对不起网友! 经过一个多月的持续规划,现在终于定好了整体…

[Docker] 的常用命令

ps 以下命令均为基于linux 1. 帮助命令 docker version # 显示docker的版本信息 docker info # 显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help #帮助命令 sudo su root # 切换root用户 service docker start # 启动docker2. 镜像命令…