Brother Samwer

德国互联网行业的Samwer兄弟可谓是风云人物。下面是台湾的inside做的一篇详细报道。

http://www.inside.com.tw/2011/06/30/germany-samwer

php升级到5.5的问题

周末同事升级了php,升到5.5, 之前是5.3.

周一上班发现很多问题,主要集中如下

1.  datetime 出现问题。这个问题其实应该是5.4的改动 。

日期与时间扩展 中,不再支持时区使用 TZ(TimeZone)环境变量设置。必须使用 date.timezone php.ini 配置选项或 date_default_timezone_set() 函数来指定时区。PHP 将不再尝试猜测时区,而是回退到“UTC”并发出一条 E_WARNING 错误。

2. 第二个问题是 mysql 的连接问题。出现的错误是

SQLSTATE[HY000] [2002] No such file or directory

 

 

 

从svn转向git

在工作中用了git后在家就实在受不了svn的笨拙branch了。所以决定转移到git.
install过程主要参考了这两篇文档

http://git-scm.com/book/zh/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-Gitosis

http://wiki.ubuntu.org.cn/Git%E6%9C%8D%E5%8A%A1%E5%99%A8Gitosis%E5%AE%89%E8%A3%85%E8%AE%BE%E7%BD%AE

安装的过程比较顺利,但是装完后出现点问题。

1.我是用ssh登录的。所以把自己的公钥传给git服务器段后可以不用输入密码。只要用用户git登录,实用我的公钥即可。

2 装完后,并不像上面的文章说得那样会自动为你的项目建立repository,需要自己跑到 /home/git目录下,创建自己个项目.git目录

3 目录创建完毕后,不要用git init 来初始化仓库,而是实用git –bar init 来。这是来自 http://www.cnblogs.com/abeen/archive/2010/06/17/1759496.html 的解释。否则第一次pushd的时候会有问题。

 

Maatkit 分析工具

From: http://www.livingelsewhere.net/life/note/view/1
Maatkit 分析工具

Maatkit 是 Baron Schwartz 的另一项创造,是一系列命令行工具的集合。所有工具都是用 Perl 编写的,用来补充 MySQL 未能提供的的那些重要功能。可以在 http://www.maatkit.org/ 上找到它们,包括了分析工具和其它一些小功能。

这些分析工具的其中一个是 mk-query-profiler,当它检测服务器状态变量时能够执行查询,并会打印出一个具体且易读的关于查询前后的系统状态变量差异情况的报告。这份报告能使查询有更深的理解,而不仅限于在它执行的时候。

可以将查询通过管道传入 mk-query-profiler 的标准输入口,指定一个或多个查询文件,或者仅仅是要求它检测服务器而不运行任何查询(当运行一个外部应用时,这种方式会用得上)。也能让它运行 shell 命令而不是查询。

mk-query-profiler 的报告分成好几个段落。默认的情况下,这个报告打印出的是一批摘要信息,但是,也可以得到一份包含了每一个查询或者所选择的查询的报告,然后加载到 mk-profile-compact 的辅助工具里方便地进行比较。

以下是这份报告的主要段落:

  • 『Overall stats』段罗列了一些基本信息,例如执行时间、命令的数据和网络流量。
  • 『Table and index accesses』段显示了这个批处理的有多少个不同类型的执行计划。如果看到有很多表扫描,在可能意味着没有合适的索引可用于查询。
  • 『Row operations』段显示了底层处理的数据和/或者个批处理产生的 InnoDB 操作的数目。糟糕的查询计划会引发更多的底层操作。
  • 『I/O operations』段显示了这个批处理引发了多少内存和磁盘数据流。有一个可比较的段是显示跟 InnoDB 相关的数据操作。

