MySQL数据库主从复制和读写分离
MySQL数据库主从复制和读写分离
。## MySQL主从复制
MySQL主从复制的概念
MySQL主从复制是一个异步的数据复制过程,允许将一个MySQL服务器(主服务器)上的数据复制到一个或多个MySQL服务器(从服务器)。主从复制提供了数据冗余和高可用性,常用于读写分离、负载均衡和备份等场景。
**1主从复制的过程
MySQL主服务器开启二进制日志,MySQL主服务器的dump线程响应从服务器IO线程,从服务器的IO线程会定期检查主服务器的二进制日志是否有新的更新,如果有,它会主动发起请求。从服务器的IO线程请求到了更新的二进制日志后会将二进制日志更新写入中继日志,此时从服务器的SQL线程会读取中继日志并将中继日志中事务执行,并存入硬盘
2支持复制的类型
(1)STATEMENT:基于语句的复制。在服务器上执行sql语句,在从服务器上执行同样的语句,mysql默认采用基于语句的复制,执行效率高。
(2)ROW:基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
(3)MIXED:混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。
主从复制的部署
部署环境
Master服务器 192.168.20.10
Slave1服务器192.168.20.20
Slave2服务器192.168.20.30
关闭防护墙
systemctl stop firewalld
关闭selinux
setenforce 0
1时间同步
主服务器与从服务器要进行时间同步
主服务器配置
安装时间同步服务
yum install ntp -y
vim /etc/ntp.conf
添加
server 127.127.20.0
fudge 127.127.20.0 stratum 8
service ntpd start
启动ntpd 服务
从服务器配置
定时进行时间同步
yum install ntp ntpdate -y
service ntpd start
/usr/sbin/ntpdate 192.168.20.10
crontab -e
*/30 * * * * /usr/sbin/ntpdate 192.168.20.10
2配置Mysql服务
主服务器
vim /etc/my.cnf
server-id = 1 服务器id号
log-bin=master-bin 开启主服务器二进制文件
binlog_format = MIXED 使用MIXED模式
log-slave-updates=true 允许slave从master复制数据时可以写入到自己的二进制日志
systemctl restart mysqld
mysql -uroot -p123123
给从服务器赋权
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.20.%' IDENTIFIED BY '123123';
FLUSH PRIVILEGES;
查看主服务器偏移量
show master status;
偏移量为1036
从服务器的mysql配置
vim /etc/my.cnf
server-id = 2
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
relay_log_recovery = 1
systemctl restart mysqld.service
CHANGE master to master_host='192.168.20.10',master_user='myslave',master_password='123123',master_log_file='master-bin.000001',master_log_pos=1036;
master_log_file 和 master_log_pos要和查询出来的一样
启动同步
start slave;
查看同步状态
show slave status\G
测试
在主MySQL是创建一个新库glcs
create database glcs;
读写分离的的搭建
新开一台虚拟主机
192.168.20.40
新机器上安装Amoeba服务
安装Amoeba服务
下载我上传的Amoeba压缩包
解压包
cd /opt/amoeba
tar xfv amoeba-mysql-binary-2.2.0.tar.gz
chmod -R 777 /opt/amoeba
/opt/amoeba/bin/amoeba
输入/opt/amoeba/bin/amoeba以后显示amoeba start|stop则表示安装成功
先在Master、Slave1、Slave2 的mysql上开放权限给 Amoeba 访问
grant all on *.* to test@'192.168.20.%' identified by '123123';
再回到amoeba服务器配置amoeba服务
cd /opt/amoeba/conf/
cp amoeba.xml amoeba.xml.bak
vim amoeba.xml
--30行--
<property name="user">amoeba</property>
--32行--
<property name="password">123456</property>
--115行--
<property name="defaultPool">master</property>
--117-去掉注释-
<property name="writePool">master</property>
<property name="readPool">slaves</property>
cp dbServers.xml dbServers.xml.bak
vim dbServers.xml #修改数据库配置文件
--23行--注释掉 作用:默认进入test库 以防mysql中没有test库时,会报错
<!-- <property name="schema">test</property> -->
--26--修改
<property name="user">test</property>
--28-30--去掉注释
<property name="password">123456</property>
--45--修改,设置主服务器的名Master
<dbServer name="master" parent="abstractServer">
--48--修改,设置主服务器的地址
<property name="ipAddress">192.168.10.15</property>
--52--修改,设置从服务器的名slave1
<dbServer name="slave1" parent="abstractServer">
--55--修改,设置从服务器1的地址
<property name="ipAddress">192.168.10.14</property>
--58--复制上面6行粘贴,设置从服务器2的名slave2和地址
<dbServer name="slave2" parent="abstractServer">
<property name="ipAddress">192.168.10.16</property>
--65行--修改
<dbServer name="slaves" virtual="true">
--71行--修改
<property name="poolNames">slave1,slave2</property>
启动amoeba
/usr/local/amoeba/bin/amoeba start&
测试
客户端
yum install -y mariadb-server mariadb
systemctl start mariadb.service
在客户端服务器上测试:
mysql -u amoeba -p123456 -h 192.168.20.40 -P8066
查询时出现报错则在主服务器上添加
CREATE USER 'amoeba'@'192.168.20.40' IDENTIFIED BY '123123';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'amoeba'@'192.168.20.40';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
测试
#在主服务器上
use glcs;
create table test4 (id int(10),name varchar(10),address varchar(20));
#在两台从服务器上
stop slave; #关闭同步
use glcs;
#在slave1上:
insert into test4 values('1','gh','this_is_slave1');
#在slave2上:
insert into test4 values('2','lo','this_is_slave2');
#在主服务器上:
insert into test4 values('3','lx','this_is_master');
读写分离成功
相关文章:

