小白白话技术之MYSQL的复制机制的介绍

这是一篇关于MYSQL复制机制的一些思路白话介绍篇,希望直白的语言有助于你更容易理解MYSQL的复制机制。对于一个中间件,我们有很多要考虑的,比如希望可以提供水平扩展能力能够集群部署。

Mysql是怎么设计解决这些问题呢?答案首先是复制,Mysql提供了一种复制机制,让多个Mysql可以实现数据同步。

Mysql是如何实现数据同步的呢?首先主库会有记录二进制日志,这些日志记录了Mysql发生的事情,通过网络将这些数据同步给目标库,目标接收到二进制日志可以重放这些二进制日志,从而达到和主库同步的数据。那么具体复制的是什么呢?有俩种复制方式,一种是复制行数据,另外一种是复制语句。俩种方式适用的情况是不一样的。

实际复制我们可能遇到俩种情况,一种是全新的俩个库复制,直接配置就好,另外一种是对已经存在的库进行复制,这需要先采用一定的方式同步之前的数据,然后在开始复制,具体怎么呢?比如可以先备份导出主库的数据,导入到目标库,然后在开始复制。

再介绍一下行复制和语句复制的区别,首先语句复制是指把主库的语句复制到备库在执行一遍,这样做的好处是可以把对数据表的变化直接变更到目标库上,比如加字段语句,缺点是基于语句的复制有事不能被很好的支持,比如说一些高级特性如存储过程等,所以用到存储过程或触发器就不要用语句复制了。基于行的复制是指把数据表中的实际数据复制到日志中,目标库直接写入实际数据。这种方式的优点是几乎所有场景都支持这种方式进行复制,可以减少锁的使用,缺点是无法知道了执行了什么sql,相当于一个黑盒,不利于分析监控。

因为有些场景下语句复制合适,有些行复制合适,所以mysql是可以动态切换俩种方式的。因为涉及到网络同步,那种同步的数据量少更高效自然也是一个重要的考量。

有了复制机制,就可以组建不同的集群模式了,比如一主一从,一主多从,主主,甚至树或金字塔结构的拓扑,需要按照需求选择合适的集群模式,比如容量的需求,应用需求等等。

当然,关于集群还有一些功能是需要的,如配置、监控、管理优化等,这些可以借助第三方的工具来做。

复制失败是一个必须面对的问题,当然不一定必须用mysql自己的复制机制可以很多第三方选择,但是mysql自己的复制机制可能是简单易用的,适用于大多数情况。那么具体可能遇到哪些问题呢?比如对于大数据包的复制延迟,比如磁盘不足,比如网络带宽不足,比如目标库发生数据变化等等。

原文地址:https://www.cnblogs.com/xiaobaishouzha/p/12430160.html

时间: 2024-08-29 19:46:30

小白白话技术之MYSQL的复制机制的介绍的相关文章

小白白话技术之MYSQL索引

这是一篇关于MYSQL索引技术的白话介绍篇,不知道直白的语言是否有助于你更容易理解MYSQL的索引技术. 什么是索引,为什么要用索引,要回答这俩个问题,我们可以先提出MYSQL使用上有什么痛点,比如说MYSQL的性能,更具体举例的话,比如说MYSQL的查询性能,如何能更快的查询到需要的数据,就是MYSQL的索引要解决的问题.MYSQL的索引是一种数据结构,通过这种数据结构能够更快的实现数据查找,所以我们要尽可能的使用索引来提高我们查询的性能.下面这个图说明了MYSQL中索引的定位 数据也就是指数

详解mysql复制机制--异步复制,半同步复制和并行复制

详解MySQL复制机制--异步复制,半同步复制和并行复制 **# 异步复制 异步复制是MySQL自带的最原始的复制方式,主库和备库成功建立复制关系后,在备库上会有一个IO线程去主库拉取binlog,并将binlogx到本地,就是下图中Relaylog,然后备库会开启另外一个SQL线程取回放Relay log,通过这种方式达到Master-Slave数据同步的目的. 通常情况下,slave是只读的,可以承担一部分读流量,而且可以根据实际需要,添加一个或者多个slave,这样在一定程度上可以缓解主库

轻松掌握MySQL数据库锁机制的相关原理

1,SHOW PROCESSLIST查看数据库中表的状态,是否被锁: kill id   //杀掉被锁的表 =================================================== set autocommit=0; select * from t1  where uid='xxxx' for update    //在有索引(例如uid)的情况下是行锁,否则是表锁 insert into t1 values(1,'xxxxx'); commit; ========

mysql的复制和读写分离实现

内容: 1.mysql的复制类型 2.mysql的主从复制.主主复制示例 3.mysql的读写分离 一.mysql复制类型 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录

mariadb(mysql)复制、备份以及启用ssl

mariadb复制模型主从复制.半同步复制.双主复制.多主复制.以及启用ssl 环境:虚拟机CentOS6.5x64 mariadb-10.0.23 mariadb编译安装方式和mysql类同mariadb下载地址https://downloads.mariadb.org/ 原理:mysql的复制是将主服务器的二进制日志发往从服务器,从服务器保存为中继日志,然后将中继日志执行写入数据库的过程. 使用show global variables like '%log%';查看与日志相关的全局变量 使

MySQL的复制架构与优化

###########原理###########1.主服务器将更新的数据的sql语句(例如,insert,update,delete等)写入到  二进制文件中(由log-bin选项开启).此二进制文件由一个索引文件跟踪维护.  2.从服务器连接(使用I/O线程连接)主服务器,将自己最后一次更新的位置通知  主服务器.然后,主服务器将把从'从服务器'得知的位置开始之后的所有更新发  送给'从服务器'(使用Binlog Dump线程来发送),而后'从服务器'再次使用I/O  线程读取由Binlog

Mysql 异步复制

一:Mysql AB复制的原理:(异步复制)             1.MysqlAB 主机有三个线程相互联系mysql数据库,实施同步.Master主机(Binlog Dump线程):slave主机(IO线程与SQL线程).首先,由slave上执行startslave创建以个I/O线程,I/O线程链接到master上,并请求发送二进制日志文件里面的语句.Master创建一个线程(BinglogDump线程),slave创建一个I/O线程,读取master上的BinglogDump线程,将其拷

mysql的Replication机制

mysql的Replication机制 参考文档:http://www.doc88.com/p-186638485596.html Mysql的 Replication 是一个异步的复制过程. 从上图可以看见MySQL 复制的基本过程如下: Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容: Master 接收到来自 Slave 的 IO 线程的请求后,通过复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给

浅谈MySQL Replication(复制)基本原理

1.MySQL Replication复制进程MySQL的复制(replication)是一个异步的复制,从一个MySQL instace(称之为Master)复制到另一个MySQL instance(称之Slave).实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(Sql进程和IO进程),另外一个进程在Master(IO进程)上.要实施复制,首先必须打开Master端的binary log(bin-log)功能,否则无法实现.因为整个复制过程实际上就是Slave从Master端