小白到运维工程师自学之路 第四十三集 (mariadb读写分离)

news2024/10/4 22:30:18

一、读写分离的优点

1. 负载均衡:将读操作分散到多个从库上,可以有效地分担主库的读负载,提高系统的

并发处理能力。

2. 提高读性能:从库可以通过增加硬件资源或者优化查询语句等方式来提高读操作的性

能,从而提升系统的整体性能。

3. 高可用性:通过将读操作分散到多个从库上,即使主库发生故障,系统仍然可以继续

提供读服务,提高系统的可用性。

4. 数据保护:将读操作分离到从库上,可以避免误操作或者恶意操作对主库数据的影

响,提高数据的安全性。

二、amoeba简介

Amoeba是阿里巴巴集团旗下的一款分布式操作系统。它是为了满足阿里巴巴集团大规

模分布式计算和存储需求而开发的。Amoeba具有高可靠性、高性能、高可扩展性等特

点,可以支持大规模的数据处理和存储。它在阿里巴巴集团内部被广泛应用于各种业务

场景,包括电商、云计算、大数据等领域。

三、工作原理

1. 主从复制:在MySQL中,可以通过主从复制的方式将主数据库的数据同步到从数据

库上。主数据库负责处理写操作,而从数据库负责处理读操作。

2. 主数据库:主数据库是负责接收和处理所有的写操作的服务器。当有写操作发生时,

主数据库会将写操作的日志记录下来,并将这些日志传输给从数据库。

3. 从数据库:从数据库是负责处理读操作的服务器。从数据库会从主数据库接收到写操

作的日志,并将这些日志应用到自己的数据库上,保持与主数据库的数据同步。

4. 读写分离代理:为了实现读写分离,通常会在应用程序和数据库之间加入一个读写分

离代理。读写分离代理会根据请求的类型将读操作和写操作分发到不同的数据库服务器

上。

5. 读操作:当应用程序发送一个读操作的请求时,读写分离代理会将该请求转发给从数

据库进行处理。由于从数据库只负责处理读操作,因此可以专注于提供高性能的读服

务。

6. 写操作:当应用程序发送一个写操作的请求时,读写分离代理会将该请求转发给主数

据库进行处理。主数据库会将写操作的结果同步到从数据库上,以保持数据的一致性。

四、准备工作

1、五台服务器关闭防火墙

2、mariadb进行主从复制(不会的可以看我之前mha高可用集群的那篇文章)

3、五台服务器之间可以互相通联

4、五台服务器之间时间同步

五、部署mariadb读写分离

1、安装jdk(这里amoeba只支持1.5版本和1.6版本的)

我原来是1.8的现在是1.6的就需要降版本

mv jdk1.6.0_31/ /usr/local/jdk1.6   将解压后的jdk包移动到/usr/local

vim /etc/profile                    进入全局配置文件
添加变量
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$HOME/bin

source /etc/profile                 更新全局变量

rm -rf /usr/bin/java     删除原jdk

 2、安装amoeba

mkdir /usr/local/amoeba                     创建amoeba的目录
tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
chmod -R 755 /usr/local/amoeba/             赋予amoeba755权限


vim /etc/profile                            进入全局配置文件添加变量
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin


source /etc/profile                         更新变量

3、修改amoeba配置文件

在Master、Slave1、Slave2服务器中配置Amoeba的访问授权
grant all on *.* to 'test'@'192.168.200.%' identified by '123.com'; 
flush privileges;                                       更新权限



vim /usr/local/amoeba/conf/amoeba.xml                   进入amoeba配置文件
<property name="user">amoeba</property>                 指定用户
<property name="password">123456</property>             用户密码
<property name="defaultPool">master</property>          默认池
<property name="writePool">master</property>            写的池指定谁负责写
<property name="readPool">slaves</property>             读的池指定谁负责读

 4、修改数据服务配置文件

vim /usr/local/amoeba/conf/dbServers.xml 

<property name="port">3306</property>                            指定端口(默认)
<property name="schema">test</property>                          连接mysql的用户
<property name="user">test</property>                            登录mysql用户
<property name="password">123.com</property>                     mysql授权的密码
<dbServer name="master"  parent="abstractServer">                定义主服务器
<property name="ipAddress">192.168.1.20</property>               指定主服务器IP
<dbServer name="slave1"  parent="abstractServer">                定义第一个从服务器
<property name="ipAddress">192.168.1.210</property>              指定第一个从服务器IP
<dbServer name="slave2"  parent="abstractServer">                定义第二个从服务器
<property name="ipAddress">192.168.1.211</property>              指定第二个从服务器IP
<dbServer name="slaves" virtual="true">                          定义读的池
property name="loadbalance">1</property>                         开启轮询
<property name="poolNames">slave1,slave2</property>              
    

 