MySQL数据库主从复制和读写分离
MySQL数据库主从复制和读写分离 。## MySQL主从复制 MySQL主从复制的概念 MySQL主从复制是一个异步的数据复制过程,允许将一个MySQL服务器(主服务器)上的数据复制到一个或多个MySQL服务器(从服务器)。主从复制提供了…...
rust - 使用log4rs打印日志
本文提供了一种通过log4rs库记录日志的方法。这里没有采用读取yaml文件的方式,而是通过对象构造的方式来初始化日志,用于发包时不带配置文件的场景。 初始化日志 在release环境,仅需要将日志打印到文件中,而日常开发时ÿ…...

数据结构:单调栈和单调队列
文章目录 一、单调栈1.1、栈的思想1.2、单调栈1.2.1、单调栈的基本应用:找出数组中每个元素右侧第一个更大的元素1.2.2、单调栈的基本应用:找出数组中每个元素左侧第一个更大的元素1.2.3、单调栈拓展1.2.4、单调栈LeetCode题单 二、单调队列2.1、队列的思…...
大模型RAG性能提升路径
大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模…...
机器视觉学习(九)—— 边缘检测
目录 一、边缘检测 1.1 Canny边缘检测 1.1.1 cv2.Canny函数 1.1.2 Canny边缘检测示例 1.2 角点检测 1.2.1 cv2.goodFeaturesToTrack()函数 1.2.2 OpenCV角点检测示例代码 1.3 直线检测 1.3.1 cv2.HoughLinesP()函数 1.3.2 OpenCV直线检测示例代码 1.4 圆形检测 1.4…...

基于单片机声音分贝采集和显示控制系统设计
**单片机设计介绍,基于单片机声音分贝采集和显示控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机声音分贝采集和显示控制系统设计,主要目标是实现声音分贝的实时采集、处理以及显示…...

CentOS使用Docker部署Halo并结合内网穿透实现公网访问本地博客
文章目录 1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤:1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 本文主要介绍如何在CentOS 7系统使…...

打造高效自动化渗透测试系统:关键步骤与实践
随着当前网络安全威胁的不断扩展与升级,开展渗透测试工作已经成为广大企业组织主动识别安全漏洞与潜在风险的关键过程。然而,传统的人工渗透测试模式对测试人员的专业能力和经验水平有很高的要求,企业需要投入较大的时间和资源才能完成。在此…...

