mysql架构组成

什么是mysql

mysql有mysqld AB公司自主研发,是最流行的开发源代码的数据库管理系统之一,它同时也是一个支持多线程高并发多用户的关系型数据库管理系统

mysql数据库以其简单高效可靠的特点。

mysql与其他数据库的简单比较

功能比较:字段类型支持方面,另一个著名的开源数据库PostGreSQL支持的类型是最完整的,而oracle和其他一些商业数据库,比如DB2,Sybase等,较mysql来说也要相对少一些。事务支持方面,虽然mysql自己的存储引擎没有提供,但是已经通过第三方插件式存储引擎innodb实现了sql 92标准所定义的四个事务隔离级别的全部。在可编程支持方面,mysql和其他数据库相比还是一定的差距,虽然最新版的mysql已经开始提供一些简单的可编程支持。如开始支持procedure,function,trigger等。但是所支持的功能还是比较有限,和其他几大商用数据库管理系统相比,还存不足。

易用性比较:系统易用性方面来比较,每一个使用过mysql的用户都能够明显地感觉出mysql在这方面与其他通用数据库管理系统之间的优势所在。尤其相对于一些大型的商业数据库管理系统如oracle,DB2以及sybase来说,对于普通用户来说,操作的难易程度明显不处于一个级别,mysql一直都奉行简单易用的原则。从安装方面来说,mysql安装包仅仅只有100MB左右,与几大商业数据库完全不在一个数量级,安装难易程度也要逼oraccle等商业数据库简单很多,不论是通过已经编译好的二进制分发包还是源码编译安装。数据创建比较,mysql仅仅只需要一个简单的create datebase命令,即可在瞬间完成建库的,而oracle创建一个数据库简直就是一个非常庞大的工程

性能比较:仅仅只有oracle数据库能够与其一较高下

可靠性:当前最火的facebook这样大型的网站都是使用mysql数据库,可以看出,mysql在稳定可靠性方面,而且排在全球10位的大型网站里面,大部分都是部分业务是运行在mysql数据库环境上。mysql数据库在发展过程中一直有自己的三个原则:简单,高效,可靠。

mysql的主要适合场景

web网站系统

是mysql最大的客户群,因为mysql数据库的安装配置非常简单,使用过程维护也不像大型商业数据库管理系统那么复杂,而且性能出色。重要的一个原因是mysql是开放源代码的,可以完全免费使用。

日志记录系统

mysql数据库的插入和查询性能都非常的高效,如果设计地较好,在使用myLSAM存储引擎的时候,两者可以做到互不锁定,达到很高的并发性能。所以对需要大量的插入和查询日志记录的系统来说。比如处理用户的登录日志,操作日志等是非常适合的应用场景

数据仓库系统

随着21世纪的数据仓库数据量飞速增长,我们需要的存储空间越来越大,数据量的不断增长,使数据的统计分析变得越来越低效,也越来越困难。还是有几个可以解决的思路:一是采用昂贵的高性能主机以提高计算性能,用高端存储设备提供i/o性能,但是成本非常高:二是通过将数据复制到多台使用大容量硬盘的廉价pc server上,以提高整体计算性能和i/o能力,效果尚可,存储空间有一定的限制,成本低廉:三是通过将数据水平拆分,使用多台廉价的pc server和本地磁盘来存放数据,每台机器上面都只有所有数据的一部分,解决了数据量的问题,所有pc server一起并行计算,也解决了计算能力问题,通过中间代理程序调配各台机器的运算任务,即可以解决计算性能问题又可以解决i/o性能问题,成本也很低廉。第二和第三的实现,mysql都有较大的优势,通过mysql的简单复制功能,可以很好的将数据从一台主机复制到另一台,在internet也可以复制。当然,其他的数据库同样也可以做到,不是只有mysql有这样的功能,但是mysql是米那份,其他数据库大多数都是按照主机数量或cpu数量来收费,基本上所有数据库系统都能实现,但是其高昂的成本并不是每一个公司都能承担。

日志文件:错误日志,查询日志,慢查询日志,事务日志,二进制日志

日志是mysql数据库的重要组成部分日志文件中记录着mysql数据库运行期间发生的变化,也就是说用来记录mysql数据库的客户端连接状况,sql语句的执行情况和错误信息等。当数据库意外损坏时可以通过查看日志文件找出错误的原因,并且还可以通过日志文件进行数据恢复。

错误日志:ErrorLog

