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

news2025/1/31 10:57:37

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.coloradmin.cn/o/1383313.html

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

相关文章

最新国内可用GPT4、Midjourney绘画、DALL-E3文生图模型教程

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画,文档对话总结DALL-E3文生图,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和…

Zabbix监控系统及部署

目录 前言 一个完整的项目 业务架构 运维架构 优秀监控软件的好处 1.zabbix概述 zabbix是什么 zabbix监控原理 Zabbix6.0新特性 1.Zabbix server高可用防止硬件故障或计划维护期的停机 2.Zabbix6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个…

选择服务商搭建WiFi贴码小程序,有哪些注意事项呢?

随着移动互联网的快速发展,共享WiFi已经成为人们生活中不可或缺的一部分。在各种公共场所,如咖啡厅、餐厅、酒店、商场等,提供免费WiFi已经成为一种趋势。而WiFi贴码小程序的出现,为商家和用户提供了一个便捷的连接方式。那么&…

多语言历史报纸广告事件抽取(ACL2023)

1、写作动机: 首先,获取大规模的、有注释的历史数据集是困难的,因为只有领域专家才能可靠地为它们打标签。其次,大多数现成的NLP模型是在现代语言文本上训练的,这使得它们在应用于历史语料库时效果显著降低。这对于研…

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

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

调用Clarifai API提取图像特征

官方文档放前面:Images | Clarifai Guide 功能很多,有各种不同的模型,可以提取不同的图像特征,比如图像摘要、图像实体等。。。 具体的调用过程: 1.进入官方网站Full Stack AI Developer Platform: Production Compu…

FPGA 移位运算与乘法

题目: 已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效) 由题意可知: 复位信号高有效,低复位;在inpu_grant上升…

关于编程的一些小小记录

这里记录一些关于编程的小技巧吧,算是个记录 1,vs同时有多个cpp文件怎么办? 我们只想运行第一个cpp文件,那么怎么做呢? 其实很简单,单击你不想让之运行的文件,点击最下面的属性 最后设置为这样…

数学建模day15-时间序列分析

时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分,分别是描述过去、分析规律和预测未来,本讲将主要介绍时间序列分析中常用的三种模型:季节分解、指数平滑方法和AR…

最小花费-银行转账-图的最短路-超详细解析注释

最小花费-银行转账-图的最短路-超详细解析注释 【题目描述】 在n个人中,某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元。 …

【Linux】Ubuntu 解压 zip、z01、z02等压缩文件的方法,Linux如何解压分卷压缩的

zip分卷压缩,在windows上压缩来的,如何解压这种文件: -rw-rw-r-- 1 20401094656 Dec 10 20:06 FFHQ.z01 -rw-rw-r-- 1 20401094656 Dec 10 20:10 FFHQ.z02 -rw-rw-r-- 1 20401094656 Dec 10 23:22 FFHQ.z03 -rw-rw-r-- 1 20401094656 Dec 10…

机器人跟踪性能量化指标

衡量机械臂关节轨迹跟踪控制的性能可以通过以下几个方面来进行: 跟踪精度:这是衡量机械臂关节轨迹跟踪控制性能的最重要的指标。它反映了机械臂实际运动轨迹与期望运动轨迹之间的偏差。跟踪精度越高,说明机械臂的控制性能越好。运动范围&…

设计模式——1_2 组合(Composite)

君子和而不同,小人同而不和 ——《论语》 文章目录 定义图纸一个例子:折算产品的成本BomMessageBomTree 写在后面的碎碎念职责分离非树状的组合模式组合和迭代器姑妄言之 定义 将对象组合成树状结构以表示“部分-整体”的层次结构。组合模式使得用户对单…

Python数据结构——字符串

目录 一、字符串的不变性 二、字符串的常见方法介绍 三、字符串对象的join()和split()方法 一、字符串的不变性 1、属于不可变对象,不能通过索引操作来改变字符串对象本身 s I like Python s[7] p 要修改字符串,需要使用字符串的replace()方法&am…

Python基础知识:整理16 使用pyecharts实现动态柱状图

1 基础柱状图的构建 from pyecharts.charts import Barbar Bar()bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) bar.ad…

一个用于批量给图片增加水印的Python库

本文推荐一个开源免费Python脚本,可以在指定目录及其子目录中批量给图像添加水印,当然,你也可以集成到你的Web应用中。 给图片、视频增加水印以确认版权或者增加效果,是在媒体内容信息经常需要用到的技术。本文推荐一个开源免费P…

Redis集群(主从复制)

主从复制:是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。 前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能 由主节点到从节点。 可以实现数据备份。即使当其中一台机器宕机其他机器还可以正…

如何运用AR技术提升制造效率?这里有答案!

当谈及AR技术在工业领域的应用,首先让人想到的是它为企业带来的巨大变革。从工业设计和制造到设备维护和维修,再到培训和技能传承以及设备操作和监测,AR技术凭借其独特的方式,帮助企业实现更高效的生产和运营。通过这些环节的优化…

office办公技能|word中的常见通配符使用

一、删除Word中含有指定内容的整行 操作方法: 1、快捷键 CtrlH,打开Word的查找替换窗口,单击【更多】按钮,勾选“使用通配符”。 2、在查找内容处,输入“替换内容*^13”,替换为处什么都不填。 3、单击【…