分类目录归档:Linux

Linux相关知识

Linux下用scp做异地备份

继上一篇 《Linux用crontabs做MySQL本地备份》 之后,这次换做异地备份

本来想用rsync来做备份,但是用rsync需要另外在开一个端口,免得麻烦所以选择scp,scp用来做 mysql异地备份还是够用了。。。

首先让本地的服务器登陆线上ssh免密码

用root登陆本地服务器,输入

ssh-keygen -t rsa 继续阅读

Linux用crontabs做MySQL本地备份

和两天数据库服务器出了点问题,突然打不开,还担心是硬盘坏了。结果问机房的半天才给答复,说是机房停电。。。坑爹

不过这次停电也敲了下警钟,要有备份的意识啊。。。

线上mysql服务器是Linux的,就记录下 linux下的mysql备份,Let’s go!!!

线上服务器是最小化安装的 CentOS6,没有自带crontab,所以要自己装个,并设置好自启动。 继续阅读

Ubuntu 各版本apt包网易镜像源

cd /etc/apt/
sudo wget http://mirrors.163.com/.help/sources.list.hardy             #Ubuntu 8.04
sudo wget http://mirrors.163.com/.help/sources.list.lucid             #Ubuntu 10.04
sudo wget http://mirrors.163.com/.help/sources.list.maverick      #Ubuntu 10.10
sudo wget http://mirrors.163.com/.help/sources.list.natty             #Ubuntu 11.04
sudo wget http://mirrors.163.com/.help/sources.list.oneiric          #Ubuntu 11.10
sudo wget http://mirrors.163.com/.help/sources.list.precise         #Ubuntu 12.04

#备份
sudo mv sources.list sources.list.bak

#xxxxx为对应的版本
sudo mv sources.list.xxxxx sources.list

Linux和windows下ping命令使用大数据包

linux下ping包的默认大小为64Byte,次数不限。但有时我们需要尝试ping大数据包,来测试网络的状况,这时,就要指定ping包的大小了。

Linux下ping大数据包的格式;

语  法:ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
例如:

1. 指定数据包大小为1500Byte:ping -s 1500 ip

2. 指定次数为4次,数据包大小为32767Byte:ping -c 4 -s 32767 ip 继续阅读

最简安装debian后,sudo添加自动补全功能

用Linux的用户常常喜欢输入命令的前几个字符后按按TAB键自动补全,这样就不用输入所有字母了。

不过常常要通过加sudo取得管理员权限操作,这样就不能 TAB键补齐了。
这里有个小技巧,可以在sudo后照常OK!
方法就是:
在~/.bashrc中加入一行:complete -c sudo

PHP安装APC加速缓存扩展

用PHP有一段时间了,学习Linux也有一段时间了,前段时间用了yaf扩展框架,就使用php扩展,不过对于这个框架没有深入研究。不过觉得装个APC缓存扩展应该不错。今天就在VPS上面装了一下试试

下载地址在 :http://pecl.php.net/package/apc

建议下载使用 stable的,现在最新的稳定版是 3.1.9

#wget http://pecl.php.net/get/APC-3.1.9.tgz

#tar -zxvf APC-3.1.9.tgz

# cd APC-3.1.9/

#/usr/local/php/bin/phpize             //这里是php安装目录下bin下面的phpize
#./configure –enable-apc –enable-mmap –enable-apc-spinlocks –disable-apc-pthreadmutex –with-php-config=/usr/local/php/bin/php-config
#make && make install

然后在 php.ini文件里面加入 extension=apc.so 就ok了。。。具体配置可以百度搜一下

利用OpenVZ VPS在CentOS6搭建PPTP VPN的方法

网上找了些方法,大部分是都卡在了 安装 pptp这一步上。情况是 pptp 和 ppp 版本不兼容或者与系统不兼容。。。

这次用Directspace的OpenVZ VPS搭建了 VPN试了下,感觉网速太不稳定了,不准备续费用下去了。。。

下面是步骤:

1、登陆SSH,检查VPS是否有必要的支持。如果检查结果没有这些支持的话,是无法安装pptp的。
有2个检查必须的,第一个检查:
cat /dev/net/tun

返回结果为下面的文本,表明通过:
cat: /dev/net/tun: File descriptor in bad state

第二个检查:
cat /dev/ppp

返回以下结果,则通过:
cat: /dev/ppp: No such device or address

返回:“Permission denied”则不通过。
上面的2条必须都通过,才可安装pptp。如果无法通过,只能去跟客服申请为你的VPS打开 TUN/TAP/PPP 功能了。或者在vps控制台去看看有没有启用这些功能的按钮。Directspace是在 vps控制台里启用就行 继续阅读

