mysql主从同步原理-luodidiao-51CTO博客

为什么要做主从复制?1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。

2、做数据的热备

3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。


基本构建思路–确保数据相同:从库必须要有主库上的数据–配置主服务器:启用binlog日志,授权用户,查看当前正使用的Binlog日志(从库IO线程取SQL命令的地方)–配置从服务器:设置server_id(标识自己的身份),指定主库信息–测试配置: 客户端连接主库写入数据,在从库上也能查询到

mysql主从复制用途实时灾备,用于故障切换读写分离,提供查询服务备份,避免影响业务

Master,记录数据更改操作启用binglog日志设置binlog日志格式设置server_id

slave运行2个线程slave_io线程:复制master主机 binlog日志文件里的sql到本机的relay-log文件里。slave_sql线程:执行本机relay-log文件里的sql语句,重现Master的数据操作。

binlog(二进制文件)relay-log(中继日志)

异步复制:主库执行一次事务后,立即将结果返回给客户端,并不关心从库是否已经接收并处理

全同步复制:当主库执行完一次事物,并所有从库都执行了该事务后才返回给客户端

半同步复制:介于异步和全同步之间主库在执行完一次事务后,等待至少一个从库接受到并写到中继日志中才返回客户端


问题及解决方法

mysql主从复制存在的问题:主库宕机后,数据可能丢失从库只有一个sql Thread,主库写压力大,复制很可能延时

解决方法:半同步复制---解决数据丢失的问题并行复制----解决从库复制延迟的问题

MySQL数据库主从同步延迟原理。

答:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作,主库对所有DDL和 DML产生binlog,binlog是顺序写,所以效率很高,slave的Slave_IO_Running线程到主库取日志,效率很比较高,下一步, 问题来了,slave的Slave_SQL_Running线程将主库的DDL和DML操作在slave实施。DML和DDL的IO操作是随即的,不是顺 序的,成本高很多,还可能可slave上的其他查询产生lock争用,由于Slave_SQL_Running也是单线程的,所以一个DDL卡主了,需要 执行10分钟,那么所有之后的DDL会等待这个DDL执行完才会继续执行,这就导致了延时。有朋友会问:“主库上那个相同的DDL也需要执行10分,为什 么slave会延时?”,答案是master可以并发,Slave_SQL_Running线程却不可以。

    MySQL数据库主从同步延迟是怎么产生的。

    答:当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了,当然还有就是可能与slave的大型query语句产生了锁等待。

      MySQL数据库主从同步延迟解决方案

      答:最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行。还有就是主库是写,对数据安全性较高,比如 sync_binlog=1,innodb_flush_log_at_trx_commit=1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog也 可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave。

      原文地址:https://www.cnblogs.com/lonuve/p/11015777.html

      时间: 2024-08-09 10:10:03

mysql主从同步原理-luodidiao-51CTO博客的相关文章

MySQL主从同步--原理及实现(一)

1.什么是mysql主从同步? 当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库. 2.主从同步有什么好处? 水平扩展数据库的负载能力. 容错,高可用.Failover(失败切换)/High Availability 数据备份. 3.主从同步的原理是什么? 首先我们来了解master-slave的体系结构. 如下图: 不管是delete.update.insert,还是创建函数.存储过程,所有的操作都在master上.当master有操作的时候,slave会快速的

MySQL主从同步原理讲述

关于mysql主从同步,相信大家都不陌生,随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时,将数据库的读写效率骤然下降,甚至不可用:为了解决此类问题,通常会采用mysql集群,当主库宕机后,集群会自动将一个从库升级为主库,继续对外提供服务:那么主库和从库之间的数据是如何同步的呢? 为了减轻主库的压力,应该在系统应用层面做读写分离,写操作走主库,读操作走从库,下图为MySQL官网给出的主从复制的原理图,从图中可以简单的了解读写分离及主从同步的过程,分散了数据库

十五大原理之零四:MYSQL主从同步原理

主从同步又可以称为主从复制!本人习惯称为主从复制 一.MySQL主从复制(同步)原理过程详细描述: 1.Slave服务器上执行start salve,开启主从复制开关. 2.此时,Slave服务器的IO线程会通过Master上授权的复制用户权限请求连接Master 服务器,并请求从指定Binlog日志文件的指定位置(日志文件名和位置就是配置主从复制服务时执行change master命令时指定的)之后发生Binlog日志内容: 3.Master服务器接收到来自Slave服务器的IO线程的请求后,

MYSQL主从同步原理解析!

大神请绕行! 一.为什么要主从同步? 我们会对数据库进行大量的读写操作,而如果数据库非常庞大的话,对我们的主机压力非常大,我们想到了一个解决的办法:两台服务器,一台只用来读取操作,一台只用来写入操作. 二.用途: 实时灾备,用于故障切换: 读写分离,提供查询服务: 备份,避免影响业务. 三.实战演练 主从部署必要条件: 主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库 1.一主一从 (1)实战环境 两台服务器(centos7): 主服务器IP:

mysql主从同步原理

一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费多久,不容乐观的未来,但是我们还是要能熟练掌握MySQL数据的架构和安全备份等功能,毕竟现在它还算是开源界的老大吧! MySQL数据库支持同步复制.单向.异步复制,在复制的过程中一个服务器充当主服务,而一个或多个服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环

mysql主从同步原理,配置,同步延迟处理

Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave).在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端. 要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary Log(mysql-bin.xx

Mysql主从同步原理及配置-Linux

从库的io线程会实时依据master.info信息的去主库的binlog日志里面读取更新的内容,将更新的内容取回到自己的中继日志中,同时会更新master.info信息,此时sql线程实时会从中继日志中读取并执行里面的sql语句 Master :记录数据更改操作 – 启用 binlog 日志 – 设置 binlog 日志格式 – 设置 server_id Slave 运行 2 个线程 – Slave_IO :复制 master 主机 binlog 日志文件里的 SQL 到本机的 relay-lo

mysql 主从同步原理

Replication 线程 Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave).在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端. 要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary L

mysql主从同步建立方法

mysql主从同步原理: (1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events),然后通知存储引擎(I/O thread)提交事务: (2) slave将master的binary log events拷贝到它的中继日志(relay log); (3) slave重做中继日志中的事件,将改变反映它自己的数据. mysql主从操作步骤: 1.编辑matser数据库的my.cnf文件,在[mysqld]下面插入以下配置,