存档

‘数据库’ 分类的存档

MySQL DBA的职责

2016年5月9日 783 views 没有评论

MySQL DBA的职责
我列举一些DBA的工作职责,
维护线上数据库,保障安全、可靠、高性能。
部署上线新的业务的数据库
性能调优以及扩容计划
培训研发、测试团队
故障处理以及恢复数据
协助日常业务升级,升级数据库
升级MySQL版本
研究新技术、产品,评估新技术、产品
审核研发人员的数据库表设计,必要的时候参与数据库表设计
建设数据库的运维平台,自动化或者半自动化工作

分类: 数据库 标签:

XFS文件系统

2016年5月8日 871 views 没有评论

我们推荐在Linux下使用XFS文件系统,它是一种高性能的日志文件系统,特别擅长处理大文件,对比ext3、ext4,MySQL在XFS上一般有更好的性能,更高的吞吐。Red Hat Enterprise Linux 7默认使用XFS文件系统。Red Hat Enterprise Linux 5、6的内核完整支持XFS,但未包含创建和使用XFS的命令行工具,你需要自行安装。

如下是一个安装示例

下载xfsprogs包,并解压

./configure

make

make instal

which mkfs.xfs 确认已经安装好了创建xfs文件系统的命令。

安装了xfs后,我们就可以使用mkfs.xfs创建xfs文件系统,如下面的命令在/dev/sdb1上创建xfs文件系统

mkfs.xfs -f -d agcount=6 -l size=64m -i size=512 -L /home1 /dev/sdb1

部分参数解释:

-f 强制创建文件系统,即使已经存在旧的文件系统

-d选项。主要用于数据部份的参数指定。例如在一个r[……]

Read more

分类: 操作系统, 数据库 标签:

pt-query-digest的使用

2016年5月7日 861 views 没有评论

pt-query-digest是最应该掌握的一个工具。它可以分析MySQL的各种日志,如慢查询日志、generel日志,也可以分析show processlist的输出。配合tcpdump我们还可以对线上数据库流量进行采样,实时监控数据库流量,及时发现性能问题。

基本用法如下,

pt-query-digest /path/to/slow.log > /path/to/keep/report_file

如果你有大量的数据库节点,可以考虑把pt-query-digest的分析报告写入数据库,方便检索和绘图。

输出的报表类似如下,以下截取了报告的部分内容,

# Overall: 565 total, 22 unique, 0.00 QPS, 0.00x concurrency _____________

# Time range: 2012-09-22 18:33:43 to 2012-10-16 10:45:31

# Attribute          total     min     max     avg     95%  stdde[……]

Read more

分类: 数据库 标签: ,

阿姆达尔定律(Amdahl’s Law)

2016年5月6日 1,287 views 没有评论

阿姆达尔定律是一个计算机科学界的经验法则,因IBM公司计算机架构师吉恩·阿姆达尔而得名。吉恩·阿姆达尔在1967年发表的论文中提出了这个重要定律。

阿姆达尔定律主要用于发现仅仅系统的部分得到改进,整体系统可以得到的最大期望改进。它经常用于并行计算领域,用来预测适用多个处理器时理论上的最大加速比。在我们的性能调优领域,我们利用此定律有助于我们解决或者缓解性能瓶颈问题

阿姆达尔定律的模型阐释了我们现实生产中串行资源争用时候的现象。如下图模型,一个系统中,不可避免有一些资源必须串行访问,这限制了我们的加速比,即使我们增加了并发数(横轴),但取得效果并不理想,难以获得线性扩展能力(图中直线)。

 

1

以下介绍中、系统、算法、程序可以认为都是优化的对象,我不加以区分,它们都有串行的部分和可以并行的部分。

在并行计算中,使用多个处理器的程序的加速比受限制于程序串行部分的执行时间。例如,如果一个程序使用一个CPU核执行需要20小时,其中部分代码只能串行,需要执行1个小时,其他19小时的代码执行可以并行,那么,不考虑有多少CPU可用来并行执行程序,最小执[……]

Read more

恢复独立表空间的表

2016年5月3日 825 views 没有评论

如果你有.ibd文件的一个干净的备份,你可以按如下操作从被起源的地方恢复它到MySQL安装中:

  1. 发出这个ALTER TABLE语句:

2. ALTER TABLE tbl_name DISCARD TABLESPACE;

警告:这个语句删除当前.ibd文件。

  1. 把备份的.ibd文件放回到恰当的数据库目录。
  2. 发出这个ALTER TABLE语句:

5. ALTER TABLE tbl_name IMPORT TABLESPACE;

在上下文中,一个.ibd文件干净的备份意为:

ibd文件里没有尚未提交的事务做的修改。

.ibd文件里无未合并的插入混充条目。

净化已经从.ibd文件移除所有已标注删除的索引记录。

mysqld已经把.ibd文件的所有已修改页面从缓冲池刷新到文件。

你可以用下列方法生成一个.ibd文件的干净备份:

  1. 停止所有来自mysqld服务器的活动,并提交所有事务。
  2. 等待直至SHOW INNODB STATUS显示在数据库被已经没有激活的事务,并且InnoDB主线程的状态是Waiting fo[……]

Read more

分类: 数据库 标签:

优化有BLOB,TEXT类型字段的查询

2016年4月29日 804 views 没有评论

由于MySQL的内存临时表不支持blob,text值,如果包含blob(text)列的查询需要用到临时表,就会使用基于磁盘的临时表,性能将急剧降低。所以编写查询语句,如果没有必要包含blob、text列,就不要也写入查询条件。

可以规避的办法有2种:

q  1.使用SUBSTRING( ) 函数。

