热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

编程_新手编程之旅:MySQL中的关键点!一文带你搞懂它

本文由编程笔记#小编为大家整理,主要介绍了新手编程之旅:MySQL中的关键点!一文带你搞懂它相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了新手编程之旅:MySQL中的关键点!一文带你搞懂它相关的知识,希望对你有一定的参考价值。



















你真的很特别












mysql的使用非常普遍,跟mysql有关的话题也非常多,




如性能优化、高可用性、强一致性、安全、备份、集群、横向扩展、纵向扩展、负载均衡、读写分离等。



要想掌握其中的精髓,可得花费不少功力,虽然目前流行的mysql替代方案有很多,可是从最小成本最容易维护的角度而言,mysql还是首选。




下面从应用场景的角度切入,对mysql的技术点进行组织,写一份知识图谱,方便进行更深入的学习和总结。







新手编程之旅:MySQL中的关键点!一文带你搞懂它




单Master



新手编程之旅:MySQL中的关键点!一文带你搞懂它







新手编程之旅:MySQL中的关键点!一文带你搞懂它





简单的mysqldump是可以胜任的。单Master的情况是普遍存在的,对于很多个人站点、初创公司、小型内部系统,考虑到成本、更新频率、系统重要性等问题,




系统只依赖一个单例数据库提供服务,基本上已经满足需求。这种场景下我觉得重点应该关注的话题有上图所示的四点。




其中最重要的环节是数据备份,如果是交易量非常低,并且具有非常明确的服务时间段特性的话,但是这是有缺陷的,数据还原之后注定从备份点到还原点之间的数据会丢失。




然而在极多数的情况下,备份的工作是没法马虎的,如下列举的几点小细节,下学期将分享更多操作性的文章。




1)冷备:停机,直接copy物理文件,InnoDB引擎(frm文件、共享表空间文件、独立表空间文件、重做日志文件、my.cnf)。




恢复:把文件copy到对应目录。




2)热备:Ibbackup或者XtraBackup工具,记录重做日志文件检查点的LSN,




copy共享表空间文件以及独立表空间文件(不产生任何阻塞),记录copy后重做日志文件检查点的LSN,copy备份是产生的重做日志。




恢复:恢复表空间文件,应用重做日志文件。




3)温备:




mysqldump,–single-transaction参数进行事务管理保证数据一致性。备份时不能用DDL语句。 




恢复:直接执行文件,mysql –uroot –p <文件名.sql>


二进制半同步复制,主从服务器增量复制




恢复:mysqlbinlog









一主一从



新手编程之旅:MySQL中的关键点!一文带你搞懂它














考虑一主一从的多数初衷是系统性能和系统高可用性问题,除了单




Master场景中的备份工作需要做好以外,还有性能优化、读写分离、负载均衡三项重点工作需要考虑。其中性能优化的内容比较多,




也是一块大主题,要从系统的服务指标作为依据采取相应的动作,多数系统要求的是3秒内完成请求,




总体换算下来,数据库大概可以有1.5秒的总执行时间,能满足这个性能要求就是合理的优化方案。




下学期以这样的优先级来分别整理内容:索引优化 -》 表设计优化 -》数据库配置优化 -》硬件优化。




读写分离和负载均衡的实现相对简单些,我目前维护的系统比较落后,没有做读写分离,




因为是一套以报表类功能为主的系统,而负载均衡是依赖php代码来做的,从实际运维效果来看,




不大理想,而且负载均衡的代码过分嵌入到业务逻辑代码中,给代码维护带来一定噪音。















一主 n 从




新手编程之旅:MySQL中的关键点!一文带你搞懂它







新手编程之旅:MySQL中的关键点!一文带你搞懂它








一旦开始考虑一主多从的服务器架构,则证明你的系统对可用性、一致性、性能中一种或者多种的要求比较高。




好多系统在开始搭建的时候都会往这个方向看齐,毕竟这样“看起来”系统会健壮很多。




不过其实并不能单单依靠mysql的配置和mysql自带的中间件来解决可用性、一致性方面的问题。











横向集群



新手编程之旅:MySQL中的关键点!一文带你搞懂它







新手编程之旅:MySQL中的关键点!一文带你搞懂它






系统庞大到需要分库分表,其实是一件可喜可贺的事情,




但是切记的是要前面提到性能优化工作做到极致之后才好考虑这些会增加系统复杂度的解决方案。横向集群主要是从业务特性的角度对系统进行切分,




最彻底就是切分成了各个子系统,子系统之间通过一些数据同步的方案来把一些核心数据进行共享,以避免跨库调用跨库join。




然后是各种系统接口调用,把大事务拆成小事务,事务之间做好隔离和同步。




上图中的三个问题在横向集群的架构体系中应属于很有特色的问题,在实际项目中其实是尽量去避免这些需求的存在的,




不过如果确实需要了,也得有解决方案。











纵向集群



新手编程之旅:MySQL中的关键点!一文带你搞懂它








横向集群的切分思路最终是切分子系统,而纵向集群最后遇到的最棘手的问题是扩缩容,




我运维的一个系统是提前对数据做了256个切片,256切片中0~127切片和128~255切片分别存在两个一主两从的数据库集群中,




系统运维了3年多,目前还没有扩容需求。设计初衷应该是考虑得到,假设有一天数据量非常大,




可以把256个切片分4大片,分别存储到4个一主两从的集群中,从而实现扩容。




这个思路的确是可取的,只是我们的分库逻辑当前是php代码实现,也有一定程度上影响了业务代码的逻辑,




运维起来有点心惊胆战,还是保持业务代码清爽比较好。





新手编程之旅:MySQL中的关键点!一文带你搞懂它




新手编程之旅:MySQL中的关键点!一文带你搞懂它

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

免费学习书籍:


免费学习资料:




推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 什么是网关服务器初学linux服务器开发时,我们的服务器是很简单的,只需要一个程序完成与客户端的连接,接收客户端数据,数据处理,向客户端发送数据。但是在处理量很大的情况下,一 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • php网站设计实验报告,php网站开发实训报告
    本文目录一览:1、php动态网站设计的关键技术有哪些软件,及搭建步骤需要哪些页面,分别完成 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
    11月13日,由腾讯云主办、游戏茶馆协办的2020年首场GAME-TECH腾讯云游戏行业技术沙龙在成都圆满落幕。本次沙龙邀请了腾讯云游戏行业解决方案总监宋永周、腾讯云游戏行业高级解决方案架构师曾梓恩、腾讯云游戏行业高级产品架构师郑晓曦、腾讯云游戏行业高级解决方案架构师温球良和天美L1(王者荣耀)服务器技术副总监杨光,为参会同行们带来了干货满满的技术建议。本文介绍了腾讯云游戏云的优势和为不同游戏研运场景提供的服务。腾讯云在中国游戏云服务市场领跑,成为众多游戏开发者的合作伙伴。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • Nginxgaodaima.comnginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司 ... [详细]
author-avatar
爱在逃离
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有