【赵渝强老师】MySQL集群解决方案

在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求。此时数据库集群就很好的解决了这个问题了。采用MySQL分布式集群,能够搭建一个高并发、负载均衡的集群服务器。但是在搭建MySQL集群之前,必须要保证每台MySQL服务器里的数据同步。数据同步可以通过MySQL内部配置就可以轻松完成,主要有主从复制和主主复制。
| 视频讲解如下 |
|---|
| 【赵渝强老师】MySQL的主从复制与主主复制 |
一、 MySQL的主从复制集群
MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。主从复制(也称AB复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。根据参数文件的配置,可以复制数据库中的所有数据库,所选数据库甚至选定的表。 MySQL的一主多从的架构如下图所示:

MySQL中复制的优点包括:
- 横向扩展:在多个从站之间分配负载以提高性能。在此环境中,所有写入和更新都必须在主服务器上进行。但是,读取可以在一个或多个从设备上进行。该模型可以提高写入性能(因为主设备专用于更新),同时显着提高了越来越多的从设备的读取速度。
- 数据安全性:因为数据被复制到从站,并且从站可以暂停复制过程,所以可以在从站上运行备份服务而不会破坏相应的主数据。
- 任务分离:可以在主服务器上创建实时数据,而信息分析可以在从服务器上进行,而不会影响主服务器的性能。
- 远程数据分发:您可以使用复制为远程站点创建数据的本地副本,而无需永久访问主服务器。

如果一主多从的话,这时主库既要负责写入数据又要负责为几个从库提供二进制日志。当从库节点比较多的时候,可能会对主库造成一定的读写压力。因此此时可以稍做调整,将二进制日志只给某一个从库。该从库再开启二进制日志并将自己的二进制日志再发给其它从库。这样架构起来性能可能要好得多,而且数据之间的延时应该也稍微要好一些。改进后的MySQL主从架构如下图所示。

二、 MySQL的主主复制集群
MySQL的主从复制可以将主节点的变更通过binlog同步到从节点上从而实现数据的同步,其本质其实就是备份的一种方式。但是主从复制只能完成从主节点到从节点的同步,并不能完成从节点到主节点的同步。换句话说,从节点如果对数据进行了变更,将无法同步到主节点上。为了解决这样的问题MySQL便提供了主主复制的功能。
MySQL主主复制也是MySQL备份的一种方式。所谓主主复制其实也就是两天MySQL服务器互为主从复制的关系。每一个台MySQL服务器既是主节点master,也是另一台MySQL服务器的从节点slave。在主主复制的架构中,任何一方所做的变更都会同步到另一方的MySQL数据库服务器中。
因此,MySQL的主主复制其实也就是主从复制的一种扩展,下图展示了MySQL主主复制的基本架构。


