【MySQL高可用架构设计】(一)-- mysql复制功能介绍
一、 介绍
Mysql的复制功能是构建基于SQL数据库的大规模高性能应用的基础,主要用于分担主数据库的读负载,同时也为高可用、灾难恢复、备份等工作提供了更多的选择。
二、为什么要使用mysql复制功能?
大家也许知道对于数据库进行扩展是一件非常困难的事情,这一点和web服务器具有很大的不同,如果我们的网站出现大量的突增访问,web服务器的压力增加,性能下降的时候,我们只需要简单的多增加几台web服务器,只要其上部署的程序完全一样就可以很好的分担这些负担,但是数据库却不同。由于数据库中对数据的事务性要求,就决定了我们不能简单的通过增加数据库服务器的方式来分担数据库的读写负载,而mysql的复制功能,为我们提供了一种可以分担数据库读负载的好办法,注意这里呢,我只说了是读负载,因为事实上只做简单的复制,还是无法分担写负载的,我们可以使用复制功能对数据库服务器进行水平扩展,为数据库服务器增加一个备库或多个备库,而这些备库就可以用于分担主数据库的读负载,同时复制功能也为高可用、灾难恢复、备份等工作提供了更多的选择。

三、mysql复制解决了什么问题?
a、实现在不同服务器上的数据分布
也可以实现不同idc机房的数据库分布。
mysql的功能是基于主库上的二进制日志,然后在备库上重放这些日志的方式来完成的。从这我们可以知道两点:
1、mysql复制是异步的,这也意味着在同一时间点上备库上的数据呢,可能与主库存在不一致的地方,并且无法保证主库和备库间的延迟,影响主库延迟的因素有很多,具体后续文章都会提到,不过虽然延迟无法避免,但是毫无疑问,mysql复制提供了一种提高数据库的性能的方法。
2、因为是利用二进制日志,所以在通常情况下不需要太多的带宽,特别是在基于语句的复制时所需要带宽的就更少了。但使用基于行的复制来进行大批量的更改时,可能会对那种带宽带来一定的压力,特别是在跨IDC环境下进行复制。所以对于这种大批量的数据修改,在任何情况下都应该是分批来进行的,
b、实现数据读取的负载均衡
这种读的负载均衡需要其它组件配合完成。比如可以利用DNS轮询的方式把程序的读连接到不同的备份数据库,或是利用LVS,haproxy这样的代理方式都可以达到这种读负载均衡的目的。关于读写分离和负载均衡,后面我会有文章详细讲解。
c、增强的数据安全性
mysql的复制是非共享架构,同样的数据分布在多台服务器上,所以增加了数据的安全性。
我们还可以利用备库进行数据库备份的工作来减少主库复制,但注意复制并不能代替备份,因为备份和复制所做的工作是不同的,如果我们不小心在主库上错误的删除或是修改了数据,由于备库通常来说很小,所以很难使用备库的数据对错误的删除或修改的数据进行恢复。
要在这种情况下对数据进行恢复只能依靠备份来完成,所以大家千万不要以为做了复制之后就不用备份了,数据库备份在任何时候都是非常重要的。
d、实现数据库高可用和故障切换
备份的另一个重要作用就是让我们可以方便的进行数据库的高可用架构的部署,避免mysql单点故障。后续文章会有详细讲解。
e、实现数据库在线升级
我们可以使用一个高版本的数据库来作为主库的备库,这样在配置高可用工具的时候就可以在很短的时间内完成这种数据库的在线升级。
同时,也可以测试高版本的mysql和我们现有的程序是否兼容。
四、结尾
在对复制进行具体介绍之前,我们先来看mysql二进制日志的一些问题,只有理解了二进制日志的记录方式,我们才能更好的对mysql复制进行部署和优化。
下一篇文章我会对二进制日志文件做介绍,请关注。
本篇文章总结于慕课网《MySQL性能管理及架构设计》课程
【MySQL高可用架构设计】(一)-- mysql复制功能介绍的更多相关文章
- 从MySQL高可用引出对高可用架构设计的一些思考
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- 从mysql高可用架构看高可用架构设计
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- MySQL高可用架构应该考虑什么? 你认为应该如何设计?
一.MySQL高可用架构应该考虑什么? 对业务的了解,需要考虑业务对数据库一致性要求的敏感程度,切换过程中是否有事务会丢失 对于基础设施的了解,需要了解基础设施的高可用的架构.例如 单网线,单电源等情 ...
- MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解
MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Mycat介绍 1>.什么是Mycat Mycat背后是 ...
- MySQL 高可用架构在业务层面的应用分析
MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&idx=1&a ...
- mysql高可用架构之MHA,haproxy实现读写分离详解
MySQL高可用架构之MHA 一.运维人员需要掌握的MySQL技术: 1.基本SQL语句 2.基本的管理[库表数据的管理 权限的管理] 3.容灾 保证数据不丢失. 二.工作中MySQ ...
- 032:基于Consul和MGR的MySQL高可用架构
目录 一.Consul 1.Consul简介 2.准备环境 3.Consul 安装 4.Consul配置文件 5.Consul 服务检查脚本 6.Consul启动 二.MGR搭建 1.MGR配置 2. ...
- (转)MySQL高可用架构之MHA
MySQL高可用架构之MHA 原文:http://www.cnblogs.com/gomysql/p/3675429.html 简介: MHA(Master High Availability)目前 ...
- MySQL高可用架构故障自动转移插件MHA
mha高可用架构是目前mysql高可用故障转移比较成熟的解决方案.MHA插件复杂监控mysql主节点的健康情况.在主节点宕机后,MHA把binlog通过ssh传到从节点进行重做补齐.并提升其中一个从节 ...
随机推荐
- 游戏设计模式——C++单例类
前言: 本文将探讨单例类设计模式,单例类的懒汉模式/饿汉模式,单例类的多线程安全性,最后将利用C++模板减少单例类代码量. 本文假设有一个Manager管理类,并以此为探究单例类的设计模式. 懒汉模式 ...
- 九、Swift对象存储服务(双节点搭建)
九.Swift对象存储服务(双节点搭建) 要求:Controoler节点需要2块空盘 Compute节点需要再加2块空盘 本次搭建采用Controller 和 Compute双节点节点做swift组件 ...
- Tensorflow之MNIST手写数字识别:分类问题(2)
整体代码: #数据读取 import tensorflow as tf import matplotlib.pyplot as plt import numpy as np from tensorfl ...
- [C2P1] Andrew Ng - Machine Learning
About this Course Machine learning is the science of getting computers to act without being explicit ...
- IntelliJ IDEA常用配置(三)
提示:对于一些通用的设置可以配置成全局的. 1. 主题配置 File - Settings - Color Scheme,默认的是Default(一个白色主题),Darcula是一个黑色主题. 我们也 ...
- 用Python写Verilog(非HLS)
https://blog.csdn.net/qq_32010099/article/details/81197171 前段时间玩Python的时候好奇, 既然Python这么强大, 那么能不能用Pyt ...
- mysql里的insert
insert不跟where 比如 insert into table (name) value('******')where id =1 肯定不行的 insert 语句 是插入语句,不跟条件的. 如果 ...
- windows下 go vscode编译运行方法
1:直接在终端运行go run命令编译 2.安装code runner插件,根据箭头标示顺序,可以在右侧看到它支持的语言.
- 【转】 AOP(面向切面编程)、Filter(过虑器)、Interceptor(拦截器)
AOP(面向切面编程) 面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承.多态和封装.而封装就要求将功能分散到不同的对象中去,这在软 ...
- Python源码:字典
一.创建增加修改 1.实现代码 #创建 stu_info = { "xiedi":28, "liuhailin":27,"daiqiao": ...