在myslq数据库中,错误日志功能是默认开启的,错误日志默认存储在mysql数据库的数据目录中,错误日志文件通常的名称为hostname.err。其中,hostnmae表示服务器主机名。

错误日志信息可以自己进行配置,错误日志所记录的信息是可以通过log-error和log-warnings来定义的,其中log-warnings是定义是否将警告信息也定义至错误日志中,默认情况下错误日志大概记录服务器启动和关闭过程中的信息,服务器允许过程中的错误信息,事件调度器允许一个事件时产生的信息,在服务器上启动服务器进程时产生的信息。

mysql有很多系统变量可以设置,系统变量设置不同,会导致系统允许状态不同。

查看系统设置:

show [global | session] variables [like_or_where]

show variables: shows the values of mysql system variables

查看允许状态:

show [global | session] status [linke_or_where]

show status: provides server status information

如何修改系统配置

配置文件设置my.cnf

binlog_cache_size=1M

set global binlog_cache_size=1048576

一般而言,日志级别的定义没有会话变量都只是在全局级别下进行定义

查看错误日志的状态:show global variables like ‘%log_error%‘;

log_error定义为错误日志的文件路径

log_error_verbosity

更改错误日志位置可以使用log-error来设置形式

vim /etc/my.cnf

log-error=/usr/local/mysql/data/mysqld.err

tail /usr/local/mysql/data/mysqld.err

为了方便维护需要,有时候会希望将错误日志中的内容做北方并重新开始记录,这时候,可以利用ysql的flush logs命令来告诉mysql备份旧日志文件并生成新的日志文件,北方文件名以.old结尾

删除错误日志

mysql5.5.7之前:数据库管理员可以删除很长时间之前的错误日志,以包子mysql服务器上的硬盘空间。mysql数据库中,可以使用mysqladmin命令开启新的错误日志。mysqladmin命令语法:mysqladmin -u root -p    flush-logs也可以登录mysql数据库中使用flush logs语句来开启新的错误日志。

在mysql5.5.7之后:服务器将关闭此项功能,只能使用重命名原来的错误日志文件,手动冲洗日志创建一个新的

二进制日志:binary Log & Binary Log index

二进制日志,也就是我们常说的binlog,也是mysql server中最重要的日志之一,主要用于记录修改数据或者可能引起数据改变的mysql语句,并且记录了语句发生时间,执行时长,操作的数据等等。所以说通过二进制日志可以查询mysql数据库中进行了哪些变化,一般大小体积上限为1G。

当我们通过“log-bin=file_name”打开了记录的功能之后,mysql会将所有修改数据库数据的query以二进制形式记录到日志文件中,日志中并不仅限于query语句这么简单,还包括一条query所执行的时机,所消耗的资源,以及相关的事务信息,所以binlog是事务安全的

和错误日志一样,binlog记录功能同样需呀“log-bin=file_name”参数的显式指定才能开启,如果未指定file_name,则会在数据目录下记录为mysql-bin.******

查看二进制开启状态

show global variables like ‘%log_bin%‘;

variable_name                value

log_bin                      ON

log_bin_basename             /usr/local/mysql/data/mysql-bin

log_bin_index                /usr/local/mysql/data/mysql-bin.index

log_bin_trust_function_creators OFF

log_bin_use_v1_row_events    OFF

binlog还有其他一些附加选项参数:

“max_binlog_size”设置binlog的最大存储上限,一般设置为512或1G,一般不能超过1G当日志达到上限是,mysql会重新创建一个日志开始继续记录,不过偶尔也有超过设置的binlog产生,一般都是因为即将达到上限是,产生了一个较大的事务,为了保证事务安全,mysql不会将同一个事务分开记录到两个binlog中

“binlog-do-db_name”参数明确告诉mysql,需要对某个数据库记录binlog,如果有了“binlog-do-db=db_name”参数的显示指定,mysql会忽略对其他数据库执行的query,而仅仅记录针对数据库执行的query。

时间: 2024-10-12 20:43:08

mysql架构组成的相关文章

MySQL 架构组成--物理文件组成

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 一.MySQL Server 简介 什么是MySQL? 答:是目前IT行业最流行的开放源代码的数据库管理系统之一,它同时也是一个支持多线程高并发多用户的关系型数据库管理系统. 特点: 简单:安装简单 高效:读写性能高,仅次于oracle 可靠:运行稳定 MySQL 与其他数据库的简单比较: 1)       功能比较 2)       易

mysql架构演变

