Moosefs管理中的小技巧

之前写过一个初步介绍Moosefs基本概念的文章,仅是简单测试之后,对mfs的一些理解和认识。最近在实际环境中部署了一套MooseFS系统,用于备份和其他之用,在这个过程中又遇到了些问题,于是又重新找来文档复习理解了一遍,又加深了对MFS的了解,下面是这次学习的点点收获和大家分享下。
      » 继续阅读 Moosefs管理中的小技巧

Shell 快捷键助你一臂之力

工作以来都在接触Linux和Unix系统,所以对这两类系统用的多,也比较熟悉。渐渐的,Shell中的快捷键也运用自如,一次朋友看到我快捷的操作shell命令,很好奇的建议,什么时候教教他这些快捷方式。特撰写此文,来提高大家的工作效率和保护你们的键盘。

下述所有命令在Linux/unix的shell下有效,这里以bash为主。如有出入,以你自己的操作系统为准。

开始描述之前,先问几个常见的问题。

例如你在终端中输入了下面的这个find命令:

shell-1
      » 继续阅读 Shell 快捷键助你一臂之力

两个时间函数TimeStampDiff()和TimeDiffUnits()

函数TimeStampDiff()是MySQL本身提供的可以计算两个时间间隔的函数,语法为:TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2),其中unit单位有如下几种,分别是:FRAC_SECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or YEAR。

例如

mysql> select timestampdiff(week,’2009-01-24′,’2009-06-20′);
+———————————————————–+
| timestampdiff(week,’2009-01-24′,’2009-06-20′)       |
+———————————————————–+
|                                                                       21|
+———————————————————–+
1 row in set (0.00 sec)mysql> select timestampdiff(day,’2009-01-24′,’2009-06-20′);
+———————————————————-+
| timestampdiff(day,’2009-01-24′,’2009-06-20′)        |
+———————————————————-+
|                                                                    147|
+———————————————————-+
1 row in set (0.00 sec)mysql> select timestampdiff(month,’2009-01-24′,’2009-06-20′);
+————————————————————-+
| timestampdiff(month,’2009-01-24′,’2009-06-20′)       |
+————————————————————-+
|                                                                           4|
+————————————————————-+
1 row in set (0.00 sec)mysql> select timestampdiff(year,’2009-01-24′,’2009-06-20′);
+———————————————————–+
| timestampdiff(year,’2009-01-24′,’2009-06-20′)        |
+———————————————————–+
|                                                                         0|
+———————————————————–+
1 row in set (0.00 sec)


      » 继续阅读 两个时间函数TimeStampDiff()和TimeDiffUnits()

一个关于MyISAM引擎的配置文件小样

关于配置文件my.cnf,常常会有这样那样的推荐参数,其实,很多时候要根据自己应用的实际需要来综考量,进行配置。如果很盲目的照用,可能就会像我们吃饭一样,不是太咸就太辣,不那么对您的胃口。那我们又会问了,那干嘛还会有什么这个推荐那个推荐的,其实类似我们常吃的家常菜。事实上,有些参数还是可以满足大数的应用需求的,经过长期经验总结,大牛们就可以说,大家放心我们提供的配置文件,基本上在一定时期内都可以满足需要,于是,你就会见Peter他们经常会有些经验谈,但是一定要记住,理解这些参数的含义是关键,还有就是明白你应用的具体需求。

下面就是一个大众口味,推荐菜

tomatowithegg


      » 继续阅读 一个关于MyISAM引擎的配置文件小样

如何为你的MySQL把脉?

量体裁衣是为了做出更加合身的衣服,把脉查问病情是为了更好的对症下药合理医治。对于MySQL数据库维护排错也是这个道理,我们需要清楚地了解MySQL的内部处于何种什么运行状态,判断出现的是哪一类问题,然后寻根纠源将其问题解决。在MySQL中我们可以通过两种方式去查看它的各种状态各项参数指标:一种方法是查看默认的INFORMATION_SCHEMA数据库、另一种就是通过SHOW的各种参数的命令组合去查看。

infor_schema


      » 继续阅读 如何为你的MySQL把脉?

[小脚本大用途]优化MyISAM碎表 - optimize table

话接上回说,依赖mysql的存储过程。我们可以完成很多任务,而且非常自动化。

对于MyISAM或Memory表,如果你已经删除了表的一大部分,或者如果你已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用OPTIMIZE TABLE来优化表物理文件。您可以使用OPTIMIZE TABLE来重新利用未使用的空间,并整理数据文件的碎片。

