August 19, 2010
mysql各种HA方案
"mysql的单点一直是一个让人很烦恼的事情,特别是master的单点。\n现在外面的解决方案主要如下: 双master方案,heartbert(HA)+rhcs(分布式文件系统),heartbert(HA)+DRBD.\n双master存在的问题是master有2个IP,这样意为着前端需要指向2个的masterIP,同时bin-log也是双向同步的,会不会比单向同步的量更多呢?\n第二种方案是挺不错的,但是必须要分布式文件系统,要是实在不行就可以用NFS来代替,但是这样存在的问题就是数据文件是单点,所以必须使用分布式文件系统。\n第三种是关键是DRBD,这个是在网络层做RAID1,在A机器上收到数据后DRBD会写到本地硬盘上,同时通过网络传输到另外一台机器上。这样保证了2台机器的一致。特别是DRBD传输的时候有多种协议可以选择,但是一般看到网上大家都是使用协议C(C表示收到远程主机的写入确认后,视为写入完成) DRBD的架构如下:\n今天在high scalability有个文档专门比较各种mysql HA的方案。基本上大家可以根据这个比较来做自己合适的的MySQL HA了 "
August 17, 2010
[教程]freebsd下SVN服务器配置
"**注意:**这里主要介绍使用svnserver服务器这种方式,在安装的时候使用的是ipv4,所以最好如果没有必要的话,尽量将ipv6的一些选项给取消.\n安装svn服务器软件.由于要通过Web访问SVN所以要加载mod_dav模块,所以在安装apche的时候要添加一些参数:\n#cd /usr/ports/devel/subversion #make WITH_MOD_DAV_SVN=yes WITHOUT_BDB=yes install clean #rehash\n下边介绍两种使用方式: 第一种方式:使用svnserve服务器,自己的协议和客户端,在freebsd我在/usr/local/www/apache22/data下用FTP上传了一个blog目录\n#cd /usr/local/www/apache22/data\n#svnadmin create myblog #svn import blog -m “init”\n上面第三条命令是将blog文件夹里的内容,导入到svn项目中,这种原来的文件就会在在/usr/local/www/apache22/data/myblog/blog这个 …"
August 17, 2010
$HTTP_RAW_POST_DATA 和 $_POST的区别
"这是手册里写的\n总是产生变量包含有原始的 POST 数据。否则,此变量仅在碰到未识别 MIME 类型的数据时产生。不过,访问原始 POST 数据的更好方法是 php://input。$HTTP_RAW_POST_DATA 对于 enctype=”multipart/form-data” 表单数据不可用。\n问题: $HTTP_RAW_POST_DATA == $_POST 吗?\n照手册所写 ,答案应该就为否。 假如不一样的话,他们的区别是什么呢?\n我知道答案了,如下:\nThe RAW / uninterpreted HTTP POst information can be accessed with: $GLOBALS[‘HTTP_RAW_POST_DATA’]\nThis is useful in cases where the post Content-Type is not something PHP understands (such as text/xml).\n也就是说,基本上$GLOBALS[‘HTTP_RAW_POST_DATA’] 和 $_POST是一样的。但是如果post …"
August 17, 2010
PHP输入流php://input
"在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input\n对于php://input介绍,PHP官方手册文档有一段话对它进行了很明确地概述。\n“php://input allows you to read raw POST data. It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does not need any special php.ini directives. php://input is not available with enctype=”multipart/form-data”. 翻译过来,是这样: “php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data”\n我们应该怎 …"
August 16, 2010
如何设置服务器之间时间同步
"HP-UX系统的服务器之间的时间需要同步,利用自带的NTPD可以很好的达到目的。\n假设我们要host1作时间服务器,host2定期去跟host1的系统时间同步,那么需要作以下设置,全部用root用户执行。\n1。设置host1机器 编辑/etc/rc.config.d/netdaemons,修改下面行 export NTPDATE_SERVER= –因为这台机器将作为服务器,所以这个参数保持为空值即可 export XNTPD=1 –默认是0,改为1表示ntp进程将随系统启动自动启动 export XNTPD_ARGS=\n编辑/etc/ntp.conf,添加下面行 这个文件默认是全部注释的,可以当成ntp的文档来阅读,我们只需要在最后添加,表示将用本地系统时间作为服务器时间 server 127.127.1.1 fudge 127.127.1.1 stratum 10\n启动ntp守护进程 /sbin/init.d/xntpd start\n检查进程情况 ntpq -p\n2。设置host2机器 编辑/etc/rc.config.d/netdaemons,修改下面行 export …"
August 16, 2010
ntpdate linux时间同步命令
"ntpdate linux时间同步命令\n名称 ntpdate – 通过NTP 设置日期和时间 概要 ntpdate [ -Bbdpqsuv ] [ -a key# ] [ -e authdelay ] [ -k keyfile ] [ -o version ] [ -p samples ] [ -t timeout ] server[ … ] 说明 ntpdate 通过轮询指定为服务器参数的网络时间协议(NTP) 服务器来设置本地日期和时间,从而确定正确的时间。它必须以根用户身份在本地主机上运行。从每个指定的服务器中可获取大量的示例,并且还应用了NTP 时钟过滤器和选择算法的子集,以选择最佳的算法。请注意, ntpdate 的准确性和可靠性取决于服务器的数量、每次运行它时的轮询数以及运行之间的时间间隔。\nntpdate 根据需要可以手动运行来设置主机时钟,也可以从主机启动脚本中运行,在引导时设置时钟。某些情况下,它可用于在启动NTP 守护程序xntpd 之前对时钟进行初始设置。\n也可以从cron 脚本中运行ntpdate 。但是务必要注意,包含人为产生的cron 脚本的ntpdate …"
August 14, 2010
NoSQL总结分类
"NoSQL数据库异军突起,随着Digg和 sf.net大型应用不断采取NoSQL,NoSQL运动已经蓬勃发展,NoSQL数据库很多,如何对他们分类,以便方便地根据自己应用特色选择不同的NoSQL数据库呢?\nNoSQL = HVSP 无(传统关系数据库的)join或明显事务的高容量简单处理。\n按照数据模型保存性质将当前NoSQL分为四种:\n1.Key-value stores键值存储, 保存keys+BLOBs (二进制大对象Binary Large OBjects)\n2.Table-oriented 面向表, 主要有Google的BigTable和Cassandra.\n3.Document-oriented面向文本, 文本是一种类似XML文档,MongoDB 和 CouchDB\n4.Graph-oriented 面向图论. 如Neo4J.\nNoSQL一般都是分布式数据库,高性能是其特点,因此,数据是如何被分布、复制/碎片以及合成就成为关键,这其中涉及你的应用对数据一致性的要求,见CAP原理,不同一致性处理方式决定不同类型:\n1.基本上基于Dynamo. 核心思想就是在多个节点之间获得最 …"
August 14, 2010
Cassandra数据模型
"提起NoSQL这个话题,仿佛不应该是DBA要关注的事,而是架构师应该关心的。但是作为一名DBA,在使用传统的关系型思想建模时,应该有必要了解NoSQL的建模方法。\n各种NoSQL数据库有很多,我最关注的还是BigTable类型,因为它是一个高可用可扩展的分布式计算平台,用来处理海量的结构化数据,而数据库同样也是处理结构化数据,所以除了没有SQL,在数据模型方面有相似之处。Cassandra是facebook开源出来的一个版本,可以认为是BigTable的一个开源版本,目前twitter和digg.com在使用。我们尝试从DBA的角度出发去理解Cassandra的数据模型。\nNoSQL并不能简单的理解为No SQL,其本质应该是No Relational,也就是说它不是基于关系型的理论基础,而我们所有传统的数据库都是基于这套理论而发展起来的,所以SQL并不是问题的关键所在,比如有些NoSQL数据库可以提供SQL类型的接口,允许你通过类SQL的语法去访问数据。而Friendfeed则是反其道而行之,利用关系型数据库MySQL,采用了去关系化的设计方法,去实现自己的KeyValue存储。所 …"
August 13, 2010
Apache禁止目录访问方法介绍
"在PHP网站开发中,基于WEB服务器和PHP网站程序代码的安全考虑,我们需要对相关的目录或者文件访问权限进行控制,以防止意外情况的发 生,那么我们如何来实现这种功能呢?我们可以通过Apache来实现禁止目录访问(禁止游览列出的目录或文件列表)、禁止或允许IP与域名访问目录的功 能。\n环境说明\n我使用的是DedeCMS DedeAmpz的PHP运行环境,PHP版本5.2.4,Apache版本2.2.4\n在Apache中配置禁止目录访问,即禁止游览列出的目录/文件列表的方法\n访问网站目录时Apache默认配置为可列出目录/文件列表,即当你访问http://localhost时会列出相关的目录和文件列表,我们可以通过修改Apache配置文件httpd.conf来实现禁止列出目录/文件列表,方法如下:\n1、打开apache配置文件httpd.conf\n2、找到\nOptions Indexes AllowOverride None Order allow,deny Allow from all 只需要修改Options Indexes为Options None即可,注:根据PHP运行环境安装包的 …"
August 11, 2010
可扩展性设计之数据切分
"可能很多读者朋友在网上或者杂志上面都已经多次见到关于数据切分的相关文章了, 只不过在有些文章中称之为数据的 Sharding 。其实不管是称之为数据的 Sharding 还是数据的切分,其概念都是一样的。简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。 数据的切分同时还可以提高系统的总体可用性,因为单台设备 Crash 之后,只有总体数据的某部分不可用,而不是所有的数据。\n数据的切分( Sharding )根据其切分规则的类型,可以分为两种切分模式。 垂直(纵向)切分: 一种是按照不同的表(或者 Schema )来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分; 水平(横向)切分: 另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。\n垂直切分的最大特点就是规则简单,实施也更为方便,尤其适合各业务之间的耦合度非常低,相互影响很小,业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业务模块所 …"