当前位置: 首页 > news >正文

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主从复制是一个异步的数据复制过程&#xff0c;允许将一个MySQL服务器&#xff08;主服务器&#xff09;上的数据复制到一个或多个MySQL服务器&#xff08;从服务器&#xff09;。主从复制提供了…...

rust - 使用log4rs打印日志

本文提供了一种通过log4rs库记录日志的方法。这里没有采用读取yaml文件的方式&#xff0c;而是通过对象构造的方式来初始化日志&#xff0c;用于发包时不带配置文件的场景。 初始化日志 在release环境&#xff0c;仅需要将日志打印到文件中&#xff0c;而日常开发时&#xff…...

数据结构:单调栈和单调队列

文章目录 一、单调栈1.1、栈的思想1.2、单调栈1.2.1、单调栈的基本应用&#xff1a;找出数组中每个元素右侧第一个更大的元素1.2.2、单调栈的基本应用&#xff1a;找出数组中每个元素左侧第一个更大的元素1.2.3、单调栈拓展1.2.4、单调栈LeetCode题单 二、单调队列2.1、队列的思…...

大模型RAG性能提升路径

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径&#xff1a;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…...

基于单片机声音分贝采集和显示控制系统设计

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

CentOS使用Docker部署Halo并结合内网穿透实现公网访问本地博客

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

打造高效自动化渗透测试系统:关键步骤与实践

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

绿联 部署vocechat,搭建私人聊天服务器,用于小型团队和家庭环境

1、镜像 privoce/vocechat-server:latest 2、安装 2.1、基础设置 重启策略&#xff1a;容器退出时总是重启容器。 2.2、网络 桥接即可。 2.3、存储空间 装载路径&#xff1a;/home/vocechat-server/data不可变更&#xff0c;权限读写。 2.4、端口设置 容器端口3000不可变…...

考研数学|高效刷透汤家凤《1800》经验分享

当然不需要换老师&#xff0c;如果你在基础阶段连汤老师的课都听不进去&#xff0c;那么换其他老师的话&#xff0c;很大可能也是白搭。 如果你现在对于1800还是一筹莫展的话&#xff0c;那么很明显&#xff0c;这反映出前期基础不扎实&#xff0c;没有真正理解和掌握这部分内…...

LLM推理入门指南②:深入解析KV缓存

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

上采样技术在语义分割中的应用

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

linux 组建raid5详细操作

raid5最多运行损坏一个盘&#xff0c;最少3个盘&#xff0c;容量为少一块硬盘的容量之和。 如果硬盘数量较多&#xff0c;比如8块以上&#xff0c;建议用raid6&#xff0c;raid6最多允许两块硬盘损坏。 如果需要 一、安装raid软件 deb包 apt-get install mdadm或dnf包 dnf …...

机器学习概念、步骤、分类和实践

在当今数字化时代&#xff0c;机器学习已经渗透到我们生活的方方面面&#xff0c;从智能手机应用、搜索引擎优化&#xff0c;到自动驾驶汽车、医疗诊断等&#xff0c;其应用无处不在。本文将带您走进机器学习的世界&#xff0c;了解它的基本概念、步骤、分类以及实践应用。 一…...

钉钉服务端API报错 错误描述: robot 不存在;解决方案:请确认 robotCode 是否正确

problem 调用钉钉服务端API&#xff0c;机器人发送群聊消息&#xff0c;后台返回报错信息: 钉钉服务端API报错 错误描述: robot 不存在&#xff1b;解决方案:请确认 robotCode 是否正确&#xff1b; reason 定位: 登录后台&#xff0c;查看机器人是存在查看机器人调用权限接…...

Linux 开发环境以及编译链接

再谈编译链接 C函数重载与编译链接-CSDN博客 之前我已经写过文章简单介绍了编译链接要做的一些操作。现在为了能更好的理解我们平时的开发环境&#xff0c;我会在Linux系统上完整地走一遍流程。 环境描述 我们使用普通用户在Linux上进行操作&#xff0c;先写一段测试代码。 …...

