redis中,msyql数据库读写分离搭建

一.mysql读写分离:缓解主服务器的压力

	1.概念:主服务器写数据,从服务器读数据
	2.实现方法:
		客户端分离: 开发手动分离地址
		服务端分离: 数据库与应用之间加一个中间件,分离读写请求
			    mysql-proxy,mysql-route,maxscale
			    amoeba,cobar,mycat2
			    atlas,kingshard,vitees
	3.mycat配置方法:
		冷配置:直接改配置文件
		热配置:命令配置
	    
	4.操作步骤
		
		主从-->users-->datasources-->cluster-->主备配置读写分离-->shecma配置逻辑库
		1.搭建主从服务器56,57
			
		2.安装授权mycat,安装mysql(原型库,存储mycat运行的数据)
		 mycat2-1.21-release-jar-with-dependencies.jar :运行依赖包
		 mycat2-install-template-1.21.zip:软件包

		 yum -y install java-1.8.0-openjdk.x86_64
		 cp mycat2-1.21-release-jar-with-dependencies.jar  /usr/local/mycat/lib/
		
		 chmod +x /usr/local/mycat/bin/*
		 chmod -R 777 /usr/local/mycat
		3.定义客户端连接mycat服务使用的用户及密码
			/usr/local/mycat/conf/users/root.user.json
			{
		        "dialect":"mysql",
		        "ip":null,
		        "password":"654321", 密码
		        "transactionType":"proxy",
		        "username":"mycat" 用户名
			}

		4.配置本机用户和datasources数据源地址,mycat机器的mysql创建plj用户并授权
			/usr/local/mycat/conf/datasources/prototypeDs.data
			{
		       ....
		        "password":"123456", 密码
		        "type":"JDBC",
		       	....
		        "user":"plj", 用户名
		        "weight":0
			}
			----
			mysql> create user plj@"%" identified by "123456";  //创建plj用户
			mysql> grant all on *.* to plj@"%" ;   //授予权限
		
		5.启动mycat服务并登录(8066)
			/usr/lcoal/mycat/bin/mycat start

			mysql -h127.0.0.1 -P8066 -umycat -p654321

		6.mycat下,配置主从的用户数据源地址,mysql56,主机器上创建主从数据源的用户并授权

			/*+ mycat: createdatasource{
			"name":"whost56", #master角色主机名
			"url":"jdbc:mysql://192.168.88.56:3306",
			"user":"plja",
			"password":"123456"
			} */;
		
			/*+ mycat: createdatasource{
			"name":"rhost57", #slave角色主机名
			"url":"jdbc:mysql://192.168.88.57:3306",
			"user":"plja",
			"password":"123456"
			} */;
			----
			mysql> create user plja@"%" identified by "123456";  //创建plj用户
			mysql> grant all on *.* to plja@"%" ;   //授予权限

		热配置,用户/数据源/集群/逻辑库相关命令

		/*+ mycat: showusers{} / showdatasources{} / showschemas{} */;

		/*+ mycat: createuser{"name":"xx","password":"xx"...} / createdatasource{"name":"xx"}  / createschema{"name":"xx"}*/;

	 	/*+ mycat: dropuser{"name":"xx"} /dropdatasource{"name":"xx"} /dropschema{"name":"xx"}*/;
		
		---集群
		/*+ mycat: showclusters{} */;
		/*! mycat: createcluster{"name":"xx"...} */;
		/*! mycat: dropcluster{"name":"xx"...} */;

	
		7.mycat下,主从服务器加入集群
			mysql -h127.0.0.1 -P8066 -umycat -p654321

			/*! mycat:createcluster{
			"name":"rwcluster",
			"masters":["whost56"], #master角色主机名
			"replicas":["rhost57"] #slave角色主机名
			}*/ ;
			

		8.调整配置文件修改主从的读写操作(之前配置的name=这里的配置文件名称)
			vim /usr/local/mycat/conf/datasources/whost56.datasource.json
				"instanceType":"WRITE"  #分配写
			vim /usr/local/mycat/conf/datasources/rhost57.datasource.json 
				"instanceType":"READ"   #分配读
			vim /usr/local/mycat/conf/clusters/rwcluster.cluster.json 
				"instanceType":"BALANCE_ALL_READ" 

			BALANCE_ALL:获取集群中所有数据源
			BALANCE_ALL_READ:读请求都会被均衡地分配到所有的从库
			BALANCE_READ_WRITE:获取集群中允许读写的数据,单允许读的数据优先
			BALANCE_NONE:获取集群中允许写的数据
	
			重启服务 /usr/local/mycat/bin/mycat restart

		9.登录mycat,创建testdb库,生成testdb.schema.json文件,修改配置文件,逻辑库关联集群真实库
			mysql -h127.0.0.1 -P8066 -umycat -p654321
			create database testdb;

			vim /usr/local/mycat/conf/schemas/testdb.schema.json
			       "schemaName":"testdb",
        			"targetName":"rwcluster", #集群名称

		10.登录mycat,创建表,写记录测试,完成数据的读写分离
			mysql -h127.0.0.1 -P8066 -umycat -p654321
			create table testdb.user(name char(10),password char(10));
			insert into  testdb.user values("yaya","123456");