q  2. 把临时表存放在基于内存的文件系统. 如linux下的tmpfs 。设置MySQL变量tmpdir ,可以设置多个临时表位置(用分号分割),MySQL将使用轮询方式。

优化办法有。

q  如果必须使用,可以考虑拆分表,把blob,text字段分离到单独的表。

q  如果有许多大字段,可以考虑合并这些字段到一个字段,存储一个大的200kb比存储20个10kb更高效。

q  考虑使用COMPRESS( ),或者在应用层进行压缩,再存储到blob字段中。

注意:如果BLOB列很大,可能需要增大innodb_log_file_size (MySQL错误日志内可能有提示事务日志小了)。

VARCHAR, BLOB和TEXT列,最大行长度稍[……]

Read more

分类: 数据库 标签:

MySQL索引介绍

2016年4月20日 963 views 没有评论

目前MySQL主要支持的几种索引:B树索引(B-tree),哈希索引( hash) ,空间索引Spacial(R-tree),全文索引(full-text)

B树索引介绍

实际MySQL实现的B+树,它的索引如下图(摘录自high performance MySQL )

1

以上是一个简单的图,包括了一个节点块,块内包含一定数量的键值(如key1…keyn) 以及它的叶块(leaf pages),页块内的所有值(Val…)按大小顺序排列,各页块用指针进行连接。

实际的系统,根(root)节点到叶块之间可能有多层的节点块(node page),树的深度取决于表的大小.假设一个块内能存放256个元素,那么3层的树可以存储>1千万的元素.由于有这样的一个层次结构,往往经过2、3次的索引查找,就可以定位到记录,可以大大减少磁盘的读取次数。各页块之间有指针连接,那么还可以方便的进行顺序范围查找。

参考:http://zh.wikipedia.org/wiki/B%2B%E6%A0%91

 

估计查询性能

对小的表,通常能在1次[……]

Read more

分类: 数据库 标签:

如何成为一名合格的MySQL DBA

2015年4月30日 870 views 没有评论

我曾经做过研发、也做过系统管理员、也做过Oracle DBA,至今从事MySQL也有7年时间,从一名Oracle DBA转型为一名MySQL DBA,从传统领域到互联网公司,我想分享给读者一些自己心得,成为一名MySQL DBA并不难,MySQL DBA并不神秘,也容易入门,但成为一名高水平的DBA需要时间,希望我的经历能给大家一些启动,希望热爱数据库技术的同学少走弯路。

2008年,在经历了多年的传统行业之后,我因为机缘巧合进入了移动互联网行业。角色也从专职 Oracle DBA 过渡到了Mysql DBA。MySQL当时不太懂,但以前做Oracle DBA的时候也做过一些MySQL的测试,慢慢就熟悉了。互联网公司的MySQL DBA对比传统行业的DBA工作节奏会快些,所需面对和处理的事情也不一样了。传统的行业,许多Oracle DBA会更偏向网络、存储、小机、OS,Oracle自身产品够强大,很解决很多问题 ,但在互联网行业,Mysql DBA会需要更前进一些, 参与系统架构的评审,和研发团队、监控团队、甚至是运营团队、产品团队互动。

如何做一名合格的MySQL DBA[……]

Read more

许多人没有理解透彻的一些基础概念

2015年2月8日 1,963 views 没有评论

基础概念的交流和理解一致,才有助于意识的沟通一致。才有助于意识层面的交流。

资源(resource)物理服务器的功能组件,一些软件资源也可以被衡量,比如线程池、进程数等。系统的运行,需要各种资源,对于资源列表的确定,我们可以凭借对系统的了解确定,也可以通过绘制系统的功能块图的方式确定要衡量的资源。

常见的物理资源如下,

CPU(cpu sockets)、CPU核(cores)、硬件线程(虚拟线程)hardware threads( virtual threads)

内存

网络接口

存储设备

存储或者网络的控制器

内部高速互联

 

负载(load):有多少任务正在施加给系统,也就是系统的输入,要被处理的请求。对于数据库,那么负荷就包括了客户端段发送过来的命令和查询。

负载如果超过了设计能力,往往导致性能问题。应用程序可能因为软件应用的配置或者系统架构导致性能降低,比如,如果一个应用程序是单线程的,无疑它会受制于单线程架构,因为只能利用一个核,后续的请求都必须排队,不能利用其他核,但也可能仅仅是因为负载太多了。负[……]

Read more

MongoDB 3.0到来

2015年2月4日 2,711 views 没有评论

MongoDB 3.0:7到10 倍的性能提升、减少80%的存储,还有宣称的大大提高的维护性。

对比之下,以前的存储引擎就是个渣,当然,我早知道,它的存储引擎一直就是个渣,所以关注,但一直拒绝在生产上用。

其实MongoDB的问题一直存在,只是市场营销部门太过抢眼,商业公司在这方面很强大,因为你必须给外面一种光鲜的外表,你才能有更好的估值,你才能上市,各种场合下,它都是高大上,任何一个小小的利好,都会被放大,你可以看到各种统计,它貌似比任何产品的风头都更劲,所以我对于一些引用的数据库产品的占用率保持怀疑。

而对于用户出现的问题,官方却各种回避,不愿意承认其固有的存储引擎问题。我以前断言,这家公司只有被收购了,换一个引擎,他才可能发展起来,没想到他能够收购另一家公司,换掉自己的存储引擎。

一家公司的市场部门太过强势,不一定是好事,因为社区会不买账,用户对官方的宣告越来越怀疑,这个世界永远不缺“小白用户” ,许多公司的各种CIO,也许仅仅是相信他们,就引入了这个产品,我们也经常看到各种分享mongoDB的演讲,许多研发人员投入了很多精力,也有许多线上的案例,但这中间[……]

Read more

分类: 数据库 标签: