MySQL架构备份
MySQL Replication 概述
集群的主要类型?
高可用集群(High Available Cluster, HA)
高可用集群是指通过特殊的软件把独立的服务器连接起来,组成一个能够提供故障切换(Fail Over)功能的集群
如何衡量高可用?
99.53% 7天 常规系统
99.98% 8小时 可用系统
99.99% .6分钟 高可用系统
99.999% .3分钟 抗故障系统
99.9999% 32秒 容错系统
MySQL常用的集群架构
MySQL Replication
MySQL Cluster
MySQL Group Replication (MGR) 5.7.17
MariaDB Galera Cluster
Keepalived|HeartBeat||Lvs,Haproxy等技术构建高可用集群
什么是 MySQL Replication?
1、Replication可以实现将数据从一台数据库服务器(master)复制到一台到多台数据库服务器上(slave)
2、默认情况下,属于异步复制,所以无需维持长连接
复制拓扑:
MySQL Replication的原理
简单来说,master将数据库的改变写入二进制日志,slave同步这些二进制日志,并根据二进制日志进行数据重演操作,实现数据异步同步
1. 在主库上把数据更改(DDL DML DCL)记录到二进制日志(Binary Log)中。
2. 备库I/O线程将主库上的日志复制到自己的中继日志(Relay Log)中。
3. 备库SQL线程读取中继日志中的事件,将其重放到备库数据库之上。
MySQL Replication的架构
master —> slave (双机热备)
默认情况下,master接收读写请求,slave只接收读请求以减轻master的压力
复制的过程:
1、slave端的IO线程连上master端,请求
2、master端返回给slave端,bin log文件名和位置信息
3、IO线程把master端的bin log 内容依次写到slave端relay bin log(中继日志)里,并把master端的bin-log文件名和位置记录到master.info里
4、slave端的sql线程,检测到relay bin log中内容更新,就会解析relay log 里更新的内容,并执行这些操作
M--S 双机热备实验 > 点我
master —> slave1 —> slave2 (级联架构)
优点:进一步分担读写力
缺点:slave1 出现故障,后面的所有级联slave服务器都会同步失败
M--S--S 级联架构实验 > 点我
master —> (slave1 slave2) (并联架构)
/----> slave1
master (并联架构)
\----> slave2
优点:解决上面的slave1的单点故障,同时也分担读压力
缺点:间接增加master的压力(传输二进制日志压力)
master1 <------> master2 (互为主从)
优点:从命名来看,两台master好像都能接受读、写请求,但实际上,往往运作的过程中,同一时刻只有其中一台master会接受写请求,另外一台接受读请求
示例:
create table aaa;
m: s:
bin-log --------> io(relay-bin-log)
sql create table aaa;
把主上的二进制日志(bin-log)的内容传到从上的一个新的日志叫relay-bin-log
从上的 IO 线程 负责传输
从上的 SQL 线程 负责从服务器解析日志
若是双master架构,则两边都得开启binlog和relarylog中继日志
最新文章
- iOS空心圆下载进度指示器控件
- 微信https请求工具类
- css学习归纳总结(一) 转
- [stm32] STM32的通用定时器TIMx系统了解
- Netlog 的数据库及 LAMP 架构
- BEvent_客制化Event Agent通道(案例)(待整理)
- 从后端到页面:如何全方位监控 Ruby 应用?
- Git教程(6)常用技巧之远程分支简单示例
- PHP分次读取xls
- RDD 重新分区,排序 repartitionAndSortWithinPartitions
- C# winForm启动最小化到任务栏右侧通知栏并交互操作
- Android二维码开源项目zxing用例简化和生成二维码、条形码
- 5. Leetcode 448. Find All Numbers Disappeared in an Array
- 《奇思妙想》在JavaScript语言中floor和round方法在某种随机分配场景下对分配区间的公平性!!!
- [HNOI2012]排队
- Activiti初学问题,求解
- Microsoft Visual Studio 2012 添加实体数据模型
- Jsop的原理
- 重置mysql5.7密码
- webpack搭建自己的项目
热门文章
- OO_BLOG2_多线程电梯模拟
- Java中1.0 / 0.0 会输出什么?
- 自己实现的TypeOf函数2
- 吐血bug-- 多个input框接连blur事件导致alert接连弹出
- vuex最简单、最直白、最全的入门文档
- 用Python将绝对URL替换成相对URL的代码
- django apscheduler在特定时间执行一次任务(run at a specify time only once)
- Jenkins 使用Tfs 插件出现 MappingConflictException 错误问题解决
- linux系统mysql-5.7 修改字符集
- torm入门(三)HelloWorld示例