首页 > 数据库 >MySQL主从复制

MySQL主从复制

时间:2024-11-11 17:41:59浏览次数:5  
标签:主从复制 复制 线程 MySQL 服务器 日志 从库

MySQL主从复制

   概要

   随着业务的增长,一台数据服务器已经满足不了需求了,负载过重。这个时候就需要减压了,实现负载均衡读写分离,一主一丛或一主多从。

   主服务器只负责写,而从服务器只负责读,从而提高了效率减轻压力。

    主从复制可以分为:

   主从同步:当用户写数据主服务器必须和从服务器同步了才告诉用户写入成功,等待时间比较长。
   主从异步:只要用户访问写数据主服务器,立即返回给用户。
   主从半同步:当用户访问写数据主服务器写入并同步其中一个从服务器就返回给用户成功。

 

   一、异步复制

   一个主库,一个或多个从库,数据异步同步到从库。

   MySQL 主从复制中最常见和默认的模式。在异步复制模式中,主服务器将数据修改操作记录到二进制日志(Binary Log)中,并将日志传输给从服务器。从服务器接收到二进制日志后,会异步地应用这些日志进行数据复制。这种模式下,主节点不会主动推送数据到从节点,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理。

   如下图:

   优点:它的优点是及时响应给使用者,主服务器不会受到从服务器的影响而等待确认,可以提高主服务器的性能。

   缺点:由于是异步复制,可能存在数据传输的延迟,且从服务器上的复制过程是不可靠的。如果主服务器故障,尚未应用到从服务器的数据可能会丢失。

   这样就会有一个问题,主节点如果崩溃掉了,此时主节点上已经提交的事务可能并没有传到从节点上,如果此时,强行将从提升为主,可能导致新主节点上的数据不完整。

 

   二、同步复制

在 MySQL cluster 中特有的复制方式。

当主库执行完一个事务,然后所有的从库都复制了该事务并成功执行完才返回成功信息给客户端。

因为需要等待所有从库执行完该事务才能返回成功信息,所以全同步复制的性能必然会收到严重的影响。

半同步复制

在异步复制的基础上,确保任何一个主库上的事务在提交之前至少有一个从库已经收到该事务并日志记录下来。


   一、工作过程

   MySQL主从复制的实现原理基于:主节点的二进制日志(Binary Log)和从节点的复制线程。

   MySQL 的主从复制工作过程大致如下:

   1.  从库生成两个线程,一个 I/O 线程,一个 SQL 线程;

   2.  I/O 线程去请求主库的 binlog,并将得到的 binlog 日志写到 relay log(中继日志) 文件中;

   3.  主库会生成一个 log dump 线程,用来给从库 I/O 线程传 binlog;

   4.  SQL 线程会读取 relay log 文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;

 

标签:主从复制,复制,线程,MySQL,服务器,日志,从库
From: https://www.cnblogs.com/hld123/p/18540227

相关文章

  • MySQL数据库企业级开发技术
    一.事务1.事务的定义1.事务:一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)2.一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成3.事务只和DML语句有关,或者说DML语句才有事务。这个......
  • 多商户中英双语电商系统设计与开发 PHP+mysql
    随着全球电商市场的扩展,多商户平台成为了越来越多商家参与全球贸易的重要方式。为了适应不同语言用户的需求,尤其是中英双语用户的需求,设计一个支持中英双语的电商系统显得尤为重要。本文将重点探讨如何设计一个多商户中英双语电商系统,涵盖多语言切换设计、商家管理、商品管理、......
  • Mysql高可用架构方案
    目录Mysql介绍高可用结构主从模式主从模式介绍主从复制技术主从模式注意事项MHA(MasterHighAvailability)MHA模式介绍MHA工作流程MMM(Multi-MasterReplicationManagerForMysql)MGR(MysqlGroupReplication)总结Mysql介绍Mysql是典型的开源关系型数据库,是许多网站、应用程序、企业软件......
  • MYSQL事务学习总结
    前言在数据库操作的复杂世界里,事务是保障数据一致性、完整性和可靠性的关键机制。无论是银行系统中的资金转账,还是电商平台的订单处理,事务都在默默地发挥着重要作用。MySQL作为广泛使用的数据库管理系统,其事务处理机制涉及到多个重要的概念和特性。从原子性确保操作的整体性......
  • centos7安装mysql8
    1、首先检查是否有安装过mysql(有则需要卸载),命令如下:rpm-qa|grepmysqlrpm-qa|grepmariadb2、卸载mariadbrpm-e--nodepsmariadb-libs-5.5.68-1.el7.x86_643、备份yum源源文件为了保存原有默认配置及防止误操作,先做备份mv/etc/yum.repos.d/CentOS-Base.repo/etc......
  • 连接数据库-mysql
    连接前的三个条件:下载好JDK环境、Mysql、数据库驱动jar包jar包也去MySQL官网上下就可以然后创建数据库,我是在Navicat上建的数据库然后创建的表。也尝试在小黑框那创建了但总出错。跟着up主改配置改了一通up主是成果了,我也没成功。。。、然后在eclipse上新建项目,连上之前下载好......
  • MySQL问题解决记录(1):IP address 'xxx.xxx.xxx.xxx' could not be resolved: 这是在主机
    目录问题描述排查流程解决方案总结问题描述[Warning][MY-010055][Server]IPaddress'xxx.xxx.xxx.xxx'couldnotberesolved:这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。问题表现:A主机的服务在访问B主机的MySQL数据库时,产......
  • 因为mysql 8新的认证插件导致主从复制的IO线程失败
    1、错误信息Last_IO_Error:errorconnectingtomaster'[email protected]:3306'-retry-time:60retries:1message:Authenticationplugin'caching_sha2_password'reportederror:Authenticationrequiressecureconnection.2、在主库检查复制用户的pl......
  • mysql清理binlog日志的方法
    MySQL中的binlog日志记录了数据库中数据的变动,便于对数据的基于时间点和基于位置的恢复,但是binlog也会日渐增大,占用很大的磁盘空间,因此,要对binlog使用正确安全的方法清理掉一部分没用的日志。 [方法一]手动清理binlog清理前的准备:1.查看主库和从库正在使用的binlog是哪个文件......
  • MySQL第四章,SQL高级二子查询
    子查询的定义子查询(Subquery)是嵌套在其他SQL语句中的查询,也称为内查询(InnerQuery)或嵌套查询(NestedQuery)。子查询可以放在SELECT、INSERT、UPDATE、DELETE等语句中,并且支持多层嵌套,即子查询中还可以包含其他子查询。子查询的作用子查询的主要作用包括:结构化查询:子查询允许......