Mysql数据库架构

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: Mysql数据库架构

1、服务器硬件优化

   

   内存(不一定越多越好,避免浪费)

  1. 索引和数据可以存在缓存
  2. 缓存区大小
  3. 给其他服务提供更多内存

   磁盘

           传统机器磁盘

  1. 存储容量
  1. RAID技术可以将小磁盘变成大磁盘,增加传统机器硬盘的性能。(常用)(选择最好带缓存功能的)
  1. RAID 0 是最简单,最少使用2块以上硬盘即可 成本低 没有提供冗余和错误修复能力。后续费用可能更高。(可通过软件)
  2. RAID 1 又称磁盘镜像,保证可以修复,利用的磁盘可能就是一半的空间(可通过软件,用作读取日志等使用读块,写慢需要镜像)
  3. RAID 5 分布式奇偶校验磁盘阵列(读取很快,写的时候比较慢,使用在 从服务器上)。
  4. RAID 10 分片的镜像(推荐)
  1. image.png
  2. 固态磁盘 :  适用于存在大量随机I/O的场景      解决单线程负载的I/O瓶颈      最好使用在从服务器上    适合MYSQL
  1. 有更好随机读写性能
  2. 更好的支持并发
  3. 更容易损坏
  4. SSD
  1. 使用SATA
  2. 使用过SATA支持RAID技术 。选择支持SSD RAID配置
  1. PCI-E SSD  闪存Fusion IO
  1. 无法使用SATA接口
  2. 价改比SSD高性能更好 会使用CPU内存空间(代价)
  3. 可以不使用RAID了 ,从成本考虑
  1. 网络存储 SAN和NAS : 适用于文件存储   数据库备份文件  

                                       

       



  1. 传输速度
  2. 访问时间
  3. 主轴转速
  4. 物理尺寸

 


总结 : 64位 对应 64位

           对于并发比较高 cpu的数量比频率重要

           对于复杂sql      频率重要        

           内存尽可能大

           I/O子系统








2、操作系统 Centos系统参数优化

  内核相关参数  /etc/sysctl.conf

           TCP 链接

               net.core.somaxconn = 65535

              net.core.netdev_max_backlog = 65535

               net.ipv4.tcp_max_syn_backlog = 65535

           

           加快tcp回收

              image.png

           TCP缓存区 发送和接受

               image.png

           失效链接加速tcp回收

               image.png


       image.pngimage.png

image.pngimage.png


image.png   image.pngimage.pngimage.png


image.png

 



image.png  




   


3、MyISAM  5.5版本以前默认

  1. 表级锁
  2. 读写混合并发不是特别好  。 适合读表
  3. 表修复 可能数据会丢失
  1. 通过 check table ***
  2. 通过 repair table ***
  1. 支持压缩 这张表只读
  1. 通过命令 myisampack -b -f ***.MYI
  2. 通过压缩之后进行读写有什么问题
  1. 只读
  1. mysql 5.0 默认单表大小为4G 扩大需要修改MAX_Rows 和 AVG_ROW_LENGTH
  2. mysql 5.0之后为256TB
  3. 适用场景
  1. 非事务
  2. 只读类(报表)
  3. 空间类应用 例如GPS



4、MySQL5.5 之后默认为Innodb

  1. MySQL 5.6中,这个属性默认值是ON 默认使用独立表空间
  2. (innodb_file_per_table = OFF) 或者为每张表的数据单独放在一个.ibd文件(innodb_file_per_table = ON)。每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间。这对于一些高级特性也是有必要的,比如数据压缩。但是它不会带来任何性能收益。你不想让每张表一个文件的主要场景是:有非常多的表(比如10k+)。
  3. 使用独立表空间推荐
  4. image.png
  5. 支持事务ACID
  6. 支持行级锁
  1. 由存储引擎层实现
  1. 共享锁(也称读锁)
  2. 独占锁(也称写锁)

5、CSV存储引擎

  1. image.png
  2. image.png可以直接对数据文件直接编辑
  3. image.pngimage.png


   




6、Archive存储引擎

  1. image.png
  2. image.png
  3. image.png








7、Memory 存储引擎

   

  1.    image.png结构保存在磁盘 数据保存在内存
  2. image.pngimage.pngimage.png
  3. image.png默认值只有16M 对已经存在memory表修改之后无效 ,除非重建
  4. image.png
  5. image.png



8、Federated存储引擎一个数据库可以读取另一个数据库

  1.    image.png
  2. image.png
  3. image.png






9、Mysql服务器配置

  1. image.png
  2. image.png
  3. image.png
  4. image.png
  5. image.png
  6. Innodb_flush_method = O_DIrect 适用linux
  7. image.png
  8. image.png



10、安全

  1. image.png
  2. image.png 后面两个针对主从结构
  3. image.png不要轻易改动

11、基准测试 mysqllap 和 sysbeanch

   


12、image.png