利用rsync做异地备份

这几天公司服务器硬盘坏了,去恢复数据 折腾了半天,突然意识到数据备份的重要性。所以索性做成异地备份。。。

准备是把公司本地的测试服务器拿来备份生产服务器上面的数据,但是 公司本地的服务器操作系统是windows,生产服务器操作系统是 linux。rsync支持从linux同步到windows。所以就用这个了。。。

windows下面的rsync软件叫cwRsync

主要用的软件是 cwRsync。。。此处就跳过服务器配置,客户端安装,直接说几个重要的地方
Linux服务器端的配置跟普通都是一样的。可以网上搜一下。。。这里主要说 Windows客户端同步Linux服务器端的文件。。。

命令如下:
“F:\Program Files\cwRsync\bin\rsync.exe” -rlptvzD –delete 219.153.42.78::cqd2d/bbs ../public_html
F:\Program Files\cwRsync\bin\rsync.exe为cwRsync安装的地址。。。
同步的目录只能用相对路径,不然没法更新
会报
The source and destination cannot both be remote.
rsync error: syntax or usage error (code 1) at main.c(1148) [Receiver=3.0.8]
这种错误

rsync参数不能用 -avz,因为 windows的文件权限跟linux的不一样。如果参数里面有a的话,也不能同步。
解决方法就是用 -rlptD 参数代替 -a
会报 rsync chown 您的目录 failed: invalid argument(22) 这样的错误。。。。

因为 -a = -rlptgoD, 所以实际上就是去掉了 –owner –group
暨是不保留以前的用户和用户组

基本上搞定,然后直接写个脚本,加入到计划任务 就自动离地备份了

debian隐藏Apache和PHP版本信息

隐藏 Apache 版本

apache 的 httpd.conf 有两个配置可以控制是否显示服务器信息给用户。
ServerTokens
ServerSignature
默认条件下会把apache版本 系统 模块都显示出来 (HTTP 返回头)
设置为:
ServerTokens ProductOnly
ServerSignature Off
就隐藏Apache的Apache Version信息。
ServerTokens Prod
服务器会发送(比如): Server: Apache
ServerTokens Major
服务器会发送(比如): Server: Apache/2
ServerTokens Minor
服务器会发送(比如): Server: Apache/2.0
ServerTokens Min
服务器会发送(比如): Server: Apache/2.0.41
ServerTokens OS
服务器会发送(比如): Server: Apache/2.0.41 (Unix)
ServerTokens Full (或未指定)
服务器会发送(比如): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
如果是debian系统,则是在 /etc/apache2/conf.d/security 里面进行设置。。。
隐藏 PHP 版本
php.ini
expose_php On
改成
expose_php Off
重启apache后,php版本在http头中隐藏了。

Google三大核心技术之一BigTable论文中文版

Google’s BigTable 原理 (翻译)

    题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才。

                                                  —— 编者

官方的 Google Reader blog 中有对BigTable 的解释。这是Google 内部开发的一个用来处理大数据量的系统。这种系统适合处理半结构化的数据比如 RSS 数据源。 以下发言  是 Andrew Hitchcock  在 2005 年10月18号 基于: Google 的工程师 Jeff Dean 在华盛顿大学的一次谈话 (Creative Commons License).

 

 

首先,BigTable 从 2004 年初就开始研发了,到现在为止已经用了将近8个月。(2005年2月)目前大概有100个左右的服务使用BigTable,比如: Print,Search History,Maps和 Orkut。根据Google的一贯做法,内部开发的BigTable是为跑在廉价的PC机上设计的。BigTable 让Google在提供新服务时的运行成本降低,最大限度地利用了计算能力。BigTable 是建立在 GFS ,Scheduler ,Lock Service 和 MapReduce 之上的。

每个Table都是一个多维的稀疏图 sparse map。Table 由行和列组成,并且每个存储单元 cell 都有一个时间戳。在不同的时间对同一个存储单元cell有多份拷贝,这样就可以记录数据的变动情况。在他的例子中,行是URLs ,列可以定义一个名字,比如:contents。Contents 字段就可以存储文件的数据。或者列名是:”language”,可以存储一个“EN”的语言代码字符串。

为了管理巨大的Table,把Table根据行分割,这些分割后的数据统称为:Tablets。每个Tablets大概有 100-200 MB,每个机器存储100个左右的 Tablets。底层的架构是:GFS。由于GFS是一种分布式的文件系统,采用Tablets的机制后,可以获得很好的负载均衡。比如:可以把经常响应的表移动到其他空闲机器上,然后快速重建。