总而言之,这份报告可以细致地描述出服务器正在处理多少种类型的任务,这比仅仅是衡量查询所需要的时间要有价值得多。例如。可以帮助筛选这样两个查 询:它们在第负载时,在一个小数据集上都用几乎相等的时间完成了查询;但是,当使用到的数据量变到很大的时候,或者说在高负载的时候,它们的表现就有了巨 大的差异。它也可以被用来验证优化是否起到了作用,在这种应用环境下,它就像是一个微型的基准测试工具。

在这个工具里还有另外几种分析工具:
mk-visual-explain

重构从 EXPLAIN 里取得的查询执行计划,然后以更易读懂的树状图来显示。当查询计划很复杂的时候,这个尤为有用。查看 EXPLAIN 的输入,所看到的是数百行语句,这样的长度几乎没人能理解它们。mk-visual-explain 作为一个教学工具也很有用,或者试着去学习怎么看懂 EXPLAIN 输出的时候,它也能帮得上忙。

mk-duplicate-key-checker

它能识别出重复的或荣誉的索引或外键,在会影响到性能。

mk-deadlock-logger

检测 InnoDB 里的死锁并将它们记录在一个文件里或表里。

mk-heartbeat

精确测量复制的延迟时间,无须检查 SHOW SLAVE STATUS(它也不总是正确)。默认情况下,它保留了过去 1 分钟、5 分钟和 15 分钟里的移动平均值。这时针对第一版里那个心跳(Heartbeat)脚本提到过的更完整更具可配置性的实现。
Maatkit 辅助脚本

mk-archiver

运行清除和归档任务,帮助清理表里不需要的数据。这个工具是被设计用来移动数据的,而无需用 OLTP 查询。但是,有可以用来建立数据仓库,或者查找和移除陈旧的数据。它能把数据写到一个文件里,并且/或者写到任何 MySQL 示例上的另一个表里。它还有一个插件机制,使定制任务更加容易实现,举例来说,可以使用一个插件,让它在系统往日志表里插入数据时,自动在数据仓库里生成 一个摘要表。

mk-find

跟 Unix 的 find 命令类似,但是,它是用于 MySQL 的数据库和表。

mk-parallel-dump

执行多线程逻辑备份。为了能够在多 CPU 或多磁盘的系统里更快速地备份,它能把每个表分割成所需要大小的几个分块。实际上,可以用它来把任何工具都封装成多线程的形式,因此,它在多线程 CHECK TABLE 或 OPTIMIZE TABLE 操作方面也很有用处(以此为例)。许多类型的任务都能在多 CPU 或多磁盘获取并行处理的好处。

mk-parallel-restore

它是 mk-parallel-dump 的逆程序。它并行地把文件夹在到 MySQL里。这个工具能够通过 LOAD DATA INFILE 直接加载分界符文件,或者用 mysql 客户端直接执行 SQL 文件。它对许多加载操作做了一个灵活的封装,例如可以通过命名管道加载压缩文件。

mk-show-grants

能对 GRANT 语句进行规整化、排除、分离和排序,使它更易于在命令行里操作。有一种有趣的应用是把数据库权限存储在一个版本控制系统里,这样就不会有任何伪造的更改。

mk-slave-delay

使从服务器的更新滞后它的主机,以便于灾难还原。如果有一条破坏性 SQL 语句在主机上执行后,能在从服务器执行这条语句之前将它停止,重放二进制日志直到这条语句,然后将其提升为主机。这样的做法要快于在主机上重甲爱最近的一 个备份,然后重新执行自备份以来的所有日志。

mk-slave-prefetch

实现『为从服务器线程准备好缓存』里讨论过的技术。在某些工作负载下,它能使复制在从服务器上运行得更快。

mk-slave-restart

使从服务器在遇到一个错误后重新启动。

mk-table-checksum

在一台或多台服务器上并行地生成表内容的检验和,或者在各个复制里进行校验和查询,以检验从服务器上的数据是否一致。

mk-table-sync

更高效地找出表之间的差异,并生成用于解析它们的最小的 SQL 命令集。它也能在复制里面操作。