13、mysql 二进制日志

  1. 基于段 statement
  2. 基于行 row(官方推荐)
  1. 优点
  1. 主从复制更加安全
  2. 对每行数据修改比基于段复制更搞笑
  1. 缺点
  1. 日志较大 binglog_row_image = [full(默认) | minimal | noblob]
  1. 运行 mysql -vv **.
  1. 混合 MIXED 上述混合



14、复制

image.png

image.pngimage.png



image.pngimage.png



15、复制工作方式及要求

   image.png

  1.  主服务器查看是否开启二进制日志
  2.  从服务器上



16、配置Mysql复制--基于日志点的复制

  1.    基于日志点的复制
  1. 配置账号
  1. image.png
  1. 配置主服务器
  1. image.png
  1. 配置从服务器
  1. image.png log_slave_update = on 可用于从服务器作为另一个服务器的主服务器
  1. 初始化从服务器数据
  1. image.png
  1. 启动复制链路
  1. 在从服务器上启动

                       image.png

                           start slave

image.pngimage.png

           



17、配置Mysql复制--基于 GTID 复制优缺点

           image.png

  1.      在主DB服务器上建立复制账号image.png
  2. 配置主服务器

       image.pngimage.pngimage.png

       3.配置从数据库服务器        


       image.pngimage.png

       4. 初始化 从数据库数据

           image.pngimage.png


image.png



           

18、选择复制模式

   5.6之后才有GTID辅助

       image.png





19、MySQL复制拓扑

  1. 一主多从
  1. 优点
  1. 配置简单
  2. 可以从多个从库分担读负载
  1. 用途
  1. 为不同业务使用不同从库(分担查询,使用不同索引,使后台查询不影响前端查询)
  2. 将一台从库放到远程IDC作为灾备
  3. 分担读负载
  1. 双主复制  主-主复制
  1. image.png
  2. 容易产生冲突 导致链路中断 耗时长
  3. 适用于 一个地区保存另一个地区数据
  4. 建议操作
  1. 两个主中操作的表最好分开 : 上海的库只使用上海的表 北京的库只使用北京库
  2. 使用下面参数控制自增
  1. image.png
  2. image.png
  1. 推荐使用主备模式下 主主
  2. image.png
  1. image.png
  1. 主有问题时候,从也需要关闭
  2. 从多的时候会对主性能有压力(解决这个问题 出现级联复制)image.png 需要配置slave_log_updates



20、MySQL复制性能优化

  1.   主从延迟的因素
  1. image.png
  2. image.png推荐后者
  3. image.png
  1. 配置多线程复制
  1. image.pngmysql5.7 设置4个线程 并设置并发为逻辑适中
  1. 复制常见问题
  1. image.png
  2. image.png
  3. image.png
  4. image.png一定要设置read_only
  5. image.png在从服务器的时候多个从服务器server_id一样比较隐蔽
  6. image.png
  7. image.png





21、高可用

image.pngimage.png


image.pngimage.png





22、MMM架构

   同一时间只有一台主服务器提供外部服务 从服务器read-only

   image.pngimage.png

image.png

   


   


22、MHA架构





23、索引策略

   

image.png

image.pngimage.pngimage.png


image.pngimage.png


image.png






24、SQL查询优化  通过日志形式


image.png


   image.png




  1. image.png
  2. image.png
  3. image.png


  4. image.png
  5. image.png
  6. image.png



   


25、SQL查询优化  实时查询


   image.png做个定时访问







26、sql解析预处理及生成执行计划

  1.    image.png
  2. image.png
  3. image.png





image.png


image.png


image.png



27、分库分表

   

   image.pngimage.png



终极大招:表的水平拆分



  image.pngimage.pngimage.png

image.png

image.pngimage.png









image.png






相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
存储 SQL 关系型数据库
MySQL进阶突击系列(03) MySQL架构原理solo九魂17环连问 | 给大厂面试官的一封信
本文介绍了MySQL架构原理、存储引擎和索引的相关知识点,涵盖查询和更新SQL的执行过程、MySQL各组件的作用、存储引擎的类型及特性、索引的建立和使用原则,以及二叉树、平衡二叉树和B树的区别。通过这些内容,帮助读者深入了解MySQL的工作机制,提高数据库管理和优化能力。
|
1月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
140 3
Mysql高可用架构方案
|
12天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
81 15
|
6天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
13天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
17天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 存储 缓存
【赵渝强老师】MySQL的体系架构
本文介绍了MySQL的体系架构,包括Server层的7个主要组件(Connectors、Connection Pool、Management Service & Utilities、SQL Interface、Parser、Optimizer、Query Caches & Buffers)及其作用,以及存储引擎层的支持情况,重点介绍了InnoDB存储引擎。文中还提供了相关图片和视频讲解。
【赵渝强老师】MySQL的体系架构
|
19天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
1月前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案

推荐镜像

更多
下一篇
DataWorks