Tablets在系统中的存储方式是不可修改的 immutable 的SSTables,一台机器一个日志文件。当系统的内存满后,系统会压缩一些Tablets。由于Jeff在论述这点的时候说的很快,所以我没有时间把听到的都记录下来,因此下面是一个大概的说明:

压缩分为:主要和次要的两部分。次要的压缩仅仅包括几个Tablets,而主要的压缩时关于整个系统的压缩。主压缩有回收硬盘空间的功能。Tablets的位置实际上是存储在几个特殊的BigTable的存储单元cell中。看起来这是一个三层的系统。

客户端有一个指向METAO的Tablets的指针。如果METAO的Tablets被频繁使用,那个这台机器就会放弃其他的tablets专门支持METAO这个Tablets。METAO tablets 保持着所有的META1的tablets的记录。这些tablets中包含着查找tablets的实际位置。(老实说翻译到这里,我也不太明白。)在这个系统中不存在大的瓶颈,因为被频繁调用的数据已经被提前获得并进行了缓存。

    现在我们返回到对 列的说明:列是类似下面的形式: family:optional_qualifier。在他的例子中,行:www.search-analysis.com  也许有列:”contents:其中包含html页面的代码。 “ anchor:cnn.com/news” 中包含着 相对应的url,”anchor:www.search-analysis.com/” 包含着链接的文字部分。列中包含着类型信息。

    (翻译到这里我要插一句,以前我看过一个关于万能数据库的文章,当时很激动,就联系了作者,现在回想起来,或许google的 bigtable 才是更好的方案,切不说分布式的特性,就是这种建华的表结构就很有用处。)

    注意这里说的是列信息,而不是列类型。列的信息是如下信息,一般是:属性/规则。 比如:保存n份数据的拷贝 或者 保存数据n天长等等。当 tablets 重新建立的时候,就运用上面的规则,剔出不符合条件的记录。由于设计上的原因,列本身的创建是很容易的,但是跟列相关的功能确实非常复杂的,比如上文提到的 类型和规则信息等。为了优化读取速度,列的功能被分割然后以组的方式存储在所建索引的机器上。这些被分割后的组作用于 列 ,然后被分割成不同的 SSTables。这种方式可以提高系统的性能,因为小的,频繁读取的列可以被单独存储,和那些大的不经常访问的列隔离开来。

在一台机器上的所有的 tablets 共享一个log,在一个包含1亿的tablets的集群中,这将会导致非常多的文件被打开和写操作。新的log块经常被创建,一般是64M大小,这个GFS的块大小相等。当一个机器down掉后,控制机器就会重新发布他的log块到其他机器上继续进行处理。这台机器重建tablets然后询问控制机器处理结构的存储位置,然后直接对重建后的数据进行处理。

这个系统中有很多冗余数据,因此在系统中大量使用了压缩技术。

    Dean 对压缩的部分说的很快,我没有完全记下来,所以我还是说个大概吧:压缩前先寻找相似的 行,列,和时间 数据。

    他们使用不同版本的: BMDiff 和 Zippy 技术。

   BMDiff 提供给他们非常快的写速度: 100MB/s  1000MB/s 。Zippy 是和 LZW 类似的。Zippy 并不像 LZW 或者 gzip 那样压缩比高,但是他处理速度非常快。

    Dean 还给了一个关于压缩 web 蜘蛛数据的例子。这个例子的蜘蛛 包含 2.1B 的页面,行按照以下的方式命名:“com.cnn.www/index.html:http”.在未压缩前的web page 页面大小是:45.1 TB ,压缩后的大小是:4.2 TB , 只是原来的 9.2%。Links 数据压缩到原来的 13.9% , 链接文本数据压缩到原来的 12.7%。

Google 还有很多没有添加但是已经考虑的功能。

    1.  数据操作表达式,这样可以把脚本发送到客户端来提供修改数据的功能。
2. 多行数据的事物支持。
3.  提高大数据存储单元的效率。
4. BigTable 作为服务运行。
好像:每个服务比如: maps 和 search history 历史搜索记录都有他们自己的集群运行 BigTable。
他们还考虑运行一个全局的 BigTable 系统,但这需要比较公平的分割资源和计算时间。

原文地址:
http://blog.csdn.net/accesine960/archive/2006/02/09/595628.aspx

http://blog.outer-court.com/archive/2005-10-23-n61.html