MySQL复制(1) 原理和架构

复制的架构

MySQL复制解决的基本问题是让一台服务器的数据与其它服务器保持同步,它具有如下的特征:

1)异步:这意味着,在同一时间点上备库的数据可能与主库不一致,并无法保证它们之间的延迟;

2)向后兼容:也就是说,备库的版本可以高于主库的版本,但不能低于主库的版本

下面是MySQL复制的架构图:

大致分为三个步骤:

1)主库所有的数据更改都记录到二进制日志

2)备库通过I/O线程把主库的二进制日志复制到备库的中继日志

3)备库通过SQL线程读取并应用中继日志

上面这种复制架构使得I/O线程和SQL线程可以异步进行,但也限制了复制的过程,其中最重要的一点是在主库上并发 运行的查询在备库上只能串行化执行,因为SQL线程只有一个,这是很多工作负载的性能瓶颈所在。

复制的原理

MySQL复制可分为基于语句的复制和基于行的复制,基于语句的复制(即逻辑复制)是指在备库上把主库执行过的SQL 重新执行一遍,它的优点是比较简单方便,但是性能不是很好,而且复制触发器和存储过程会出现很多问题。基于行的 复制(即物理复制)是指从主库的二进制日志中提取数据改变记录,相对来说,它更高效,但比较复杂。

由于没有哪种方式对所有情况都是完美的,MySQL能够在这两种复制方式间动态的切换,默认情况下使用基于语句的 复制,但如果发现语句无法正确的复制,就切换到基于行的复制。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/MySQL/

时间: 2024-08-11 01:04:27

MySQL复制(1) 原理和架构的相关文章

MySQL数据库复制概念及数据库架构不断扩展方案

MySQL Replication 系统扩展的方式:        scale up:向上扩展,垂直扩展    使用更高性能的硬件来扩展        scale out:向外扩展,水平扩展    提供更多的节点来提供更多的访问需求          复制:水平扩展的一种方案   如果构建一个httpd负载均衡集群会面临的问题: 当用户请求到达时,负载均衡器给调度到后端的各realserver上,如果web服务器允许用户上传数据,用户上传数据到第一个节点上,而后他又访问被调度到第三个节点上来,则

mysql基于BLACKHOLE复制基础的各种架构

Mysql复制架构     这是mysql主从复制最基本的原理图,左边是主master,右边是从slave,从图中可以清晰看到mysql的复制进程,master产生二进制日志binlog,输出到binlog文件,然后slave主机请求日志文件,master主机发送二进制到slave主机,二进制到slave后,写入中继日志,realylog,然后slave主机调用sql进程读取中继日志内容,写入到数据库,从而维持服务器的数据同步.   和上面不同的是,这个架构是一个三级架构,三台mysql服务器组

MySQL主从同步原理介绍

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

MySQL主从同步原理介绍_Mysql

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

Mysql Replication工作原理及其配置

MySQL复制(Replication)工作原理:Slave端通过将Master端的binlog利用I/O线程通过网络复制到Slave端,然后再通过SQL线程解析Binlog中的日志并应用到数据库中来实现. 1)物理环境 master    A 172.16.100.106 slave     B 172.16.100.108 2)Maser端的配置 在主服务器上建mysql用户,使其从服务器能够远程登录主服务器 grant replication slave on *.* to'david'@

如何快速复制阿里”企业级互联网架构“的最佳实践

本期采访嘉宾--赵林 (丹臣),<企业级互联网架构专场>出品人. 2016云栖大会深圳峰会,点击报名! 企业级互联网架构解决方案,点击查看! 赵林:这次之所以策划这个主题,主要是想帮助那些由传统IT架构到企业级互联网架构跨越式升级的企业,实现互联网转型,共同应对互联网+浪潮的挑战. 以前,阿里中间件事业部其实是一个为内部各BU提供企业级高可用互联网应用架构支撑的平台型支撑部门.近两年,我们尝试着将我们已经比较稳定和可靠的分布式系统架构以服务的形式对外提供实践,帮助了很多传统的IT企业在软件研发

mysql 5.7 docker 主从复制架构搭建教程_Mysql

分享mysql 5.7 docker 主从复制架构搭建教程,供大家参考,具体内容如下 环境版本: MySQL :  5.7.13 Docker : 1.11.2 CentOS : 7.1  1.先在两个物理机上分别安装两个MySQL.命令如下  复制代码 代码如下: docker pull mysql:5.7.13  docker run --name anuo-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qaz.00JK -d mysql:5.7.13 

mysql 复制表数据,表结构的3种方法

 什么时候我们会用到复制表?例如:我现在对一张表进行操作,但是怕误删数据,所以在同一个数据库中建一个表结构一样,表数据也一样的表,以作备份.如果用mysqldump比较麻烦,备份.MYD,.MYI这样的文件呢,操作起来也还是麻烦. 一,复制表结构 方法1: mysql> create table a like users; //复制表结构 Query OK, 0 rows affected (0.50 sec)   mysql> show tables; +------+ | Tables_i

【转载】MySQL复制的概述、安装、故障、技巧、工具

概述 首先主服务器把数据变化记录到主日志,然后从服务器通过I/O线程读取主服务器上的主日志,并且把它写入到从服务器的中继日志中,接着SQL线程读取中继日志,并且在从服务器上重放,从而实现MySQL复制.具体如下图所示: MySQL复制 整个过程反映到从服务器上,对应三套日志信息,可在从服务器上用如下命令查看: mysql> SHOW SLAVE STATUS;   Master_Log_File & Read_Master_Log_Pos:下一个传输的主日志信息. Relay_Master_