MySQL的主从复制(主从数据库都是Linux版本)

概述

1.什么是主从复制

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

2.主从复制作用

  • 数据备份:通过主从复制,可以将主数据库的数据复制到一个或多个从数据库中,以实现数据备份和灾难恢复。当主数据库出现故障时,可以快速地将从数据库提升为主数据库,并继续提供服务。

  • 负载均衡:通过主从复制,可以将读操作分发到从数据库上,从而减轻主数据库的负载,提高系统的并发能力和性能。

  • 数据分析:通过主从复制,可以将主数据库中的数据复制到从数据库中进行分析,避免对主数据库产生影响。

  • 高可用性:通过主从复制,可以实现数据库的高可用性,当主数据库出现故障时,可以快速地将从数据库提升为主数据库,保证系统的持续可用性。

3.原理

1、主从同步的过程中,主库会将所有的操作事件记录在 binlog 中,
2、如果binlog 日志发生了变化,主库生成一个 binlog dump 线程向从库 I/O 线程传送 binlog
3、从库上的 I/O 线程将 binlog 复制到自己的 relay log 中
4、最终由从库中的 SQL 线程读取 relay log 中的事件重放到从库上

4.同步策略

  • 异步复制:默认同步方式,客户端在向服务端发送请求后,master 处理完之后,直接返回客户端结果,接着在将对应的 log 信息发送给 slave 节点。主库不会等待从库的确认,因此效率较高。但在主库故障时可能会丢失一部分数据。
  • 半同步复制:master 处理完自身操作,将对应的 binary log 发送给从服务器,从服务器通过 io thread 写入到 relay log 中,然后将结果返回给 master,master 在收到 salve 的响应之后在返回给客户端。这样可以减少数据丢失的可能性,但会增加主库的延迟。
  • 同步复制:主库将变更写入二进制日志后,等待所有从库确认已收到并应用了这些变更,主库才会认为事务提交成功。这样可以确保所有从库与主库的数据完全一致,但会显著增加主库的延迟,并且如果有任何一个从库出现故障或网络延迟,整个系统的性能都会受到影响。
  • 并行复制:在MySQL 5.6及以后的版本中引入了并行复制的功能,可以通过多线程并发地将变更发送给多个从库,从而提高复制性能。

选择适合的主从同步策略需要根据具体的业务需求和系统性能来进行权衡。异步复制适用于对数据一致性要求不高,但对性能要求较高的场景;半同步复制适用于对数据一致性和性能都有一定要求的场景;同步复制适用于对数据一致性要求非常高的场景,但会带来较大的延迟。并行复制可以在高负载情况下提升复制性能。

部署

1.安装

首先安装两台数据库,这里我是采用的虚拟机进行实现就不过多叙述,安装过程可以参考另外一篇博客:Linux(centos)安装 MySQL 8 数据库(图文详细教程)。

2.主数据库修改配置信息

选择一台为主机,修改配置文件信息

vim /etc/my.cnf

添加配置内容

#服务器 id,随意,但要唯一
server-id = 1  
#二进制文件存放路径
log-bin = mysql-bin 
#参数用于排除自带的数据库。  
binlog-ignore-db = mysql 
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
#二进制日志格式,建议使用ROW格式以获得更好的兼容性和可靠性。
binlog-format = ROW 

 重启主机服务器

systemctl restart mysqld

配置一个从机连接账户

配置权限账号
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
#授权账号复制权限
GRANT REPLICATION SLAVE ON *.* TO 'test'@'%';
#刷新配置
FLUSH PRIVILEGES;

获取当前二进制日志文件的名称和位置

SHOW MASTER STATUS;

结果需要记录一下,后面从机连接的时候需要使用

3.从数据库配置信息

修改配置文件信息

vim /etc/my.cnf

添加配置信息

#注意和主库的id不一致并且唯一就可以
server-id = 2
#不同步相关的库
replicate-ignore-db = mysql 
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema

重启从数据库

systemctl restart mysqld

 连接主从数据库

参数解释:
MASTER_HOST : 设置要连接的主服务器的ip地址     
MASTER_USER : 设置要连接的主服务器的用户名     
MASTER_PASSWORD : 设置要连接的主服务器的密码    
MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即第2步得到的信息  
MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即第2步得到的信息,(这里注意,最后一项不需要加引号。否则配置失败)

change master to master_host='192.168.137.100',master_user='test',master_password='123456',master_log_file='binlog.000006',master_log_pos=155;

 开启同步

 start slave

查看启动状态

show slave status\G;

下面两项必须都是yes才表示配置成功,否则必须stop slave,检查配置修改正确后再次start slave ,直到都是yes为止。 

测试

在主表增删改,从表也会对应的相关操作,表示成功搭建主从复制。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nuxt3 项目使用 Tailwind CSS(安装、配置、插件)

目录 构建 # 安装 tailwindcss # nuxt.config配置 # 版本 使用 # 编写 # 效果 类名联想 # 预期效果图 # vscode 安装插件 # 激活拓展 # 达到预期效果 类名排序 # 预期效果图 # 安装Prettier # prettier配置 # 达到预期效果 非标准属性排序 # 自定义类名接收…

Linux安装Docker教程(实测可用)

前言 Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。以下是对Docker的具体介绍: 技术起源:容器技术起源于程序员对于环境搭建与应用部署效…

趣味科普:智慧采煤可视化

智慧采煤可视化系统通过趣味动画展示智能采矿技术,包括设备运作、矿井安全和环境保护等。

应急救援前突通信保障车技术详解

一、引言 随着现代社会的高速发展,各种自然灾害和突发事件频发,对人们的生命财产安全构成了严重威胁。应急救援前突通信保障车作为一种快速响应、高效部署的通信保障装备,在应急救援领域发挥着越来越重要的作用。本文将从当前形势的紧迫性、…