2.mysql读写分离:缓解主服务器的压力

    1.概念:主服务器写数据,从服务器读数据
    2.实现方法:
        客户端分离: 开发手动分离地址
        服务端分离: 数据库与应用之间加一个中间件,分离读写请求
                mysql-proxy,mysql-route,maxscale
                amoeba,cobar,mycat2
                atlas,kingshard,vitees
    3.mycat配置方法:
        冷配置:直接改配置文件
        热配置:命令配置
        
    4.操作步骤
        
        主从-->users-->datasources-->cluster-->主备配置读写分离-->shecma配置逻辑库
        1.搭建主从服务器56,57
            
        2.安装授权mycat,安装mysql(原型库,存储mycat运行的数据)
         mycat2-1.21-release-jar-with-dependencies.jar :运行依赖包
         mycat2-install-template-1.21.zip:软件包

         yum -y install java-1.8.0-openjdk.x86_64
         cp mycat2-1.21-release-jar-with-dependencies.jar  /usr/local/mycat/lib/
        
         chmod +x /usr/local/mycat/bin/*
         chmod -R 777 /usr/local/mycat
        3.定义客户端连接mycat服务使用的用户及密码
            /usr/local/mycat/conf/users/root.user.json
            {
                "dialect":"mysql",
                "ip":null,
                "password":"654321", 密码
                "transactionType":"proxy",
                "username":"mycat" 用户名
            }

        4.配置本机用户和datasources数据源地址,mycat机器的mysql创建plj用户并授权
            /usr/local/mycat/conf/datasources/prototypeDs.data
            {
               ....
                "password":"123456", 密码
                "type":"JDBC",
                   ....
                "user":"plj", 用户名
                "weight":0
            }
            ----
            mysql> create user plj@"%" identified by "123456";  //创建plj用户
            mysql> grant all on *.* to plj@"%" ;   //授予权限
        
        5.启动mycat服务并登录(8066)
            /usr/lcoal/mycat/bin/mycat start

            mysql -h127.0.0.1 -P8066 -umycat -p654321

        6.mycat下,配置主从的用户数据源地址,mysql56,主机器上创建主从数据源的用户并授权

            /*+ mycat: createdatasource{
            "name":"whost56", #master角色主机名
            "url":"jdbc:mysql://192.168.88.56:3306",
            "user":"plja",
            "password":"123456"
            } */;
        
            /*+ mycat: createdatasource{
            "name":"rhost57", #slave角色主机名
            "url":"jdbc:mysql://192.168.88.57:3306",
            "user":"plja",
            "password":"123456"
            } */;
            ----
            mysql> create user plja@"%" identified by "123456";  //创建plj用户
            mysql> grant all on *.* to plja@"%" ;   //授予权限

        热配置,用户/数据源/集群/逻辑库相关命令

        /*+ mycat: showusers{} / showdatasources{} / showschemas{} */;

        /*+ mycat: createuser{"name":"xx","password":"xx"...} / createdatasource{"name":"xx"}  / createschema{"name":"xx"}*/;

         /*+ mycat: dropuser{"name":"xx"} /dropdatasource{"name":"xx"} /dropschema{"name":"xx"}*/;
        
        ---集群
        /*+ mycat: showclusters{} */;
        /*! mycat: createcluster{"name":"xx"...} */;
        /*! mycat: dropcluster{"name":"xx"...} */;

    
        7.mycat下,主从服务器加入集群
            mysql -h127.0.0.1 -P8066 -umycat -p654321

            /*! mycat:createcluster{
            "name":"rwcluster",
            "masters":["whost56"], #master角色主机名
            "replicas":["rhost57"] #slave角色主机名
            }*/ ;
            

        8.调整配置文件修改主从的读写操作(之前配置的name=这里的配置文件名称)
            vim /usr/local/mycat/conf/datasources/whost56.datasource.json
                "instanceType":"WRITE"  #分配写
            vim /usr/local/mycat/conf/datasources/rhost57.datasource.json 
                "instanceType":"READ"   #分配读
            vim /usr/local/mycat/conf/clusters/rwcluster.cluster.json 
                "instanceType":"BALANCE_ALL_READ" 

            BALANCE_ALL:获取集群中所有数据源
            BALANCE_ALL_READ:读请求都会被均衡地分配到所有的从库
            BALANCE_READ_WRITE:获取集群中允许读写的数据,单允许读的数据优先
            BALANCE_NONE:获取集群中允许写的数据
    
            重启服务 /usr/local/mycat/bin/mycat restart

        9.登录mycat,创建testdb库,生成testdb.schema.json文件,修改配置文件,逻辑库关联集群真实库
            mysql -h127.0.0.1 -P8066 -umycat -p654321
            create database testdb;

            vim /usr/local/mycat/conf/schemas/testdb.schema.json
                   "schemaName":"testdb",
                    "targetName":"rwcluster", #集群名称

        10.登录mycat,创建表,写记录测试,完成数据的读写分离
            mysql -h127.0.0.1 -P8066 -umycat -p654321
            create table testdb.user(name char(10),password char(10));
            insert into  testdb.user values("yaya","123456");
 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1.微服务灰度发布落地实践(方案设计)

