MySQL主从复制——概念、原理、搭建过程

文章目录

    • 1.主从复制概念
    • 2.主从复制原理
    • 3.主从复制结构的搭建
      • 3.1 主库配置
      • 3.2 从库配置
    • 4.测试主从复制是否搭建成功
    • 5.主从复制的小结

DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。

DDL(data definition language)是数据定义语言:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。

DCL(DataControlLanguage)是数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。

1.主从复制概念

主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。
在这里插入图片描述

2.主从复制原理

主库中的数据是怎么同步到从库中的呢?
主库一旦发生增删改等操作以及执行DDL语句的时候,主库会将所有的数据变更写入到一份binlog二进制日志当中。在这份二进制日志当中就记录着主库所有的数据变更。

从库涉及两个线程,一个线程叫 IOthread,它会发起一个请求来连接master数据库,并读取master数据库中的binlog日志。当binlog日志读取并且返回之后 IOthread会写入到slave自身的一份日志当中,这份日志叫中继日志Relay log。另外slave中还有另外一个叫SQLthread的线程,这个SQLthread主要负责读取中继日志中的数据,然后把中继日志中所记录的数据变化,再反映到自身数据库的数据变化,从而保证主从数据库是一致的。
在这里插入图片描述

3.主从复制结构的搭建

在这里插入图片描述

#关闭防火强
systemctl stop firewalld
#关闭防火墙的开机自启
systemctl disable firewalld

在这里插入图片描述

#查看服务器mysql的状态
systemctl stop firewalld

在这里插入图片描述

3.1 主库配置

在这里插入图片描述

vim /etc/my.cnf

在这里插入图片描述
配置完主库后重启主库

systemctl restart mysqld

在这里插入图片描述

下一步需要登陆主库,并在主库上创建一个远程连接账号,并赋予主从复制权限。

登陆mysql指令:

mysql -uroot -p

@%表示创建的这个用户可以在任意主机上访问当前服务器
创建远程连接账户: @%表示创建的这个用户可以在任何服务器上

CREATE USER 'itcast'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@123456';

给itcast用户分配主从复制的权限:

GRANT REPLICATION SLAVE ON *.* TO 'itcast'@'%';

在这里插入图片描述
通过以下指令查看二进制日志的坐标:

show master status;

在这里插入图片描述

3.2 从库配置

对于从库来说我们只需要从从库里面进行查询即可,不需要从从库里面进行写入操作,所以将read-only设置为1,这是设置的只读仅仅代表的是对普通用户是只读的,如果这个用户具有超级管理员权限,它也是可以进行读写的,如果想要将超级管理员的读写功能也变成只读的,也可以再设置一个参数,这个参数叫super-read-only=1
在这里插入图片描述

修改从库mysql配置文件:

vim /etc/my.cnf

添加两条配置:
在这里插入图片描述
重启从库mysql:

systemctl restart mysqld