网络安全的重要组成部分:数据库审计

数据库审计(简称DBAudit)以安全事件为中心,以全面审计和精确审计为基础,实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行实时告警。它通过对用户访问数据…

Centos 7 上安装【Docker】

安装Docker(Centos 7) 1.1.卸载(可选) 如果之前安装过旧版本的Docker,可以使用下面命令卸载: ***注意:***若提示[您需要 root 权限 执行此命令]需要在命令前加上sudo yum remove docker \do…

09.自注意力机制

文章目录 输入输出运行如何运行解决关联性attention score额外的Q K V Multi-head self-attentionPositional EncodingTruncated Self-attention影像处理vs CNNvs RNN图上的应用 输入 输出 运行 链接(Attention Is All You Need) 如何运行 解决关联性 a…

Vue基础(1)数据绑定

一. 文本插值 普通文本可以使用双大括号 {{ }} &#xff0c;要想插入 HTML&#xff0c;需要使用 v-html 指令。 <template><h1>Message: {{ state.msg }}</h1><p>{{ state.count 1 }}</p><p>{{ state.rawHtml }}</p><p v-html…

Java编程语言,使用自定义二元组对象替代map集合实现Key-Value格式的数据存储

一、背景 url请求地址&#xff0c;后面使用&把多个请求参数拼接起来&#xff0c;例如&#xff1a;?p1v1&p2v2&p3v3 它们的key分别是p1/p2/p3&#xff0c;对应的value分别是v1/v2/v3。 也许很多人都会通过map集合来存储&#xff0c;算比较通用的做法了&#xff1…

Windows:iHasher-v0.2安装报错Windows 功能 .NET Framework 3.5

一、情景描述 我们从MSDN下载了镜像文件&#xff0c;一般要验证下载文件的HASH值是否与MSDN上发布的一致&#xff0c;确保传出过程中iso文件没有损坏。 MSDN地址&#xff1a;https://msdn.itellyou.cn/ 我从MSDN下载了Hasher工具&#xff0c;进行校验。 但是&#xff0c;安装…

有道:一季度业绩超市场预期,生成式AI商业化落地进程加快

5月23日&#xff0c;教育科技公司网易有道&#xff08;NYSE&#xff1a;DAO&#xff09;公布了2024年第一季度未经审计的财务报告。报告期内&#xff0c;受益于“AI”加“教育”双轮驱动&#xff0c;业绩表现超市场预期&#xff0c;业务健康度大幅改善。 财报显示&#xff0c;…

筛斗数据提取:如何保证数据精准提取与合规性并存

数据治理的艺术&#xff1a;精准提取与合规性并存 在当今信息化高速发展的时代&#xff0c;数据已成为企业最宝贵的资源之一。然而&#xff0c;如何有效管理和利用这些数据&#xff0c;确保数据的精准提取和合规性并存&#xff0c;已成为企业面临的重要挑战。本文将从数据治理…

Git远程控制

文章目录 1. 创建仓库1.1 Readme1.2 Issue1.3 Pull request 2. 远程仓库克隆3. 推送远程仓库4. 拉取远程仓库5. 配置Git.gitignore配置别名 使用GitHub可以&#xff0c;采用Gitee也行 1. 创建仓库 1.1 Readme Readme文件相当于这个仓库的说明书&#xff0c;gitee会初始化2两份…

git的使用之筛选文件上传到远程服务器仓库

.gitignore 让本地文件有选择上传到远程服务器仓库 下面是linux内核的.gitignore # # NOTE! Dont add files that are generated in specific # subdirectories here. Add them in the ".gitignore" file # in that subdirectory instead. # # NOTE! Please use gi…

Flutter容器

内边距padding class MyBody extends StatelessWidget {overrideWidget build(BuildContext context) {return Container(//为了可以看出内边距&#xff0c;将容器设置成红色color: Colors.red,child: Padding(padding: EdgeInsets.all(15),child: MyImage(https://raw.github…

BioTech - 蛋白质结构评估指标的计算方法 (Python 源码) 支持 TMScore\RMSD\DockQ 等

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/139174635 CASP15 中 T1124 的 目标结构(上) 与 预测结构(下) 蛋白质结构评估是生物信息学和结构生物学中的一个重要环节,涉及使用一系列的计算方法来分析预…

【linux-IMX6ULL-字符设备驱动简单框架实验】

目录 1. 字符设备驱动简介1.1 重要函数1.2 简单框架代码流程1.3 linux中关于驱动的重要命令 2. 字符设备驱动简单框架编写2.1 添加LICENSE信息2.2 驱动模块的入口与出口2.3 入口和出口函数的编写2.4 设备操作结构体定义2.4.1 结构体函数内容填充 3. 应用程序简介&#xff1a;4.…

Python正则表达式与Excel文件名批量匹配技术文章

目录 引言 正则表达式基础 Python中的re模块 Excel文件名批量匹配案例 常见问题与解决方案 结论 引言 在现代办公环境中&#xff0c;Excel文件几乎成为了数据分析和处理的标配工具。由于Excel文件可能包含大量的数据和信息&#xff0c;因此&#xff0c;对Excel文件的命名…

16 _ WebAPI:setTimeout是如何实现的?

在上一篇文章中我们介绍了页面中的事件和消息队列&#xff0c;知道了浏览器页面是由消息队列和事件循环系统来驱动的。 那在接下来的两篇文章中&#xff0c;我会通过setTimeout和XMLHttpRequest这两个WebAPI来介绍事件循环的应用。这两个WebAPI是两种不同类型的应用&#xff0…

嵌入式岗位,你有能力,你同样可以拿到高薪资

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 就算你进去了&#xff0…