前言 微服务架构中的灰度发布(也称为金丝雀发布或渐进式发布)是一种在不影响现有用户的情况下,逐步将新版本的服务部署到生产环境的策略。通过灰度发布,你可以先将新版本的服务暴露给一小部分用户或特定的流量,观察其…

Vue中动态样式绑定+CSS变量实现切换明暗主题功能——从入门到进阶

1.直接借助Vue的动态绑定样式绑定 Vue动态样式绑定 在Vue中,动态样式绑定是一种强大的功能,它允许开发者根据数据的变化动态地更新元素的样式。以下是对Vue动态样式绑定的详细知识梳理与详解: 一、基础知识 Vue的动态样式绑定主要通过v-b…

华为管理变革之道:奋斗文化与活力

目录 企业文化是什么? 为什么活下去是华为的文化? 活下来,是华为公司的最低纲领,也是华为公司的最高纲领! 资源终会枯竭,唯有文化才能生生不息 企业文化之一:以客户为中心 企业文化之二&a…

强化数据治理能力,夯实数字政府建设基石!

当下,数字政府建设已成为推动国家治理体系和治理能力现代化的关键路径。数据作为数字化时代的关键生产要素,直接影响着数字政府建设的能效,关系着政府决策的科学性、公共服务的精准性以及社会治理的有效性。因此,通过数据治理来全…

NFC 碰一碰发视频源码搭建技术详解,支持OEM

一、引言 NFC(Near Field Communication)近场通信技术以其便捷性和安全性在现代移动应用中得到了广泛应用。结合视频播放功能,实现 NFC 碰一碰发视频的应用场景,能够为用户带来全新的交互体验,例如在商场的产品推广、景…

【论文阅读】AllMatch: Exploiting All Unlabeled Data for Semi-Supervised Learning

一、引言 在当今的机器学习领域,半监督学习(SSL)作为一种重要的学习范式,受到了广泛的关注。它旨在利用有限的标记数据和大量的未标记数据来提升模型的性能,从而在数据标记成本较高而未标记数据丰富的情况下发挥重要作…

光谱相机与普通相机的区别

一、成像目的 普通相机:主要目的是记录物体的外观形态,生成人眼可见的、直观的二维图像,重点在于还原物体的形状、颜色和纹理等视觉特征,以供人们进行观赏、记录场景或人物等用途。例如,拍摄旅游风景照片、人物肖像等…

基于单片机的蓄电池内阻检测系统设计(论文+源码)

1 系统的功能及方案设计 在本次设计中,考虑到整体设计难度。在此选择了上述的方法一来作为本次蓄电池内阻检测的方案。其系统整个框图如下图1所示。其主要的核心控制模块由LCD显示模块,负载电路模块,AD模数转换模块,继电器控制模…

Git核心概念