绿联 部署vocechat,搭建私人聊天服务器,用于小型团队和家庭环境
1、镜像 privoce/vocechat-server:latest 2、安装 2.1、基础设置 重启策略:容器退出时总是重启容器。 2.2、网络 桥接即可。 2.3、存储空间 装载路径:/home/vocechat-server/data不可变更,权限读写。 2.4、端口设置 容器端口3000不可变…...

考研数学|高效刷透汤家凤《1800》经验分享
当然不需要换老师,如果你在基础阶段连汤老师的课都听不进去,那么换其他老师的话,很大可能也是白搭。 如果你现在对于1800还是一筹莫展的话,那么很明显,这反映出前期基础不扎实,没有真正理解和掌握这部分内…...

LLM推理入门指南②:深入解析KV缓存
在本系列文章《LLM推理入门指南①:文本生成的初始化与解码阶段》中,作者对Transformer解码器的文本生成算法进行了高层次概述,着重介绍了两个阶段:单步初始化阶段,即提示的处理阶段,和逐个生成补全词元的多…...

上采样技术在语义分割中的应用
目录 概要 一、概述 二、实现方法 1.转置卷积 2.反池化 3.双线性插值法 三、在经典网络中的的应用 1.U-Net 2.FCN 总结 概要 上采样是用于深度学习中提高语义分割精度的技术,可以实现图像放大和像素级别标注 一、概述 神经网络的基本结构为:…...

linux 组建raid5详细操作
raid5最多运行损坏一个盘,最少3个盘,容量为少一块硬盘的容量之和。 如果硬盘数量较多,比如8块以上,建议用raid6,raid6最多允许两块硬盘损坏。 如果需要 一、安装raid软件 deb包 apt-get install mdadm或dnf包 dnf …...
机器学习概念、步骤、分类和实践
在当今数字化时代,机器学习已经渗透到我们生活的方方面面,从智能手机应用、搜索引擎优化,到自动驾驶汽车、医疗诊断等,其应用无处不在。本文将带您走进机器学习的世界,了解它的基本概念、步骤、分类以及实践应用。 一…...

钉钉服务端API报错 错误描述: robot 不存在;解决方案:请确认 robotCode 是否正确
problem 调用钉钉服务端API,机器人发送群聊消息,后台返回报错信息: 钉钉服务端API报错 错误描述: robot 不存在;解决方案:请确认 robotCode 是否正确; reason 定位: 登录后台,查看机器人是存在查看机器人调用权限接…...
Linux 开发环境以及编译链接
再谈编译链接 C函数重载与编译链接-CSDN博客 之前我已经写过文章简单介绍了编译链接要做的一些操作。现在为了能更好的理解我们平时的开发环境,我会在Linux系统上完整地走一遍流程。 环境描述 我们使用普通用户在Linux上进行操作,先写一段测试代码。 …...

SmartChart的部署以及可能遇见的报错解决方案
简介 数据可视化是一种将数据转化为图形的技术,可以帮助人们更好地理解和分析数据。但是,传统的数据可视化开发往往需要编写大量的代码,或者使用复杂的拖拽工具,不仅耗时耗力,而且难以实现个性化的需求。有没有一种更…...
【Node.js从基础到高级运用】十九、Node.js 捕获错误之“未捕获的异常”
引言 在 Node.js 应用程序中,错误处理是保证应用稳定性和可靠性的关键部分。特别是“未捕获的异常”(uncaught exceptions),如果不妥善处理,很可能会导致整个进程崩溃。在本文中,我们将探讨如何在 Node.js …...
vue 计算属性
基础示例 模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。比如说,我们有这样一个包含嵌套数组的对象: const author reactive({name: John Doe,books: [V…...
RedissonLock-tryLock-续期
redisson版本3.16.6 1.什么是看门狗 Redisson提供的分布式锁是支持锁自动续期的,也就是说,如果线程仍旧没有执行完,那么redisson会自动给redis中的目标key延长超时时间,这在Redisson中称之为 Watch Dog 机制。默认情况下&#x…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...