【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传到从节点进行重做补齐.并提升其中一个从节 ...
随机推荐
- jmeter判断请求响应时间,请求下加‘断言持续时间’,添加监听器断言结果;统计超时
- Linux下怎么启动、停止和重启MySQL
一.启动方式 使用linux命令service 启动:service mysqld start 使用 mysqld 脚本启动:/etc/inint.d/mysqld start 使用 safe_mys ...
- CSP-S 2019图论总结
CSP-S 2019图论总结 一.最短路问题 模板 Floyd算法 void floyd() { memset(map,0x3f,sizeof(map)); for(int i=1;i<=n;i ...
- shellnet运行train_val_seg.py
1.semantic3d数据集准备:prepare_semantic3d_data.py 11个测试数据集(.txt文件): 假如运行的是室外点云数据集“seg_semantic3d”,可能需要做以下 ...
- luoguP2463 [SDOI2008]Sandy的卡片
题意 显然加上一个数相等就是差分数组相等,于是问题变为求几个串的最长公共子串. 这里我学习了如何用SA求LCS. 首先问题要转化成求一些后缀的最长公共前缀,要求这些后缀分属不同的串. 于是二分答案,于 ...
- CentOS7 通过 devstack 安装 OpenStack
安装前的准备 修改源 (可跳过) 将下载源变更到国内可以时下载速度大大提升 打开下面的文件 vim /etc/yum.repos.d/CentOS-Base.repo 将原来的注释掉改成: [base ...
- 解惑:如何使用SecureCRT上传和下载文件、SecureFX乱码问题
解惑:如何使用SecureCRT上传和下载文件.SecureFX乱码问题 一.前言 很多时候在windows平台上访问Linux系统的比较好用的工具之一就是SecureCRT了,下面介绍一下这个软件的 ...
- C# 原子操作理解
C#内置提供的原子操作 Interlocked.Increment:以原子操作的形式递增指定变量的值并存储结果. Interlocked.Decrement:以原子操作的形式递减指定变量的值并存储结果 ...
- 《一起学mysql》1
自从达内毕业后就没用过mysql,一直用的hive,hdfs 存储数据,最近突然又接触到了关系型数据库.本想随便从网上 找个教程看看,但是都不是很满意,pdf看着又难受,还是自己个儿写个笔记吧. ...
- tf.ConfigProto()
tf.ConfigProto一般用在创建session的时候用来对session进行参数配置 with tf.Session(config=tf.ConfigProto(...)...) tf.Con ...