版本控制 什么是版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 除了项目源代码,你可以对任何类型的文件进行版本控制。 为什么要版本控制 有了它你就可以将某个文件回溯到之前的状态,甚至将整…

Kotlin 协程基础知识总结二 —— 启动与取消

协程启动与取消的主要内容: 启动协程:启动构建器、启动模式、作用域构建器、Job 生命周期取消协程:协程的取消、CPU 密集型任务取消、协程取消的副作用、超时任务 1、协程构建器 (P20)launch 与 aysnc 两种协程构建…

kong网关使用pre-function插件,改写接口的返回数据

一、背景 kong作为api网关,除了反向代理后端服务外,还可对接口进行预处理。 比如本文提及的一个小功能,根据http header某个字段的值,等于多少的时候,返回一个固定的报文。 使用到的kong插件是pre-function。 除了上…

群落生态学研究进展▌Hmsc包对于群落生态学假说的解读、Hmsc包开展单物种和多物种分析的技术细节及Hmsc包的实际应用

HMSC(Hierarchical Species Distribution Models)是一种用于预测物种分布的统计模型。它在群落生态学中的应用广泛,可以帮助科学家研究物种在不同环境条件下的分布规律,以及预测物种在未来环境变化下的潜在分布范围。 举例来说&a…

MacroSan 2500_24A配置

双控制器电源同时按下,切记/切记/切记 默认信息 默认地址:192.168.0.210 输入ODSP授权后设置密码## 配置端口 物理资源–>设备–>网口–>eth-1:0:0或eth-2:0:0 创建存储池 存储资源–>存储池 介质类型:混合(支持机械及SSD)全闪(仅支持SSD) RAID类型:CRAID-P(基于磁…

SQL-leetcode-180. 连续出现的数字

180. 连续出现的数字 表:Logs -------------------- | Column Name | Type | -------------------- | id | int | | num | varchar | -------------------- 在 SQL 中,id 是该表的主键。 id 是一个自增列。 找出所有至少连续出现三次的数字。 返回的…

ISDP010_基于DDD架构实现收银用例主成功场景

信息系统开发实践 | 系列文章传送门 ISDP001_课程概述 ISDP002_Maven上_创建Maven项目 ISDP003_Maven下_Maven项目依赖配置 ISDP004_创建SpringBoot3项目 ISDP005_Spring组件与自动装配 ISDP006_逻辑架构设计 ISDP007_Springboot日志配置与单元测试 ISDP008_SpringB…

ElementPlus 自定义封装 el-date-picker 的快捷功能

文章目录 需求分析 需求 分析 我们看到官网上给出的案例如下,但是不太满足我们用户想要的快捷功能,因为不太多,因此需要我们自己封装一些,方法如下 外部自定义该组件的快捷内容 export const getPickerOptions () > {cons…

怎么模仿磁盘 IO 慢的情况?并用于MySQL进行测试

今天给大家分享一篇在测试环境或者是自己想检验自己MySQL性能的文章 实验环境: Rocky Linux 8 镜像:Rocky-8.6-x86_64-dvd.iso 1. 创建一个大文件作为虚拟磁盘 [rootlocalhost ~] dd if/dev/zero of/tmp/slowdisk.img bs1M count100 记录了1000 的读入…

C++--------继承

一、继承的基本概念 继承是 C 中的一个重要特性&#xff0c;它允许一个类&#xff08;派生类或子类&#xff09;继承另一个类&#xff08;基类或父类&#xff09;的属性和方法。这样可以实现代码的重用和建立类之间的层次关系。 #include <iostream>// 基类 class Base…

Ubuntu24.04安装NVIDIA驱动及工具包

Ubuntu24.04安装NVIDIA驱动及工具包 安装nvidia显卡驱动安装cuda驱动安装cuDNN安装Anaconda 安装nvidia显卡驱动 NVIDIA 驱动程序&#xff08;NVIDIA Driver&#xff09;是专为 NVIDIA 图形处理单元&#xff08;GPU&#xff09;设计的软件&#xff0c;它充当操作系统与硬件之间…

探秘“香水的 ChatGPT”:AI 开启嗅觉奇幻之旅!

你没有看错&#xff0c;AI也能闻到味道了&#xff01;这是一家名为Osmo公司公布的信息&#xff0c;他们成功创造出了由AI生成的李子味道&#xff0c;快跟着小编一探究竟吧~ 【图片来源于网络&#xff0c;侵删】 Osmo公司的这项技术&#xff0c;通过分析香味的化学成分和人类嗅…