首页 > 其他分享 >介绍一款读写分离工具

介绍一款读写分离工具

时间:2023-02-17 15:57:11浏览次数:33  
标签:读写 分离 mycat master 集群 一款 数据库

一、读写分离介绍

1、What读写分离?

  基本的原理是让主数据库处理事务增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。

2、why为何要读写分离?

  因为数据库的“写”(写10000条数据到mysql可能要3分钟)操作是比较耗时的。但是数据库的“读”(从mysql读10000条数据可能只要5秒钟)。
所以读写分离,解决的是,数据库的写入,影响了查询的效率。

3、res实际场景

  在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力是必要的。

二、实现读写分离方式

(一)基于代码层面实现

1、需要配置个数据源

2、在代码中引入注解及AOP实现,通过请求来识别调用主还是从数据库

  优点:简单省事,加代码即可

  缺点:代码耦合不利于后期扩展和维护、一旦修改需要重新编译打包、最严重点数据库宕机了,应用就会抛异常

(二)引用中间件

  

1、Mycat是什么?

  • 一个彻底开源的,面向企业应用开发的大数据库集群,支持事务、ACID、可以替代MySQL的加强版数据库
  • 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
  • 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server,结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
  • 一个新颖的数据库中间件产品

2、Mycat特性

  • 独立部署,不影响业务代码,由它来管理主从数据库
  • 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群
  • 支持分表
  • 支持分布式事务
  • 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理                            

三、mycat搭建部署

(一)安装

解压
tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

配置环境
vi /etc/profile    

(二)配置

1、配置服务器信息

  

  说明:schems对应的二个逻辑数据库名,与schema.xml的name对应

2、配置数据库信息

  

  说明:dataNode对应name,并且dataNode中的database是真实的数据库名

  高可用:读写分离; 写走hostM1,读走hostS1; hostM1宕机了, hostS1也不可用

(三)相关命令

cd /usr/local/mycat/bin/

./mycat start 启动

./mycat stop 停止

./mycat console 前台运行

./mycat restart 重启服务

./mycat pause 暂停

./mycat status 查看启动状态

(四)测试结果

1、询会走slave节点,其他走master节点,对master节点数据库的增、删、改操作最终会同步到slave节点

2、强制走master:/*!mycat:db_type=master*/ select * from tbl_user;强制走slave:/*!mycat:db_type=slave*/ select * from tbl_user

3、手动停掉master上的mysql服务,看看mycat能不能自动的切换到下一个writeHost

(五)遇到问题

1、批量更新不是很友好?

  引入baomidou包

2、怎么把已经存在的物理表加载到mycat中?

  使用schema配置中的targetName,指向目标数据源或者集群,同时保证schema的名字与目标的库相同,即可自动加载该库已经存在的物理表

3、数据有时候有有时候又没有?

  检查集群主从关系是否被打破,可参考上篇文章(MySql主从复制介绍)

 

标签:读写,分离,mycat,master,集群,一款,数据库
From: https://www.cnblogs.com/weiguo-it/p/17130345.html

相关文章

  • 《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十三章 QSPI Flash读写测试实验​
    QSPIFlash读写测试实验​PS的输入/输出外设(IOP)有两个具有不同功能特性和IO接口性能的QSPI控制器。它们共享相同的APB从接口和MIO引脚。一次只能使用控制器中的一个。QSPI......
  • 前后端分离OAuth授权登录实现方式
    以码云作为OAuth的演示,码云OAuth的验证流程如下图:为了演示,需要先在码云上申请一个应用。在修改资料->第三方应用,创建要接入码云的应用。填写应用相关信息,......
  • HDFS读写数据流程
    文件写入(1)HDFSClient上传文件到集群,HDFSClient会创建本地的分布式文件系统(DistributedFileSystem),向集群NameNode请求上传文件(2)NameNode检查目录树是否允许创建文件,检查......
  • SPI读写官方Demo
    //SPDX-License-Identifier:GPL-2.0-only/**SPItestingutility(usingspidevdriver)**Copyright(c)2007MontaVistaSoftware,Inc.*Copyright(c)......
  • OpenCV对NV12进行通道分离后缩放再保存为NV12格式
    1.OpenCV对NV12进行通道分离后缩放再保存为NV12格式 #include<stdio.h>#include<opencv2/opencv.hpp>/***@brief*把输入的NV12图像分离为YUV三个分量图......
  • 一款OutLook信息收集工具
    0x01前言这是一款burp插件,用于Outlook用户信息收集,在已登录Outlook账号后,可以使用该插件自动爬取所有联系人的信息0x02安装在burp扩展面板加载jar即可0x03 功能介绍1.A......
  • 【HMS Core】音频编辑服务带你实现音源分离与合成
    ​1、介绍总览音频编辑服务(AudioEditorKit)是帮助开发者快速构建各类应用音频能力的服务。在本codelab中,您将学会创建一个DemoProject,了解如何使用音频编辑服务实现音......
  • 解决C#读写txt文件中文(汉字)乱码的问题
    不少朋友遇到用System.IO.StreamReader读取包含汉字的txt文件时,经常会读出乱码(StreamWriater写文本文件也有类似的问题),原因很简单,就是文件的编码(encoding)和StreamReader/W......
  • c语言文件读写
    C语言文件读写算法1.fseek()函数此函数用于移动文件指针到指定位置。例如,要将文件指针移动到文件的第5个字节处,您可以使用以下代码:fseek(fp,5,SEEK_SET);//将文件......
  • 前后端分离项目(vue+springboot)集成pageoffice实现在线编辑office文件
    前后端分离项目下使用PageOffice原理图集成步骤前端vue项目在您Vue项目的根目录下index.html中引用后端项目根目录下pageoffice.js文件。例如:<scripttype="text/......