MySQL 集群架构

1. MySQL 主从复制的工作原理;

解决的问题:
数据分布:主从复制可以从一台服务器扩展到 N 台,假设现在扩展到了 150 台,可以把 50 台机器放在电信网络中,50台机器放在联通网络中,另外 50台机器放在移动的网络中,这样无论在哪个网络中访问速度都是比较快的,避免了跨网络访问的问题。其次还可以把机器按照地域分,可以在国外放一部分,北方放一部分,南方放一部分,这样就没有地域性访问差异。
负载均衡:可以把 MySQL 做读写分离,专门用一部分机器做写操作,另外一部分机器做读操作,并且读和写的操作都可以做负载均衡。比如现在有 1000 万人来访问,有 100 台机器,可以让 100 台机器去均衡的接受 1000 万人的访问。这样远比 1 台服务器接收 1000 万人访问压力小的多。
数据备份:比如 100 台机器,这 100 台机器的数据时一模一样的,那就换句话来说这 100 台机器都是备份。
高可用性和容错行:100 台机器中有 5 台机器挂掉了,问题不大,因为还有 95 台机器。
实现原理:
MySQL 支持单向、异步复制、复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。也就是说在一个集群中可以让一台机器作为主的,其它机器作为从的,都听从主服务器。
MySQL 复制基于主服务器在二进制日志中跟踪所有对数据库的更改(更新、删除等等,也就是写操作)。也就是说在主服务器中会存储所有的写操作(更新、删除、添加数据),存储在一个二进制日志里,存的是 SQL 语句被二进制话。
每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新。也就是说,从服务器会去找到主服务器二进制日志里面的所有的操作,它会把所有的操作拿到从服务器里来,来做一部分的执行。比如主服务器进行了插入操作,然后从服务器会把插入指令拿过来,在它机器上执行,这样的话从服务器也会有一个插入的操作。
实现步骤:
Master 将改变记录到二进制日志(binary log)中
Slave 将 Master 的 binary log events 拷贝到它的中继日志(relay log)
Slave 重做中继日志中的事件(也就是说它将写操作在它的机器上执行一下),变成它自己的数据
MySQL 集群架构

2. 配置 MySQL 主从复制;