假设一个网站(discuz)从最开始访问量很小做到日pv千万,我们来推测一下它的mysql服务器架构演变过程. 第一阶段网站访问量日pv量级在1w以下.单台机器跑web和db,不需要做架构层调优(比如,不需要增加memcached缓存).此时,数据往往都是每日冷备份的,但有时候如果考虑数据安全性,会搭建一个mysql主从. 第二阶段网站访问量日pv达到几万.此时单台机器已经有点负载,需要我们把web和db分开,需要搭建memcached服务作为缓存.也就是说,在这个阶段,我们还可以使用单台机器跑

步步深入:MySQL架构总览->查询执行流程->SQL解析顺序

前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识. 一.MySQL架构总览: 架构最好看图,再配上必要的说明文字. 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解. 从上图中我们可以看到,整个架构分为两层,上层是MySQLD的被称为的‘SQL Layer’,下层是各种各样对上提供接口的存储引擎,被称为‘Storage Engin

MYSQL 架构

1.一般都做主从,主一个从两个. 2.如果服务器出现故障怎么做故障转移? 初级:如果主库出现问题,就看是否是主库硬件问题,导致短期时间内无法恢复.如果短期内无法恢复就切从库.(INNODB 断电数据读不会丢,他会写到磁盘,开机自动恢复) 切从库需要程序去判断,然后修改用户权限,因为一般对从库只有只读权限.复制用同步复制,异步总会有数据丢失. 高级:MMM,MHA 详细介绍复制:(参考高性能MYSQL) 1.1.复制解决的问题数据复制技术有以下一些特点:(1)    数据分布(2)    负载平衡

MySQL架构总览->查询执行流程->SQL解析顺序

前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一下其中的知识. 一.MySQL架构总览: 架构最好看图,再配上必要的说明文字. 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解. 从上图中我们可以看到,整个架构分为两层,上层是MySQLD的被称为的'SQL Layer',下层是各种各样对上提供接口的存储引擎,被称为'Storage Engin

MySQL架构

1.MySQL整体逻辑架构 我们先下图看看MySQL整体逻辑架构(MySQL's Logical Architecture) 图1 第一层,即最上一层,所包含的服务并不是MySQL所独有的技术.它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等. 第二层值得关注.这是MySQL的核心部分.通常叫做 SQL Layer.在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断, sql解析,行计划优化, query cache 的处理以及所有内

数据库学习之--Oracle 架构与MySQL架构对比

数据库学习之--Oracle 架构与MySQL架构对比 一.Oracle .MySQL应用对比 如果要说明三者的区别,首先就要从历史入手. Oracle:中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision. Ellision 32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十几家公司,老婆也离他而去.开始创业时只有1200美元,却使得Oracle公司连续12年销售额每年翻一番. Oracle成立于1977年,早期的理论基础,反而来自于一篇IBM的论文<A

&lt;转载&gt; MySQL 架构 http://www.cnblogs.com/winner-0715/p/6863802.html

1.MySQL整体逻辑架构 我们先下图看看MySQL整体逻辑架构(MySQL’s Logical Architecture) 图1 第一层,即最上一层,所包含的服务并不是MySQL所独有的技术.它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等. 第二层值得关注.这是MySQL的核心部分.通常叫做 SQL Layer.在 MySQL据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断, sql解析,行计划优化, query cache 的处理以及所有内

MySQL架构由小变大的演变过程

假设一个网站(discuz)从最开始访问量很小做到日pv千万,我们来推测一下它的mysql服务器架构演变过程. 第一阶段    网站访问量日pv量级在1w以下.单台机器跑web和db,不需要做架构层调优(比如,不需要增加memcached缓存).此时,数据往往都是每日冷备份的,但有时候如果考虑数据安全性,会搭建一个mysql主从. 第二阶段    网站访问量日pv达到几万.此时单台机器已经有点负载,需要我们把web和db分开,需要搭建memcached服务作为缓存.也就是说,在这个阶段,我们还可

理解MySQL——架构与概念

理解MySQL——架构与概念 写在前面:最早接触的MySQL是在三年前,那时候MySQL还是4.x版本,很 多功能都不支持,比如,存储过程,视图,触发器,更别说分布式事务等复杂特性了.但从5.0(2005年10月)开始,MySQL渐渐步入企业级数据库的 行列了:复制.集群.分区.分布式事务,这些企业级的特性,使得现在的MySQL,完全可以应用于企业级应用环境(很多互联网公司都用其作为数据库服务 器,尽管节约成本是一个因素,但是没有强大功能作后盾,则是不可想象的).虽然,MySQL还有很多不足,比