/usr/local/amoeba/bin/amoeba start & 启动amoeba

弹出8066端口的时候按下回车键

六、测试

关掉从2的服务器(可以看到从2查询到四个表)

从1的服务器没有关闭(可以看到从1可以查到八个表)

 以上就是mariadb读写分离的操作

如有错误欢迎各位大佬批评指正,我们共同进步

 

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

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

相关文章

为什么用了代理ip访问网站还是被限制了

随着网络的发展和应用的普及&#xff0c;越来越多的用户开始使用代理ip来访问网站。代理ip可以隐藏真实IP地址&#xff0c;提供匿名性和访问自由&#xff0c;但有时候使用代理ip仍然会导致被禁止访问网站的情况发生。下面就让我们来分析一下吧。 代理ip被网站识别 一些网站通过…

从零详细地梳理一个完整的 LLM 训练流程

深度学习自然语言处理 分享知乎&#xff1a;何枝 在这篇文章中&#xff0c;我们将尽可能详细地梳理一个完整的 LLM 训练流程。包括模型预训练&#xff08;Pretrain&#xff09;、Tokenizer 训练、指令微调&#xff08;Instruction Tuning&#xff09;等环节。 文末进群&#xf…

两种特定网络环境下,如何实现外网SSH访问内网LINUX主机?

目前&#xff0c;大多数网友的网络环境分为两种&#xff0c;一种是没有公网IP&#xff0c;一种是动态公网IP环境。今天跟大家分享一下在这两种特定网络环境下&#xff0c;如何通过快解析内网穿透&#xff0c;实现外网SSH访问内网LINUX。 1.动态公网IP环境。路由器分配的是动态…

深入了解 KaiwuDB 负载行为数据采集

KAP 基于数据库系统内部反馈的各项数据指标&#xff0c;可帮助用户全面掌握 KaiwuDB 集群的整体运行情况&#xff0c;实时监测集群相关性能&#xff0c;可提供整体资源和集群状态角度的系统监控。 除此之外&#xff0c;KaiwuDB 数据库内部开发实现基于负载业务的行为数据采集功…

(九)栅格数据的空间分析——表面分析①

生成等值线 文章目录 生成等值线 1.等值线2.等值线质量3.控制等值线质量3.1对数据进行平滑处理3.2调整起始等值线 4.生成等值线4.1焦点统计4.2生成等值线 1.等值线 沿着特定等值线的折线 (polyline) 可识别出值相同的位置。等值线也是一种呈现表面的有效形式&#xff0c;因为它…

jmeter 报此错误 \report‘ as folder is not empty

jmeter 报此错误 \report’ as folder is not empty 解决方案 出现此错误的原因试因为同一个界面出现同样的文件&#xff0c;只要把文件删除&#xff0c;重新执行此命令即可。 删除文件框住得report和result.jtl 即可 执行成功

计算机图形学 3D渲染 笔记(一)

1 坐标系 大多数计算机屏幕采用的坐标系是以左上角为原点&#xff0c;水平&#xff08;右&#xff09;为x轴&#xff0c;纵向&#xff08;下&#xff09;为y轴3D图形学习中通常使用另一种坐标系&#xff0c; 即 正中心为原点&#xff0c;水平&#xff08;右&#xff09;为x轴&…

【算法题解】44. N 叉树的前序遍历(递归 + 迭代)

这是一道 简单 题 https://leetcode.cn/problems/n-ary-tree-preorder-traversal/ 题目 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示&#xff0c;每组子节点由空值 null 分隔&#xff08;请参见示例&…

Golang源码探究——从Go程序的入口到GMP模型

在大多数的编程语言中&#xff0c;main函数都是用户程序的入口函数&#xff0c;go中也是如此。那么main.main是整个程序的入口吗, 肯定不是&#xff0c;因为go程序依赖于runtime&#xff0c;在程序的初始阶段需要初始化运行时&#xff0c;之后才会运行到用户的main函数&#xf…

