Archive for April, 2011

[AMP] mysql down

2011.4 14

无意中发现我的网站有时候访问是全部空白,httpd是启动起来了。但是在连接mysql的时候,却提示找不到/var/mysql/mysql.sock。

这个文件确实不在了,而通过netstat -ntlp 发现mysql还在监听。只有到mysqld的错误日志里看看是什么问题了。

110413 23:28:46 mysqld_safe mysqld from pid file /usr/local/mysql/data/localhost.localdomain.pid ended
110413 23:28:47 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
110413 23:28:47 InnoDB: The InnoDB memory heap is disabled
110413 23:28:47 InnoDB: Mutexes and rw_locks use InnoDB’s own implementation
110413 23:28:47 InnoDB: Compressed tables use zlib 1.2.1.2
110413 23:28:47 InnoDB: Initializing buffer pool, size = 128.0M
110413 23:28:47 InnoDB: Completed initialization of buffer pool
110413 23:28:47 InnoDB: highest supported file format is Barracuda.
110413 23:28:47  InnoDB: Waiting for the background threads to start
110413 23:28:48 InnoDB: 1.1.6 started; log sequence number 1595675
110413 23:28:48 [Note] Event Scheduler: Loaded 0 events
110413 23:28:48 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: ‘5.5.11’  socket: ‘/var/mysql/mysql.sock’  port: 3306  Source distribution
110414 01:01:32 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
110414  1:01:32 InnoDB: The InnoDB memory heap is disabled
110414  1:01:32 InnoDB: Mutexes and rw_locks use InnoDB’s own implementation
110414  1:01:32 InnoDB: Compressed tables use zlib 1.2.1.2
110414  1:01:32 InnoDB: Initializing buffer pool, size = 128.0M
110414  1:01:32 InnoDB: Completed initialization of buffer pool
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.

刚开始一切正常,到了1点1份的时候,mysql怎么又启动了?接着到了InnoDB的时候错误提示,网上说出现这个错误是因为磁盘空间不足?我查看了一下,还有900G呢?怎么会不足呢?

接着就开始怀疑配置文件的问题。自己编译的mysql的配置文件比默认的多很多选项,其中也有InnoDB的配置。

/etc/my.cnf 是从编译mysql时,从其源代码中的support-files目录下拷贝的。这个目录下有my-huge.cnf  my-innodb-heavy-4G.cnf  my-large.cnf  my-medium.cnf  my-small.cnf 几个配置的例子。我记得当时是拷贝的my-medium.cnf ,是不是对应着中型的系统?果然,my-medium.cnf 一开始就有介绍:

# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M – 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)

服务器有4G内存,我就拷贝了my-huge.cnf到 /etc/my.cnf 测试一段时间。

经过一下午的测试,mysql没有再down掉。下面的任务就是解决php支持gd库的问题了。要不然我的缩略图插件就不能用了。

2011-04-15补充:

今天下午突然发现mysql又down掉了,心理真不是个滋味。一直都找不出原因来。一直到现在还是在网上慢慢寻找。

1:清除二进制的日志。 参考这篇文章:http://www.rockia.net/2010/09/blog-stopped-for-one-whole-day-due-to-mysql-bin-log

这个些日志文件有两个作用:数据恢复和在主从服务器上提高复制的可靠性。

备份数据,我一般都是导出保存。所以一般都用不到。如何清除?

1:登录到mysql,执行 reset master; 这样只剩下连个文件了mysql-bin.000001 mysql-bin.index

2:修改配置文件。注释掉log-bin=mysql-bin

[AMP] 网站大转移

2011.4 13

网站转移一是由于特殊特殊的原因,另外就是无觅插件和一个代码高亮显示的插件需要php 5的支持。

经过近一天的努力,网站算是基本完成了。但是还有很多遗留问题没有结局。例如awstats。

就在我写这篇文章的时候,数据库居然崩溃了,直接无语。明天还要继续排查原因。

[AMP] apache 403 错误

2011.4 13

经过一天艰苦卓绝的努力,我自己编译了apache,php和mysql。中间的磨难我准备用另一篇来讲述一下。

我在apache上配置了两个虚拟目录 www和blog 。一开始blog的首页显示正常,但是别的就提示404。这是由于apache没有加载rewrite模块。自己好呆是只编译模块,blog是显示正常了。但是www却显示403.

我马上就排查了一下我的配置文件

1:

最有可能是是由于这order这个地方。这里是允许所有的都能访问。

2:AllowOverride all

这个选项是管理.htaccess是否起作用的。有两个选项 all:.htaccess起作用。none:不起作用

自己研究了一会,发现只是拒绝php的文件。原来以前在学习apahce的时候在跟目录下写了个.htaccess。

把这个文件删除或者修改上面的AllowOverride选项即可。

[建站日志] 服务器暂停了几个小时

