闲来无事,平时Oracle用的多,想看看mysql的一些知识,每天总结一下:
mysql在互联网领域用的如此广泛很大一部分原因是是源于它的replication机制,简单实用,几台PC机子,很容易提高性能,乃中小网站必备良方。
首先什么情况下要扩展数据库,建个网站,建个数据库,某一天网站火了,访问量暴增,意味着从你服务器上读网页的连接多了,IO瓶颈来了,自然想多加几台机子来分担压力,但是数据还要跟源主机上的数据库内数据保持一致,这时候就是开始扩展数据库的时候,replication就开始派上用场了。
replication的实现机制
第一步是master必须打开Binary Log日志,里面包含了数据库的各种操作记录,slave通过IO线程连上master主机,并请求日志内容,这个请求应该还包括日志的请求位置,即从什么位置开始的日志。
第二步master收到请求后就开始通过IO线程给slave返回内容,返回的内容除了日志内容外还应该包括日志文件的位置以及下次从什么地方开始获取新日志。
第三步就是slave的IO线程将所得到的内容记录到本机的Relay Log文件中,位置内容则记录在master-info文件中,以便下次能快速定位master的日志内容。
第四步就是slave解析这些日志内容然后执行,这样master与slave数据就同步完成。
值得注意的是第三步与第四步是同时执行的(早期的mysql是分开执行的),是有两个线程(IO线程与SQL线程)异步执行的,这样的好处无非是减少同步时间,拿空间换时间,减少了数据丢失的概率。
这是一台master机子与一台slave机子的通信过程。
而实际运用中显然不可能只有一台slave,主要有一下几种集群方式。
master-slaves
一台master对多台slaves,这个是最简单的集群方式,原理与上面的相同
master-master
两台master,这种架构主要是为了解决热备问题,可以防止master宕机导致需要重新部署slaves,这里有个问题,就是两台master就意味着两边都要提供读写功能,实际操作中应该避免同一张表在master两边都提供写的功能,这样会导致脏数据,应该是一部分表在master1端写,一部分表在master2端写。
master-slaves-slaves(级联复制架构)
这中架构目的也很明确,普通的master-salves架构当slaves机子越来越多的时候,连接到master机子上的IO线程就多了,master又要对外提供写入服务,压力太大,这种架构就是给master减压,将IO转移给slaves,然后slaves再给第二级slaves提供IO服务,坏处自然也很明显,延时严重。
master-master-slaves-slaves
这种最复杂,也最安全,最稳定,等于是将第二种与第三种组合起来。
以上几种为常用的垂直扩展架构,主要解决的是大规模并发读的问题,至于并发写入,则要用到mysql的数据切分,明天再写。
分享到:
相关推荐
MySQL Group Replication是一种高可用性和可扩展性的解决方案,它通过在多个MySQL服务器之间自动同步数据来确保数据的一致性和可用性。该技术自MySQL 5.7.17版本引入,并在MySQL 8.0.1及后续版本中作为标准特性提供...
第13章 可扩展性设计之MySQL Replication 第14章 可扩展性设计之数据切分 第15章 可扩展性设计之Cache与Search的利用 第16章 MySQL Cluster 第17章 高可用设计思路及方案 第18章 高可用设计之...
#### 一、MySQL主从安装部署概述 MySQL 主从复制是一种常见的数据备份和负载均衡技术,在多个服务器之间同步数据。通过设置一个或多个从服务器来复制主服务器上的数据变更操作,从而实现数据冗余和故障转移。主从...
- **HA/Scalability**: 高可用性和可扩展性解决方案,如MySQL和DRBD的集成。 - **Storage Engines**: 多种存储引擎支持,如InnoDB、MyISAM等。 - **Globalization**: 国际化支持,包括多语言环境和字符集管理。 ###...
使用此工具,您可以轻松地监视两个MySQL数据库服务器的复制。 它具有全局概述,数据库和表的差异分析,包括行数,大小和校验和。 用php和mysqli扩展功能编写。 计划的功能:-管理主服务器/从服务器-修复复制错误-...
#### 一、MySQL 5.6概述与特性 **MySQL 5.6** 是一款广泛使用的开源关系型数据库管理系统(RDBMS),其官方文档提供了详尽的技术信息与指导。根据文档的摘要部分,我们可以了解到MySQL 5.6的一些关键特点和组成部分:...
#### 一、MySQL概述 - **定义与历史**: MySQL是一个小型的关系型数据库管理系统,最初由瑞典的MySQL AB公司开发。2008年1月16日,该公司被Sun Microsystems收购。随着Oracle对Sun公司的收购,MySQL现归Oracle所有。 ...
第13章 可扩展性设计之MySQL Replication 13.0 引言 13.1 Replication对可扩展性设计的意义 13.2 Replication机制的实现原理 13.3 Replication常用架构 13.4 Replication搭建实现 13.5 小结 第14章 可扩展性...
当使用MySQL Cluster数据库进行复制时,与传统的MySQL复制有一些不同之处,白皮书在最后也概述了这些主要差异。 在复制的使用案例中,白皮书提到了以下几点:扩展(Scale-Out)、高可用性(High Availability)、...
插件提供了多种检查命令,如`check_mysql_health`、`check_mysql_replication`等。每个命令都有丰富的选项,比如`-H`指定主机名,`-u`设置MySQL用户名,`-p`输入密码,`-w`和`-c`分别设定警告和临界阈值。 ### 5. ...
1. **MySQL Group Replication概述** MySQL Group Replication通过多主复制模式,允许多个节点同时写入,确保数据在多个服务器之间实时同步。这种模式提高了系统的可用性,当一个节点发生故障时,其他节点可以立即...
MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,其最新版本为8.0.32,这个版本的压缩包文件名为“mysql-8.0.32.tar.gz”。这个压缩包包含了一系列用于安装和运行MySQL服务器及其相关工具的文件。本文将深入...
#### 一、MySQL主从复制概述 MySQL主从复制是一种数据同步机制,它能够将一个MySQL服务器(主服务器)的数据自动同步到一个或多个MySQL服务器(从服务器)。这种机制不仅可以提高数据的安全性和可靠性,还能有效分担...
2. **MySQL**:全球最流行的开源关系型数据库管理系统之一,因其性能优越、功能全面而广受好评。 3. **主从复制**:MySQL的一种高可用性和灾难恢复机制,通过在多个服务器之间复制数据,实现数据的冗余存储。其中...