【话题达人】做开发时遇到过无理的需求吗?面对这些无理需求你是怎么做的?

导读 工作过程中难免遇见一些“神奇的甲方”&#xff0c;他们总是会给你提出一些匪夷所思甚至无厘头的需求。你是否也有这样的经历&#xff0c;面对这样“无理的需求”你又是怎么做的呢&#xff1f; 面对这些无理需求时你是怎么做的&#xff1f; 首先深入了解需求&#xff0…

C++一键安装工具(vcpkg)

0. 简介 相较于python而言&#xff0c;C因为其复杂的环境安装一直受到很多人的诟病&#xff0c;比如说一个pcl的安装就需要有很多操作步骤。译过程仍然复杂和多样化。当了解了这些还不够&#xff0c;我们还需要考虑预先编译出哪种类型的开源库程序。比如&#xff1a;Debug还是…

快速掌握MongoDB数据库(入门一条龙)

目录 一、介绍 二、安装指导 2.1 下载 2.2 安装注意事项 2.3 配置环境变量 2.4 校验是否配置成功 2.5 启动服务器 2.6 打开客户端 2.7 退出 2.8 修改参数配置 2.9 设置开启自启动服务 三、MongoDB基本操作 3.1 基本概念 3.2 基本命令 3.3 数据库的crud命令 四、…

七、云尚办公-Activiti入门

云尚办公系统&#xff1a;Activiti入门 B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布&#xff0c;并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步&#xff01;&#xff01;&am…

《C++高级编程》读书笔记(十三:C++ I/O揭秘)

1、参考引用 C高级编程&#xff08;第4版&#xff0c;C17标准&#xff09;马克葛瑞格尔 2、建议先看《21天学通C》 这本书入门&#xff0c;笔记链接如下 21天学通C读书笔记&#xff08;文章链接汇总&#xff09; 1. 使用流 1.1 流的含义 C 中预定义的流 缓冲的流和非缓冲的流…

SpringBoot:配置Jetty容器

&#x1f468;‍&#x1f393;作者&#xff1a;bug菌 ✏️博客&#xff1a; CSDN、 掘金、 infoQ、 51CTO等 &#x1f389;简介&#xff1a;CSDN、 掘金等社区优质创作者&#xff0c;全网合计7w粉&#xff0c;对一切技术都感兴趣&#xff0c;重心偏Java方向&#xff0c;目前运营…

c语言查漏补缺

例子一 #include<iostream> using namespace std;int main() {int a[5]{1,2,3,4,5};int* ptr (int*)(a1);printf("%d",*(ptr-1));return 0; }输出结果是&#xff1a;1&#xff0c;这个很好理解&#xff0c;数组名即数组的首地址&#xff0c;&#xff08;a1&a…

Android 13(T) - binder阅读(5)- 使用ServiceManager注册服务2

上一篇笔记我们看到了binder_transaction&#xff0c;这个方法很长&#xff0c;这一篇我们将把这个方法拆分开来看binder_transaction做了什么&#xff0c;从而学习binder是如何跨进程通信的。 1 binder_transaction static void binder_transaction(struct binder_proc *proc…

如何将自定义起步依赖打成包

说明&#xff1a;之前做过一个自定义的OSS起步依赖&#xff08;http://t.csdn.cn/9aYr5&#xff09;&#xff0c;但是当时只是新建了一个Demo模块来测试自定义起步依赖能成功使用&#xff0c;本文介绍如何把自定义的起步依赖打成jar包&#xff0c;供其他项目或其他人引入依赖就…

华为云CodeArts TestPlan测试设计:守护产品开发质量之魂

华为产品质量的守护神 华为云CodeArts TestPlan测试设计是华为产品质量的守护神。华为云CodeArts TestPlan提供多维度测试设计模板、“需求-场景-测试点-测试用例” 四层测试分解设计能力&#xff0c;启发测试人员发散性思维&#xff0c;对项目环境、测试对象、质量标准、测试…

【SpringBlade-权限缺陷】API鉴权逻辑缺陷漏洞

目录 一、理论部分 简介 如何通过认证 API 鉴权 配置API放行 细颗粒度鉴权配置 结尾 二、实战部分 一、理论部分 简介 Secure 基于 JWT 封装&#xff0c;每次请求的时候&#xff0c;会拦截到需要鉴权的API请求&#xff0c;并对其请求头携带的Token进行认证。若 Token…