接着配置主库与从库使其相互关联:
设置主库配置(从库中执行下面的语句
8.0.23之后的版本设置如下:

CHANGE REPLICATION SOURCE TO SOURCE_HOST='xxx.xxx’,SOURCE_USER='xxx',SOURCE_PASSWORD='xxx',SOURCE_LOG_FILE='xxx',SOURCE_LOG_POS=xxx;

8.0.23之前的版本设置如下:

CHANGE MASTER TO MASTER_HOST SOURCE='xxx.xxx.xxx.xxx’,MASTER_USER='xxx',MASTER_PASSWORD='xxx',MASTER_LOG_FILE='xxx',MASTER_LOG_POS=xxx;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

start replica;

在这里插入图片描述
执行完上面的命令,主从复制就已经启动了。
\G 的作用是显示日志的时候每一列数据转换为每一行,查看起来比较方便

show replica status\G;

在这里插入图片描述
在这里插入图片描述
IO_runing表示IO那组线程运行是否正常,表示读取二进制日志并写入从库中继日志的线程
SQL——running表示那一组sql线程运行是否正常。表示从库读取中继日志,并写入从库反映自身变化的。

4.测试主从复制是否搭建成功

首先查看主库中的数据和从库中的数据,并在主库当中执行增删改的操作。

在这里插入图片描述

主库中创建一个数据库db01并插入数据
在这里插入图片描述
查看从库中是否同步?
在这里插入图片描述
在这里插入图片描述
刚才演示的主库和从库复制,它是从二进制日志的当前位置往后进行同步的,如果之前的数据也需要同步到从库中,这时就需要将主库的数据导入到一个sql文件中,然后在从库中执行此sql脚本,来保证主库和从库的初始数据是一致的。然后再从当前位置往后进行主从复制的同步。

5.主从复制的小结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0基础学习VR全景平台篇 第75篇:多现场

多现场是指将多台设备的直播画面整合到一个直播活动链接里面,让用户自行选择切换要看哪个直播画面的功能。既可以是同一个活动的不同角度直播,也可以是异地的直播。多现场不需要导播台,并且可以同时支持平面直播和VR直播的混合切换。多现场仅…

第126天:内网安全-隧道技术SSHDNSICMPSMB上线通讯LinuxMac

知识点 #知识点: 1、入站规则不出网上线方案 2、出站规则不出网上线方案 3、隧道技术-SMB&ICMP&DNS&SSH 4、控制上线-Linux&Mac&IOS&Android-连接方向:正向&反向(基础课程有讲过) -内网穿透&#xf…

JSP--Java的服务器页面

jsp是什么? jsp的全称是Java server pages,翻译过来就是java的服务器页面。 jsp有什么作用? jsp的主要作用是代替Servlet程序回传html页面的数据,因为Servlet程序回传html页面数据是一件非常繁琐的事情,开发成本和维护成本都非常高…

增量式PID算法及其MATLAB实现

增量式PID算法是一种常用的控制算法,用于控制系统中的反馈控制。它通过对系统的误差进行递推式的计算,实现对系统输出的调节,使得系统的输出逐渐趋向于设定值。 delta u(k)=u(k)-u(k-1)=Kp*(e(k)-e(k-1))+Ki*e(k)+Kd*(e(k)-2*e(k-1)+e(k-2)) PID算法由三个部分组成:比例(…

EditPlus取消自动.bak备份

Tools->Preferences->File 将√取消

Linux知识点 -- 进程间通信(一)

Linux知识点 – 进程间通信(一) 文章目录 Linux知识点 -- 进程间通信(一)一、了解进程间通信1.进程间通信的必要性2.进程间通信的技术背景3.进程间通信的本质理解4.进程间通信的标准 二、匿名管道1.匿名管道通信的原理2.匿名管道的…

Service not registered 异常导致手机重启分析

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、Service not registered 异常导致手机重启二、Service not registered 解决方案 一、Service not registered 异常导致手机重启 1.重启 的部分Log如…

Web Worker API

Web Worker API Web Worker 使得在一个独立于 Web 应用程序主执行线程的后台线程中运行脚本操作成为可能。这样做的好处是可以在独立线程中执行费时的处理任务,使主线程(通常是 UI 线程)的运行不会被阻塞/放慢。 Web Worker概念与用法 Wor…

Maven引入本地jar包

maven做为一种强大的依赖管理工具,可以帮助我们更方便的管理项目中的依赖;而在使用过程中我们难免会有需要引入本地jar包的需求,这里踩过坑之后我分享俩种引入方式; 1.上传jar到本地maven仓库,再引入 使用此方法后可…

【DMA】认识 DMA 及其工作流程

DMA(Direct Memory Access),字面意思“直接访问内存”,无需 CPU 干预直接读写内存。传统CPU读写数据时,需要先将要使用的数据保存到 RAM,等要用时再从RAM 加载。 目录 一、传统CPU存取数据 二、认识DMA …

SpringBoot + ajax 实现分页和增删查改

0目录 1.SpringBoot 2.SpringBoot分页;增删改查 1.SpringBoot分页 创建数据库和表 创建SpringBoot工程,引入springboot下的分页依赖 配置application.yml 实体类 Mapper接口 Mapper.xml Service接口 Service实现类 控制层 测试 加…

Kylin v10基于cephadm工具离线部署ceph分布式存储

1. 环境: ceph:octopus OS:Kylin-Server-V10_U1-Release-Build02-20210824-GFB-x86_64、CentOS Linux release 7.9.2009 2. ceph和cephadm 2.1 ceph简介 Ceph可用于向云平台提供对象存储、块设备服务和文件系统。所有Ceph存储集群部署都从…

Webpack开启本地服务器;HMR热模块替换;devServer配置;开发与生成环境的区分与配置

目录 1_开启本地服务器1.1_开启本地服务器原因1.2_webpack-dev-server 2_HMR热模块替换2.1_认识2.2_开启HMR2.3_框架的HMR 3_devServer配置3.1_host配置3.2_port、open、compress 4_开发与生成环境4.1_如何区分开发环境4.2_入口文件解析4.3_区分开发和生成环境配置 1_开启本地服…

无涯教程-Perl - 环境配置

在开始编写Perl程序之前,让我们了解如何设置我们的Perl环境。 您的系统更有可能安装了perl。只需尝试在$提示符下给出以下命令- $perl -v 如果您的计算机上安装了perl,那么您将收到以下消息: This is perl 5, version 16, subversion 2 (v5.16.2) b…

深度学习之用PyTorch实现线性回归

代码 # 调用库 import torch# 数据准备 x_data torch.Tensor([[1.0], [2.0], [3.0]]) # 训练集输入值 y_data torch.Tensor([[2.0], [4.0], [6.0]]) # 训练集输出值# 定义线性回归模型 class LinearModel(torch.nn.Module):def __init__(self):super(LinearModel, self)._…

中国农村程序员学习此【正则表达式进阶】发明cahtGPT,购买大平层,开上帕拉梅拉,迎娶白富美出任CEO走上人生巅峰

注:最后有面试挑战,看看自己掌握了吗 文章目录 限制可能的用户名匹配空白字符匹配非空白字符指定匹配的上限和下限只指定匹配的下限指定匹配的确切数量检查全部或无正向先行断言和负向先行断言检查混合字符组使用捕获组重用模式使用捕获组搜索和替换删除…

关于电子接插件插拔耐久试验

500次的插拔次数怎么来的? - 知乎 EIA-364-09耐插拔测试方法 - 豆丁网 (docin.com) 连接器的电气性能测试要遵循什么样的国家标准?_插拔_绝缘_规定 (sohu.com) 连接器的插拔寿命标准 - 百度文库 (baidu.com) IEC 60512-1:2018 电气和电子设备用连接器. 试验和测量…

ResNet50卷积神经网络输出数据形参分析-笔记

ResNet50卷积神经网络输出数据形参分析-笔记 ResNet50包含多个模块,其中第2到第5个模块分别包含3、4、6、3个残差块 5049个卷积(3463)*31和一个全连接层 分析结果为: 输入数据形状:[10, 3, 224, 224] 最后输出结果:linear_0 [10,…

【Spring】Spring中的设计模式

文章目录 责任链模式工厂模式适配器模式代理模式模版方法观察者模式构造器模式 责任链模式 Spring中的Aop的通知调用会使用责任链模式责任链模式介绍 角色:抽象处理者(Handler)具体处理者(ConcreteHandler1)客户类角…

Kafka

消息中间件的作用 异步解耦削峰填谷 MQ对比 RabbitMQ 优点:管理界面最好用;支持语言较多; 缺点:不支持扩展(集群) 主要流程:生产者发送消息给交换机,通过路由机制投递到对应的队…