`
BradyZhu
  • 浏览: 263879 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【总结】MySQL数据库

 
阅读更多
1,MySQL读写分离
- MySQL复制(Replication)
- 双主多从架构
2,MySQL高可用(HA)和读负载均衡
- 高可用Keeplived,失效转移
- 负载均衡LVS
3,MySQL可扩展设计 - 数据切分
- 数据的垂直切分(纵向切分)
- 场景/出发点
- 大字段
- 使用用途:属性类别
- 访问频率
- 更新频率
- 模块/功能解耦
- 优点
-数据库的拆分简单明了,拆分规则明确
-应用程序模块清晰明确,整合容易
-数据维护方便易行,容易定位
- 缺点
-部分表关联(Join)无法在数据库级别完成,需要在程序中完成
-对于访问极其频繁且数据量超大的表仍然存在性能瓶颈,不一定能满足要求
-事务处理相对更为复杂
-切分达到一定程度之后,扩展性会遇到限制
- 过度切分可能会带来系统过度复杂难以维护
- 数据的水平切分
- 水平切分不依赖于特定的技术,更多的是逻辑层面的规划,需要不断的分析
- 场景/出发点
- 按照日期时间
- 按照业务ID,如用户ID,商户ID
- 功能,如置顶帖
- 分区算法
- 列表List
- 根据某个属性,如地域华东,华北,华南等)
- 哈希算法
- 除余
-根据ID % 节点数目
- 扩展性差,当需要把几点从10变成20的时候,需要数据的所有重新分区
- 字符串Hash
- 范围(Range)
- 根据ID之区间进行范围分区
- 随着用户数量的不断增长,需要创建更多的分区
- 各个分区工作量负载可能存在较大的差异,老用户所在分区压力大,或者一部分ID接近热点用户的分区压力过大
- 映射关系
- 分区跟ID映射
- 产生大量的映射数据
- 有较强的可伸缩性
- 优点
-表关联基本能够在数据库端全部完成
-不会存在某些超大型数据量高负载的表遇到瓶颈的问题
-应用程序端整体架构改动相对较小
-事务处理相对简单
-只要切分规则能够定义好,基本上较难遇到扩展性限制
- 缺点
-切分规则相对更为复杂,很难抽象出一个能够满足整个数据库的切分规则
-后期数据的维护难度有所增加,人为手工定位数据更困难
-应用系统各模块耦合度较高,可能会对后面数据的迁移拆分造成一定的困难
- 数据垂直与水平联合切分
- 优点
-可以充分利用垂直切分和水平切分各自的优势而避免各自的缺陷
-让系统扩展性得到最大化提升
- 缺点
-数据库系统架构比较复杂维护难度更大
-应用程序架构也相对更复杂
- 数据切分及整合方案
- 思路
-在每个应用程序模块中配置管理自己需要的一个(或者多个)数据源,直接访问各
个数据库,在模块内完成数据的整合
-通过中间代理层来统一管理所有的数据源,后端数据库集群前端应用程序透明
- 选择:可能90%以上的人在面对上面这两种解决思路的时候都会倾向于选择第二种,尤其是系统不断变得庞大复杂的时候
- 方案
-自行开发中间代理层
-利用MySQL Proxy 实现数据切分及整合
-功能主要有连接路由Query 分析Query 过滤修改负载均衡,以及基本的HA机制
- 以上功能通过自行编写LUA 脚本来实现
-MySQL Proxy 实际上是在客户端请求MySQL Server之间建立了一个连接池。所有客户端请求都是发向MySQL Proxy,然后经由MySQL Proxy 进行相应的分析,判断出是读操作还是写操作,分发至对应的MySQL Server
-利用Amoeba 实现数据切分及整合(基于Java 开发),具有Query 路由,Query 过滤,读写分离,负载均衡以及HA 机制等相关内容
-数据切分后复杂数据源整合
-提供数据切分规则并降低数据切分规则给数据库带来的影响
-降低数据库与客户端的连接数
-读写分离路由
- Cobar
- 分布式
- Cobar的分布式主要是通过将表放入不同的库来实现
- Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分
- Cobar也支持将不同的表放入不同的库
- 多数情况下,用户会将以上两种方式混合使用
- 需要强调的是,Cobar不支持将一张表,例如test表拆分成test_1, test_2, test_3.....放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式
- HA
- 在用户配置了MySQL心跳的情况下,Cobar可以自动向后端连接的MySQL发送心跳,判断MySQL运行状况,一旦运行出现异常,Cobar可以自动切换到备机工作, 强调:
- Cobar的主备切换有两种触发方式,一种是用户手动触发,一种是Cobar的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常
- Cobar只检查MySQL主备异常,不关心主备之间的数据同步,因此用户需要在使用Cobar之前在MySQL主备上配置双向同步
- 约束
- 不支持跨库情况下的join、分页、排序、子查询操作
- SET语句执行会被忽略,事务和字符集设置除外
- 分库情况下,insert语句必须包含拆分字段列名
- 分库情况下,update语句不能更新拆分字段的值
-不支持SAVEPOINT操作
- MyCat:推荐使用,请参考文章“【总结】MyCat分布式数据库中间件”
-利用HiveDB实现数据切分及整合
-自行实现了数据冗余机制
- 基于Java 针对MySQL数据库的提供数据切分及整合的开源框架,只是目前的HiveDB仅仅支持数据的水平切分
- 数据切分与整合中可能存在的问题
-引入分布式事务的问题
-跨节点Join的问题
-跨节点合并排序分页问题
分享到:
评论

相关推荐

    Mysql数据库学习总结.pdf

    Mysql 数据库学习总结 Mysql 数据库学习总结涵盖了数据库的基本操作、表的基本操作、完整性约束、修改表等方面的知识点。 数据库的基本操作: * 创建数据库:使用 `Create database` 语句创建数据库,例如 `...

    mysql数据库优化的学习心得

    MySQL 数据库优化技巧总结 MySQL 数据库优化是数据库管理和开发者非常关心的一个问题。由于 MySQL 数据库的性能优化可以直接影响到整个应用系统的性能和用户体验,因此掌握 MySQL 数据库优化技巧对开发者和数据库...

    MySQL数据库入门总结

    MySQL 数据库入门总结是关系型数据库管理系统的核心内容,本节主要总结了 MySQL 数据库的入门知识点,涵盖了数据库设计、数据定义语句、数据查询语句、数据操作语句、数据控制语句等方面的内容。 一、数据库设计 ...

    MYSQL数据库世界五百强应用一例.pdf

    MYSQL数据库架构设计要点总结 MYSQL数据库架构设计是数据库管理和维护的重要组成部分,它直接关系到数据库的性能、可用性和安全性。作为一种关系型数据库管理系统,MYSQL具有广泛的应用前景和发展潜力。本文将对...

    MySQL 数据库 应用编程接口

    ### MySQL数据库应用编程接口:深度解析 #### 一、概览 MySQL数据库应用编程接口(API)是指一系列标准协议和工具,允许开发者通过各种编程语言与MySQL数据库进行交互。这包括了使用ODBC(Open Database ...

    mysql数据库知识点总结.docx

    MySQL数据库知识点总结 MySQL数据库知识点总结是关系型数据库管理系统(RDBMS)的核心概念,涵盖了数据库概念、发展历程、常见数据库、数据库结构、数据操作、SQL语句等知识点。 1. 数据库概念 数据库是用来存储...

    MYSQL数据库常见问题诊断.docx

    本文档旨在总结MYSQL 数据库常见问题的诊断和解决方法,涵盖日志、内存、I/O、句柄数、保留策略等五个方面。 日志诊断 在生产环境下,当 MYSQL 数据库出现问题时,首先需要查看报警日志,确定数据库的问题。通常,...

    MySql数据库账号密码过期导致Navicat连接不上.docx

    当尝试通过Navicat或其他客户端连接MySQL数据库时,可能会遇到如下错误提示:“Your password has expired. To login you must change it using a client that supports expired passwords”。这表明当前使用的MySQL...

    MySQL数据库表导出Word工具,生成数据库说明文档

    总结一下,"MySQL数据库表导出Word工具"是一个高效实用的解决方案,它通过ODBC和Word宏实现了数据库结构的自动化文档化。使用这个工具,你可以方便地创建和维护MySQL数据库的详细说明,提高团队的工作效率和沟通效果...

    MySQL数据库启动失败1067进程意外终止

    MySQL数据库启动失败1067进程意外终止的解决办法总结 MySQL数据库是一个非常流行的关系型数据库管理系统,但是在使用中可能会出现一些问题,例如MySQL数据库启动失败1067进程意外终止错误。这种错误可能是由于多种...

    Mysql数据库的相关知识总结 思维导图

    该思维导图是根据mysql相关知识,总结mysql数据库的基础知识

    MySQL数据库设置远程访问权限方法总结.pdf

    MySQL数据库设置远程访问权限方法总结 MySQL数据库设置远程访问权限是关系型数据库管理系统中的一个重要问题。本文将详细介绍如何设置MySQL数据库的远程访问权限,并提供了一些相关的安全策略和Best Practice。 ...

    mysql数据库移植问题

    ### MySQL数据库移植问题详解 #### 一、MySQL数据库移植概述 在进行系统迁移或服务器升级的过程中,经常会遇到数据库移植的问题。对于SQL Server等数据库来说,只要版本一致,通常可以直接进行数据库文件的附加...

    Oracle到Mysql数据库迁移总结

    Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结

    MySQL数据库知识点总结.docx

    MySQL数据库知识点总结 MySQL 是一种关系型数据库管理系统(RDBMS),它具有高效、稳定、可靠、安全等特点,是目前最流行的开源关系型数据库管理系统之一。 MySQL 入门 1. MySQL 介绍:MySQL 是一种关系型数据库...

    MySQL数据库技术与项目应用教程教案.pdf

    MySQL数据库技术是目前广泛使用的关系型数据库管理系统之一,它采用标准的SQL语言作为数据操作和查询的手段,能够高效地管理大量数据。在本教案中,将重点介绍MySQL数据库的安装、配置,以及字符集设置等技术点,并...

    MySQL数据库应用与开发实训报告.doc

    【MySQL数据库应用与开发实训报告】 本实训报告主要围绕姜桂洪主编的《MySQL数据库应用与开发》一书,结合2018年清华大学出版社的教材内容,详细介绍了MySQL数据库在Windows10环境下5.7版本的实战操作,涵盖了从...

    MySQL数据库基础实例教程(第2版)教学大纲.pdf

    总结而言,《MySQL数据库基础实例教程(第2版)》课程是一门内容丰富、结构合理的教学大纲,旨在通过系统性的学习和实践训练,使学生能够全面掌握数据库的应用、管理和维护技能,为他们未来的学术发展和职业道路奠定...

    实验2 MySQL数据库对象管理

    总结来说,这个实验全面覆盖了MySQL数据库管理的基础操作,包括数据字典的查询、数据库和表的创建与修改、索引的管理和视图的创建,是学习数据库管理基础知识的理想实践。通过这个实验,学生能够掌握数据库对象的...

    南开大学《MYSQL数据库》在线作业3.pdf

    MYSQL数据库在线作业知识点总结 MYSQL数据库在线作业中,DELETE语句的使用非常重要。如果DELETE语句中没有使用WHERE子句,则将删除指定数据表中的全部记录。因此,在执行DELETE语句时,必须小心并确保WHERE子句的...

Global site tag (gtag.js) - Google Analytics