http://blog.51cto.com/hongchen99/1936473

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:
1
2
3
4
5
mysql复制的优点:
     1 、数据分布
     2 、数据备份
     3 、负载均衡
     4 、提示高可用性


mysql/slave

wKiom1k9_iWCGdXvAAFKadhSYXs200.png












master/slave较为简单,master负责响应客户端的写请求,slave负责响应客户端的读请求

实现原理:

    slave在启动两个线程,i/o线程和sql线程,master启动dump线程,每当master的数据发生改变时,master就会将对应的SQL语句存储在二进制日志文件中,slave的通过i/o线程连接master的dump线程并每个一段时间就会向master询问二进制文件是否发生改变,如果二进制文件发生改变slave的i/o线程就会去读取二进制文件中发生改变的内容存储在本地的中继日志中并通过sql线程对中继日志的内容进行回放,并记录本次读取到的二进制文件位置,完成复制。

    

存在问题:

    1、master压力过大

    2、master宕机之后将无法完成用户写请求

    3、节点数据可能不一致

    4、默认使用异步复制方式

    5、延迟

     延迟的原因:

            1、 slave节点过多,master会为每个slave打开一个dump线程

            2、 并发写请求操作,由于mysql支持并发请求,如果多个写请求同时到达,将会将这些写操作都记录在二进制日志中,但在写入二进制文件时只能通过串行写入

            3、 slave通过i/o线程读取二进制文件并写入中继日志是也只能通过串行写入



master/master

    wKioL1k9_xrjiV4fAAH2vvIN1So334.png


master/master的出现正好解决了master/slave中如果master宕机之后用户的写请求无法完成的问题,但同时引入了比master/slave更多的问题,实现原理基本和master/slave相同,只需要在两台master中分别启动二进制日志和中继日志即可


注意问题:

    1、 避免主键重复

    2、 server-id全局唯一


存在问题:

    1、 经常出现两台master数据不一致(存在巨大风险)

    2、 主键冲突

    3、 延迟

    


级联复制

wKiom1k9_7iQGpVOAAHcuRx_k8o670.png

    

    在有些应用场景中,可能读写压力差别比较大,读压力特别的大,一个Master可能需要上10台甚至更多的Slave才能够支撑注读的压力。这时候,Master就会比较吃力了,因为仅仅连上来的SlaveIO线程就比较多了,这样写的压力稍微大一点的时候,Master端因为复制就会消耗较多的资源,很容易造成复制的延时。这时候我们就可以利用MySQL可以在Slave端记录复制所产生变更的BinaryLog信息的功能,也就是打开log_slave_update选项。然后,通过二级(或者是更多级别)复制来减少Master端因为复制所带来的压力。

    这种多层级联复制的架构,很容易就解决了Master端因为附属Slave太多而成为瓶颈的风险。

但下面阶级过多同一个变更传到最底层的Slave所需要经过的MySQL也会更多,同样可能造成延时较长的风险


存在问题:

    1、可能导致延迟更为严重

    2、借助于BlackHole存储引擎(黑洞引擎)



半同步复制

     mysql复制方式:

        异步:将二进制日志发送给slave不等待slave回应直接返回给客户端,数据储存成功

        同步:将二进制日志发送给slave等待所有slave回应执行成功后返回给客户端,数据储存成功

        半同步:将二进制日志发送给slave等待一个slave回应执行成功后返回给客户端,数据储存成功


本文转自  红尘世间  51CTO博客,原文链接:http://blog.51cto.com/hongchen99/1934414

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
开发者
4月更文挑战赛火热启动,寻找热爱技术内容创作的你
开发者社区4月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
2751 25
|
8月前
|
弹性计算 Java 关系型数据库
基于ECS搭建Java Web开发环境
基于ECS搭建Java Web开发环境
254 0
|
8月前
|
存储 网络协议 Ubuntu
Linux环境下使用SVN快速访问资料库?试试使用cpolar端口映射
SVN分为服务端和客户端,服务端主要是做数据资料存储,客户端主要是图形化工具连接服务端获取服务端数据资料,下面介绍在ubuntu系统安装服务端,在通过客户端远程访问。
98 0
Linux环境下使用SVN快速访问资料库?试试使用cpolar端口映射
|
5月前
|
数据可视化 测试技术 API
Modelscope Agent实操(三):将API注册为tool,成为smart API,方便社区开发者调用
大家通过写python代码的方式来定制自己的tool,进一步扩展Agent的能力。
|
9月前
|
缓存 NoSQL Java
zookeeper实现分布式锁原理
zookeeper实现分布式锁原理
87 0
|
6月前
|
安全 API 数据库
一款支持API文档编辑功能的WIKI文档管理系统
zyplayer-doc是一款现代化的适合团队和个人使用的WIKI文档管理工具,同时还包含数据库文档、Api接口文档
624 0
|
jenkins 测试技术 持续交付
pytest 自动化测试框架(一)
pytest 是一个成熟的全功能 Python 测试工具,可以帮助您编写更好的程序。它与 Python 自带的 Unittest 测试框架类似,但 pytest 使用起来更简洁和高效,并且兼容 unittest 框架。
pytest 自动化测试框架(一)
|
监控 Oracle Ubuntu
镜像站体验官新一期任务发布,完善镜像站配置信息拿天猫精灵音箱
新一期镜像站体验官任务发布,希望热爱科技、热爱开源一起共建更加美好的镜像站,投稿一经采纳即可获得优酷VIP卡一张(最多一张),被采纳配置信息超过3个便可得天猫精灵音响一个。
59498 1
|
前端开发
【CSS进阶】使用CSS gradient制作绚丽渐变纹理背景效果(中)
一直对渐变背景这块比较感兴趣,但是因为每天加班实在太忙了,任务也比较多。所以就只能下班的时间研究渐变背景这方面的知识,一来满足了自己的好奇心,二来可以更加了解这方面的知识。
485 0
【CSS进阶】使用CSS gradient制作绚丽渐变纹理背景效果(中)
|
对象存储
阿里云对象存储OSS版本控制功能开通详细说明
阿里云OSS对象存储创建Bucket时可以选择是否开通版本控制功能,什么是OSS版本控制功能?OSS对象存储有必要开通版本控制吗?开通版本控制需要另外付费吗?