2011.4 13

今天下午由于某种特殊原因,网站关了几个小时。

在这短短的几个小时里,我以为我的数据就这么丢了。虽然昨天的备份还在,但是在我今早修改的部分可就丢了。

这才让我深深意识到数据的重要性。继续修改我的备份脚本,以免类似的事情再发生。

在服务器停机的几个小时里,我试图修改dns来换个服务器。大约1个多小时后,dns记录才被修改过来。看来要研究一下分布式系统或者是集群了。大型网站是怎么组织多个服务器的。

晚上准备安装无觅的一个插件,但是提示个错误没有启用。网上查了一下,应该php版本的问题。你是不知道在linux安装一个软件要牵扯到多少东西。不是提示缺少某个库,就是提示版本不对。

服务器的版本已经定下来了。前几天试图升级服务器,但是失败了。

看来只有自己编译安装了。步骤倒是很简单,就是很多参数要自己调整。编译一个适合自己的吧。

shell脚本还要学习下,差不多都忘记了。

[建站日志] wordpress 添加关键词和描述

2011.4 11

根据水煮鱼的这篇文章

(本来是想贴代码来,一用可视化编辑就变了啊)

上面代码添加在 header.php 的相应位置。

WordPress 在撰写日志的时候,可以给日志添加摘要(excerpt)和标签(tag)。我以前没有注意这个excerpt,就应为自己的外语不行啊。tag自己有时候加得也不及时。

只不过上面的代码中在截取文章的220字符的时候由于有汉字会导致出现乱码。把函数substr换成mb_substr就行了。

[Internet] vlan

2011.4 11

对于交换机的vlan,一直处于朦胧的状态。

先从网上查了几个概念。

1:pvid 。一个端口只能有一个pivd。当一个物理端口拥有一个pvid时,必定会有一个和pvid的tag相同的vid,而且在这个vid上,这个物理端口必定是untagged port。

pivd的作用只是交换机从外部接收到可以接受untagged数据帧的时候给数据帧添加tag标记,在交换机内部转发数据的时候pvid不起任何作用。

一些概念都是很抽象,我一般都是通过简单的实验来理解的。
找到了一个烽火的S2024MFB。还有一个能上外网的家庭宽带路由器。两根网线一个连接S2024MFB和我的笔记本。另一根连接S2024MFB和宽带路由器。

先清空交换机的内部设置。

然后再设置交换机的带内ip,以免和宽带路由器的ip冲突。

如果一切正常的话,现在笔记本是可以通过dhcp获取到ip地址上网的。

看一个交换机的vlan设置。

宽带路由器和路由器的1#相连。我的笔记本和3#相连。

现在我们创建一个vlan,然后把3#加入这个vlan。

现在 1 3口都属于vlan 1 ,而且pivd都为1。3在vlan 200上为untagged。

这里补充一点。 tagged和untagged并不是一个物理端口的物理状态。而是它在某个vlan的状态。所以一个物理端口可以在某个vlan上是untagged port ,在另外的vlan上为tagged port。

来看看从笔记本到宽带交换机的数据是怎么走的。从笔记本发出的数据帧到达交换机的access口时,会打上pvid的tag标记。这个是打上了1的tag。根据交换机的转发原理,交换机会把这个数据帧转发给vid=1的所有端口(进口除外),这个过程叫做 vlan flood。

修改一个3#口的pvid试一下:

这时网络就不通了。

[我的日志] GFW

2011.4 11

再也不敢翻墙了!

[我的日志] About Me

2011.4 10

今天刚在about.me上注册了。大家可以访问:http://about.me/sunliguo

最近在网上看到了很多国外域名。例如:luo.bo ta.ma 等。

[Linux] Linux 20岁了

2011.4 8

linux已经走过了20的风雨历程!记得刚知道linux是在大一上学期的时候吧。那时候选修了Internent原理与应用,应该是对网络很感兴趣吧。我同学就选了linux,而任课老师呢,却是同一个l老师。两门课同时上上机课的时候,我知道了linux这个东西。从此便喜欢上了它。

到了大一下学期,我便也选修了linux。那时候便在自己的电脑上倒腾linux,经常是弄得电脑不能启动。多亏了互联网上做视频教程的好心人,对linux的认识可以说是突飞猛进。

毕业后第一份工作,便用到了linux。公司的一套监控系统就是用的linux来采集数据的。linux来源于网络,更对网络的发展贡献了它的力量。

[Linux] firefox v4 放出来了

2011.4 7

今晚突然在网上那个看到firefox出v4了。记得第一次认识firefox是在上大学的时候。记得有一期电脑报上有分布式计算的介绍,还有就是这个firefox。

那时候也在研究linux,这个firefox也可以在上面用。firefox有很多插件供你选择,几乎让你可以去做任何事情。