SmartChart的部署以及可能遇见的报错解决方案

简介 数据可视化是一种将数据转化为图形的技术&#xff0c;可以帮助人们更好地理解和分析数据。但是&#xff0c;传统的数据可视化开发往往需要编写大量的代码&#xff0c;或者使用复杂的拖拽工具&#xff0c;不仅耗时耗力&#xff0c;而且难以实现个性化的需求。有没有一种更…...

【Node.js从基础到高级运用】十九、Node.js 捕获错误之“未捕获的异常”

引言 在 Node.js 应用程序中&#xff0c;错误处理是保证应用稳定性和可靠性的关键部分。特别是“未捕获的异常”&#xff08;uncaught exceptions&#xff09;&#xff0c;如果不妥善处理&#xff0c;很可能会导致整个进程崩溃。在本文中&#xff0c;我们将探讨如何在 Node.js …...

vue 计算属性

基础示例​ 模板中的表达式虽然方便&#xff0c;但也只能用来做简单的操作。如果在模板中写太多逻辑&#xff0c;会让模板变得臃肿&#xff0c;难以维护。比如说&#xff0c;我们有这样一个包含嵌套数组的对象&#xff1a; const author reactive({name: John Doe,books: [V…...

RedissonLock-tryLock-续期

redisson版本3.16.6 1.什么是看门狗 Redisson提供的分布式锁是支持锁自动续期的&#xff0c;也就是说&#xff0c;如果线程仍旧没有执行完&#xff0c;那么redisson会自动给redis中的目标key延长超时时间&#xff0c;这在Redisson中称之为 Watch Dog 机制。默认情况下&#x…...

MSTP环路避免实验(华为)

思科设备参考&#xff1a;MSTP环路避免实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 MSTP&#xff08;多生成树协议&#xff09;&#xff0c;MSTP解决了STP和RSTP没有考虑vlan的问题&#xff0c;STP和RSTP将所有的vlan共享为一个生成树实例&#xff0c;无法实现…...

IoT网关在智能制造工厂生产线监控与管理中的应用-天拓四方

随着工业4.0时代的到来&#xff0c;智能制造已成为工业发展的重要方向。IoT网关在智能制造工厂中扮演着关键角色&#xff0c;它能够实现设备间的互联互通、数据的实时采集与处理&#xff0c;以及生产线的智能监控与管理。本案例将详细介绍IoT网关在智能制造工厂生产线监控与管理…...

niushop单商户V5多店版源码分享三端uniapp打包方法包括PC端_小程序或h5端打包_收银端打包_APP端打包_商户端

目前多店版有四端uniapp&#xff0c;包括PC端uniapp&#xff0c;商家端uniapp&#xff0c;收银端uniapp&#xff0c;门店手机端uniapp&#xff0c;下面我总结下这些端的打包流程希望能帮助到大家&#xff0c;需要交流的可以看我昵称或者点我头像关注我分享代码和教程 一.niush…...

npm包发布

一、npm npm&#xff08;Node Package Manager&#xff09;是 Node.js 的包管理工具&#xff0c;用于安装、分享和管理 JavaScript 包和项目依赖。npm 是 Node.js 的默认包管理器&#xff0c;随同 Node.js 一起安装。 二、npm主要功能特点 包管理&#xff1a;npm 允许开发者…...

C#使用SQLite(含加密)保姆级教程

C#使用SQLite 文章目录 C#使用SQLite涉及框架及库复制runtimes创建加密SQLite文件生成连接字串执行SQL生成表SQLiteConnectionFactory.cs 代码结构最后 涉及框架及库 自己在NuGet管理器里面安装即可 Chloe.SQLite&#xff1a;ORM框架Microsoft.Data.Sqlite.Core&#xff1a;驱…...

C# 异步与 Unity 协程(实例讲解)

C#异步编程实例&#xff1a; 假设我们有一个需要从Web获取数据的简单应用。我们可以使用C#的异步编程模型来避免UI线程被HTTP请求阻塞 1using System.Net.Http; 2using System.Threading.Tasks; 3 4public class AsyncExample 5{ 6 public async Task<string> Fetch…...