但你的机器内也许有10个库,而一个库中平均有一百个表,这种情况下你用一条一条的命令去优化MyISAM表是不现实的。有人指出,编写一个shell脚本不就可以吗?普通的shell脚本有一个缺陷,即你无法确定一个MyIsam表是否需要你去优化。优化所有表是一个漫长而低效的做法,关键在于你要找出碎片程度非常高的数据表。


      » 继续阅读 [小脚本大用途]优化MyISAM碎表 - optimize table

[小脚本大用途]找出所有数据中最差的Index

Index是日常用来增加mySQL性能最常用方法之一。

在这里我们并不讨论该如何添加索引,也不讨论添加何种索引。理由很简单,这种决定都是仁者见仁、智者见智。

但有一点相信大家都不会否认索引列的数据非重复性决定了

 

/* 
这个脚本用于在整个数据库中 
抓取性能最差的索引


      » 继续阅读 [小脚本大用途]找出所有数据中最差的Index

[MySQL SysBench系列]Read-only mode

在接下来的Sysbenchx系列中,将主要介绍如何使用Sysbench对MySQL数据库作benchmarking性能基准测试,这样有助于我们在实际中更好的把握数据库性能优劣,以便及时对我们的应用做出合理快速的调整。

先来介绍一下今天的主角SysBench——a system performance benchmark。

SysBench是一个模块化、跨平台、多线程的系统基准测试工具,它可以给我们一个清晰的,当系统上运行一个繁重数据库应用时,系统各方面的性能状态。

目前可以给我们提供如下系统参数测试:

  • 文件系统I/O 性能
  • scheduler performance
  • 内存分配和传送速度
  • POSIX threads implementation performance
  • database server performance (OLTP benchmark)
  • SysBench设计之初,主要是针对MySQL的基准测试,现在已经扩展到各种主流数据库(Oracle、PostgreSQL)的测试。它的设计思路很简单,运行指定数量的线程,然后在所有线程上同时并发请求,可以分别控制请求的数量和基准测试的整体时间。SySBench是基于各种模块的测试模式: cpu、threads、mutex、memory、fileio 和oltp。

    接下来,开始我们的实际测试,实验环境为:CenOS5.2+sysbench-0.4.12.tar.gz,vmware下模拟一台普通PC,Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz、RAM 1GB。

    1.安装Sysbench很简单,先需要下载一个很小的源码包sysbench-0.4.12.tar.gz,然后安装三部曲:./configure –with-mysql-includes=$MYSQL_HOME/include –with-mysql-libs=$MYSQL_HOME/lib ; make ; make install。(Note: 如果编译的时候选择–without-mysql选项,sysbench将不支持mysql基准测试,只是进行系统性能测试 |  Tip: 安装问题FAQ

    2.OLTP(Online Transaction Processing)模块测试之Read-only选项。

    第一步,准备测试数据。

    [root@node1 ~]# sysbench –test=oltp –oltp-table-size=1000000 –mysql-table-engine=myisam –mysql-db=test –mysql-socket=/opt/mysql1/data/mysql.sock –mysql-user=root prepare
    sysbench 0.4.12:  multi-threaded system evaluation benchmarkNo DB drivers specified, using mysql
    Creating table ’sbtest’…
    Creating 1000000 records in table ’sbtest’…

    同时,在另一个窗口使用vmstat去关注cpu idle、context switch,一些必要参数的变化,随时掌握系统的运行状况。
          » 继续阅读 [MySQL SysBench系列]Read-only mode

    mysqlpdump和Orion

    我在一次偶然的机会获得了一份Oracle的产品列表。发现其中一个工具非常适合数据库方面的性能调试和监控。

    Orion。作为一个独立的工具,这个软件可以模拟oltp,olap等操作对你硬盘造成的影响。

    下载地址: http://www.oracle.com/technology/software/tech/orion/index.html


    另外一个工具,可能用的人比较多。


          » 继续阅读 mysqlpdump和Orion

    MySQL服务启动项中skip技巧

    你是如何来启动你的MySQL数据库的呢?下面列出了一些,无非都是这几种吧。

    $MYSQL_HOME/bin/mysqld_safe –user=mysql &

    $MYSQL_HOME/bin/mysqld  –user=mysql & (任何版本)

    service mysql start (Linux )

    svcadm enable mysql (Solaris)

    你有没有尝试着去体验一下MySQL服务启动项中的skip选项呢?现在让我们看看一些常用的skip启动项。
          » 继续阅读 MySQL服务启动项中skip技巧