主从复制 [学习笔记] MaterSlave

news2024/11/26 9:33:41

文章目录

  • 前言
  • MySQL主从复制的实战案例
    • 1、环境搭建
    • 2、主库配置,进入vim /etc/my.cnf
    • 3、重启数据库
    • 4、建立同步账号
    • 5、锁表设置只读
    • 6、设置主库状态
    • 7、备份数据库资料
    • 8、解锁
    • 9、主库备份数据上传到从库
    • 10、slave从库设置
    • 11、还原数据的备份
    • 12、设定从主库同步


前言

首先,我们提取几个问题,什么是MySQL的主从复制?我们为什么要去使用MySQL的主从复制?MySQL的主从复制的原理是什么?如何实现MySQL的主从复制呢?

其次
MySQL内建的复制功能是构建大型,高性能应用程序的基础
通过将MySQL的某一台主机(master)的数据复制到其他主机(slaves)上,并重新执行一遍来执行
复制过程中一台服务器充当主服务器,而其他一个或多个其他服务器充当从服务器

1. MySQL支持的复制类型
基于语句(statement)的复制
在主服务器上执行SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。
基于行(row)的复制
把改变的内容复制过去,而不是把命令在从服务器上执行一遍。从MySQL 5.0开始支持。
混合型(mixed)的复制
默认采用基于语句的复制,一旦发现基于语句的无法精确复制时,就会采用基于行的复制。
2. 为什么要使用MySQL的主从复制?
1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表;
2、做数据的热备;
3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能;

3. 主从复制原理图
在这里插入图片描述

1、MySQL将数据变化记录到二进制日志中;
2、Slave将MySQL的二进制日志拷贝到Slave的中继日志中;
3、Slave将中继日志中的事件在做一次,将数据变化,反应到自身(Slave)的数据库

详细步骤:
1、从库通过手工执行change master to 语句连接主库,提供了连接的用户一切条件(user 、password、port、ip),并且让从库知道,二进制日志的起点位置(file名 position 号); start slave
2、从库的IO线程和主库的dump线程建立连接。
3、从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求。
4、主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程。
5、从库IO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中
6、从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经应用过的relay 会自动被清理purge

4. MySQL复制常用的拓扑结构
主从类型(Master-Slave)
主主类型(Master-Master)
级联类型(Master-Slave-Slave)

MySQL主从复制的实战案例

1、环境搭建

构建两个虚拟机,一主一从
主库(MySQL master):[ip为192.168.95.100 port为3306]
从库(MySQL slave ):[ip为192.168.40.110 port为3306]
在这里插入图片描述
在这里插入图片描述

2、主库配置,进入vim /etc/my.cnf

在[mysqld]下面配置日志记录
[mysqld]
log_bin = mysql-bin
server_id = 120

在这里插入图片描述

3、重启数据库

在这里插入图片描述

4、建立同步账号

在主库上面创建出从库的同步账号

mysql>grant replication slave on *.* to 'rep'@'192.168.40.%' identified by 'redhat'
mysql>show grants for 'rep'@'192.168.40.%';

在这里插入图片描述

5、锁表设置只读

这里的作用是:为后面备份准备,注意生产环境要提前申请停机时间

mysql> flush tables with read lock;

在这里插入图片描述
提示:如果超过设置时间不操作会自动解锁。

mysql> show variables like '%timeout%';

在这里插入图片描述

6、设置主库状态

查看主库状态,即当前日志文件名和二进制日志偏移量

mysql> show master status;

在这里插入图片描述

7、备份数据库资料

首先可以在自己的根目录或者说是其他目录下面创建一个目录来装备份后的文件数据,我这里是在根目录下创建的backup
在这里插入图片描述
然后再备份自己的数据库中的随机一个数据库中的表就行了,我这里是shcool1
在这里插入图片描述

[root@master ~]# mysqldump -uroot -p  -B school1 |gzip > /backup/mysql_bak.$(date +%F).sql.gz

在这里插入图片描述
备份成功!

8、解锁

mysql》 unlock tables;

在这里插入图片描述

9、主库备份数据上传到从库

我这里为了方便,又在从库中的根目录下创建了一个一模一样的backup目录

mysql> scp /backup/mysql_bak.2023.07-22.sql.gz 192.168.40.110:/backup/

在这里插入图片描述
这里就表示数据传到成功了,现在我们来看从库中是否有相同的mysql_bak.2023-07-22.sql.gz这个文件

在这里插入图片描述

一查看,有!就说明都正确了!但是在这儿还没有结束,继续看!

10、slave从库设置

同样的在/etc/my.cnf中加入以下语句

[root@slave ~]# #log_bin = /data/mysql/data/mysql-bin

设置server-id值并关闭binlog参数
server_id = 130

在这里插入图片描述
然后重启数据库

[root@slave ~]# systemclt restart mysqld

11、还原数据的备份

可以将主库的shcool1删除掉,在进行备份还原


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
————————————————
[root@slave]# mysql -uroot -p < mysql_bak.2023-07-23sql

在这里插入图片描述
再去查看就会发现,备份已经还原欧克!

12、设定从主库同步

mysql> change master to
MASTER_HOST='192.168.95.120',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=329;

在这里插入图片描述


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

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

相关文章

物流智能搬运机器人|HEGERLS四向穿梭车在复杂生产场景下的智能化作业应用

一般而言&#xff0c;物流有三个基本环节&#xff1a;存取、输送和分拣。在存取环节&#xff0c;常用方式有两种&#xff1a;托盘存取和料箱存取。以前托盘存取应用得多一些&#xff0c;但随着电商、新零售的兴起&#xff0c;B2b、B2C业务快速增长&#xff0c;订单碎片化趋势明…

ripv2小实验

子网划分 192.168.1.0/24&#xff1a; 192.168.1.0/26 192.168.1.64/26 192.168.1.128/26 192.168.1.192/26 192.168.1.0/26划分为 192.168.1.0/26 192.168.1.4/26 192.168.1.8/26 192.168.1.12/26 192.168.1.16/26 192.168.1.20/26 192.168.…

IDEA如何打包springboot成jar包,并运行、停止、重启,本地依赖不能打包怎么办

1、将springboot项目打包成jar 第一步 这里要注意依赖的包的导入&#xff0c;有pom.xml中网络依赖导入&#xff0c;有的包是本地依赖导入&#xff0c;本地依赖的包只需在pom.xml加入一下代码即可&#xff01; <dependency><groupId>jacob</groupId>//名称…

idea设置git 忽略的文件

1、FIle-->setting 打开设置对话框。 2、 找到如图所示的FileType。 3、添加需要忽略的文件&#xff0c;比如idea&#xff0c;classes&#xff0c;添加完后&#xff0c;点击apply、OK 保存。 注&#xff1a;本设置基于idea 2023.1.3版本

【FPGA】串口通信讲解-状态机判断数据值

&#x1f389;欢迎来到FPGA专栏~串口通信讲解 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指正&…

【ShaderToy中图形效果转译到UnityShaderlab案例分享,实现粒子场_ParticleField】

Shader"ShaderToy/ParticleField" {Properties{_iMouse("iMouse", Vector) = (0,0,0,0)}SubSha

怎么把PDF转为word?1分钟解决难题

PDF文件在我们的电脑上应用非常广泛&#xff0c;由于其较高的安全性和兼容性&#xff0c;得到了广泛的认可。然而&#xff0c;对于一些人来说&#xff0c;PDF文件不能直接进行编辑和修改可能是一个问题。因此&#xff0c;通常我们需要将其转换为Word格式&#xff0c;以便在Word…

uniapp 微信小程序 input详解 带小数点的input、可查看密码的输入框input

官网文档地址 1、template <!-- 本示例未包含完整css&#xff0c;获取外链css请参考上文&#xff0c;在hello uni-app项目中查看 --> <template><view><view class"uni-common-mt"><view class"uni-form-item uni-column"&g…

Mysql 主从复制、读写分离

目录 前言 一、主从复制原理 1.1 MySQL的复制类型 1.2 mysql主从复制的工作原理 1.3 MySQL主从复制延迟 1.4 MySQL四种同步方式 1.5 MySQL支持的复制类型 二、 MySQL应用场景 三、主从复制实验 3.1 MySQL主从服务器时间同步 3.1.1 安装ntp、修改配置文件 3.1.2 两台…

如何查看小程序的APPID和AppSecret

小程序APPID可以在手机上打开小程序后&#xff0c;点击右上角三点&#xff1a; 然后点击中间位置的小程序名称&#xff0c;进入小程序介绍页面&#xff1a; 点击“更多资料”后&#xff0c;进入页面就可以看到上方有APPID&#xff1a; 另一种方法&#xff1a; 在微信公众平台登…

安装:【vue】npm install -g @vue/cli出现错误

安装Vue脚手架&#xff0c;cli就是Command Line Interface 命令行接口 工具 进行到npm install -g vue/cli这一步出现错误&#xff0c;操作步骤如下&#xff1a; 1.通过 wins打开开始栏的搜索框&#xff0c;输入cmd&#xff0c;管理员身份运行 2.先下载node.js 不知道有没有…

数据库应用:Mycat+HAProxy+Keepalived实现高可用

目录 一、理论 1.高可用 2.部署高可用 二、实验 1.MycatHAProxyKeepalived实现高可用 三、问题 1.开启HA-Proxy失败 2. VMware 克隆linux 网卡UUID重复问题 3.keepalived状态报错 四、总结 一、理论 1.高可用 &#xff08;1&#xff09;概述 ①Mycat 在实际项目中…

蓝桥杯专题-真题版含答案-【加法变乘法】【三羊献瑞】【交换瓶子】【卡片换位】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

【专题速递】多模态数字人、多模态媒体大模型以及AI与AIGC对音视频的影响

// 随着AIGC内容的兴起&#xff0c;多模态媒体大模型逐渐进入大家的视野&#xff0c;而LLM的发展又让人们对未来音视频工具产生了新的思考。7月29日LiveVideoStackCon2023上海站AIGC与内容生产专场&#xff0c;集齐当下最热门的AIGC话题&#xff0c;与您共享。 AIGC与内容生产…

华为云使用 helm 模板

登录华为云上的 cce 进入对应的集群&#xff0c;选择模板管理 注意&#xff1a;华为云上不能配置 helm 仓库&#xff0c;只提供手动上传模板&#xff0c;模板的后缀为 tgz 下载模板的方式有很多种&#xff0c;这里用 xxl-job 举例 添加 helm 仓库更新仓库下载模板 helm rep…

基于linux下的高并发服务器开发(第二章)- 2.24 信号集及相关函数

1.用户通过键盘 Ctrl C, 产生2号信号SIGINT (信号被创建) 2.信号产生但是没有被处理 &#xff08;未决&#xff09; - 在内核中将所有的没有被处理的信号存储在一个集合中 &#xff08;未决信号集&#xff09; - SIGINT信号状态被存储在第二个标志位上 - 这个…

概率论和随机过程的学习和整理--番外15,如何计算N合1的合成数量问题?

目录 1 目标问题&#xff1a;多阶2合1的合成问题 1.1 原始问题 1.2 合成问题要注意&#xff0c;合成的数量 1.3 合成问题不能用马尔科夫链来解决 2 方案1&#xff1a;用合成公式合成多次能解决吗&#xff1f; --不能&#xff0c;解决不了递归的问题 3 方案2&#xff0c;…

微分流形2:流形上的矢量场和张量场

来了来了&#xff0c;切向量&#xff0c;切空间。流形上的所有的线性泛函的集合&#xff0c;注意是函数的集合。然后取流形上的某点p&#xff0c;它的切向量为&#xff0c;线性泛函到实数的映射。没错&#xff0c;是函数到实数的映射&#xff0c;是不是想到了求导。我们要逐渐熟…

uni-app 微信小程序:启用组件按需注入

uni-app 微信小程序&#xff1a;启用组件按需注入 文章目录 uni-app 微信小程序&#xff1a;启用组件按需注入一、官方文档按需注入注意事项 二、HBuilder X 设置三、效果 一、官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/ability/lazyload.html 按…

大数据面试题:HBase读写数据流程

面试题来源&#xff1a; 《大数据面试题 V4.0》 大数据面试题V3.0&#xff0c;523道题&#xff0c;679页&#xff0c;46w字 参考答案&#xff1a; 1、写数据流程 1&#xff09;Client先访问zookeeper&#xff0c;获取hbase:meta表位于哪个Region Server。 2&#xff09;访…