iOS - Runloop介绍

文章目录 iOS - Runloop介绍1. 简介1.1 顾名思义1.2. 应用范畴1.3. 如果没有runloop1.4. 如果有了runloop 2. Runloop对象3. Runloop与线程4. 获取Runloop对象4.1 Foundation4.2 Core Foundation4.3 示例 5. Runloop相关的类5.1 Core Foundation中关于RunLoop的5个类5.2 CFRunL…...

探究分布式事务:深入ACID特性在分布式系统中的挑战与解决方案

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起进步&am…...

PCI总线管脚定义(引脚定义)

文章目录 1&#xff1a; 参考资料的链接2: 图片说明3&#xff1a;PCI文字说明每日好图 1&#xff1a; 参考资料的链接 PCI bus pinout PCI三种标准引脚信号定义 PCI bus pinout 2: 图片说明 A面和B面正反 PCI Universal Card 32/64 bit ----------------------------------…...

万字详解PHP+Sphinx中文亿级数据全文检索实战(实测亿级数据0.1秒搜索耗时)

Sphinx查询性能非常厉害&#xff0c;亿级数据下输入关键字&#xff0c;大部分能在0.01~0.1秒&#xff0c;少部分再5秒之内查出数据。 Sphinx 官方文档&#xff1a;http://sphinxsearch.com/docs/sphinx3.html极简概括&#xff1a; 由C编写的高性能全文搜索引擎的开源组件&…...

杭州建设网站/常州seo博客

概述 Unix 域套接字是一种客户端和服务器在单主机上的 IPC 方法。Unix 域套接字不执行协议处理&#xff0c;不需要添加或删除网络报头&#xff0c;无需验证和&#xff0c;不产生顺序号&#xff0c;无需发送确认报文&#xff0c;比因特网域套接字的效率更高。Unix 域套接字提供字…...

网站程序调试模式怎么做/sq网站推广

方法一(此方法支持 select 语句&#xff0c;insert,delect,update不支持) &#xff1a;  $sql DB::table(my_table)->select()->tosql();方法二(此方法支持 select 语句&#xff0c;insert,delect,update不支持) &#xff1a; DB::connection()->enableQueryLog(); …...

下载网站软件免费安装/湖人排名最新

科目二总结 注意!!! 以下情况根据具体情况调节 1.左倒车入库 直行&#xff0c;车头碰住黄线的时候朝左打死&#xff0c;人对准直角朝右回半圈&#xff0c;目视前方&#xff0c;车正了朝右回到初始角度&#xff0c;w朝上 倒车&#xff1a;挂倒挡&#xff0c;后视镜的角碰到黄…...

重庆搜索引擎优化/厦门seo排名

Jenkins项目团队决定在稳定性和为Kubernetes等平台提供更好的支持方面分配一些工作量。前者可能会发生一些向后不兼容的变更&#xff0c;将影响发布模型并提供具有更多预置选项的版本&#xff0c;而后者将在与现有Jenkins X项目齐头并进。\u0026#xD;\u0026#xD;Jenkins目前在处理…...

网站怎么做漂亮点/绍兴seo网站管理

在Python的交互式命令行写程序&#xff0c;好处是一下就能得到结果&#xff0c;坏处是没法保存&#xff0c;下次还想运行的时候&#xff0c;还得再敲一遍。 所以&#xff0c;实际开发的时候&#xff0c;我们总是使用一个文本编辑器来写代码&#xff0c;写完了&#xff0c;保存为…...

网络工作室是什么行业/北京seo分析

文章简介&#xff1a;由浙江卫视和创客星球联合出品、葡萄积木冠名播出的详情>>作者&#xff1a;飞鸟2020-10-28 14:42整理铁甲犀牛多42级后就可以进化了&#xff0c;可以进化为铁详情>>阅读: 8日期: 2020-10-28原标题&#xff1a;铁甲威虫之骑刃王&#xff0c;龙尊…...