June 25, 2010
Mysql 集群简介和配置
"1. 先了解一下你是否应该用 mysql 集群。\n减少数据中心结点压力和大数据量处理,采用把 mysql 分布,一个或多个 application 对应一个 mysql 数据库。把几个 mysql 数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面。 其他不共享的数据还维持在各自分布的 mysql 数据库本身中。\n2. 集群 Mysql 中名称概念 .( 如上图 )\n1 ) Sql 结点( SQL node– 上图对应为 mysqld ) : 分布式数据库。包括自身数据和查询中心结点数据 .\n2 )数据结点 (Data node — ndbd): 集群共享数据 ( 内存中 ).\n3 )管理服务器 (Management Server – ndb_mgmd): 集群管理 SQL node,Data node.\n3 .配置\nmysql-max 版本,当然现在 mysql 集群系统 windonws 平台上面不被支持 .\n安装 mysql 就不多说了,网上一打堆,简明扼要。\nA:192.168.1.251 – Data node 和 Management Server."
June 25, 2010
MySQL Cluster集群配置方案
"在为某证券公司设计其OA架构时,初期客户是30万用户在线;然而在项目实施中,客户又提出50万用户同时在线的需求,而且都有写的需求;这样初始的设计 master-master-slave,读写分离满足不了客户的要求,所以我们打算采用Mysql Cluster方案;MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个Cluster中运行多个MySQL服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。\n一、MySQL Cluster概述\nMySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。\nMySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。\n所有的这些节点 …"
June 25, 2010
MySQL如何修改表格的字符集,如何修改某个字段的字符集
"如果用户想改变表的默认字符集和所有的字符列的字符集到一个新的字符集,使用下面的语句: ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;\n警告: 上述操作是在字符集中转换列值。如果 用户在字符集(如 gb2312)中有一个列,但存储的值使用的是其它的一些不兼容的字符集(如 utf8),那么该操作将不会得到用户期望的结果。在这种情况下,用户必须对每一列做如下操作:\nALTER TABLE t1 CHANGE c1 c1 BLOB; ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;\n这样做的原因是:从 BLOB 列转换或转换到 BLOB 列没有转换发生。\n如果用户指定以二进制进行 CONVERT TO CHARACTER SET,则 CHAR、VARCHAR 和 TEXT 列将转换为它们对应的二进制字符串类型(BINARY,VARBINARY,BLOB)。这意味着这些列将不再有字符集,随后的 CONVERT TO 操作也将不会作用到它们上。\n如果仅仅改变一个表的缺省字 …"
June 25, 2010
Mysql InnoDB和MyISAM的区别
"InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等 高级处 理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已 经外部键等高级数据库功能。\nMyIASM是IASM表的新版本,有如下扩展:\n1、二进制层次的可移植性。\n2、NULL列索引。\n3、对变长行比ISAM表有更少的碎片。\n4、支持大文件。\n5、更好的索引压缩。\n6、更好的键码统计分布。\n7、更好和更快的auto_increment处理。\nInnoDB 是 MySQL 上第一个提供外键约束的引擎,除了提供事务处理外,InnoDB 还支持行锁,提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。\nInnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。\nInnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 有它自己的缓冲池, …"
June 24, 2010
FreeBSD portupgrade升级你的FreeBSD软件
"portupgrade 是一个软件,用于快捷便利地升级软件,安装办法:\n#cd /usr/ports/sysutils/portupgrade\n#make install clean\n然后用cvsup更新ports树,最后运行:\n#portupgrade -r pkg_name 升级单个软件和与其相关的,其中 pkg_name 是 pkg_info 中显示的名字\nportupgrade -ar 就会自动更新全部了。\n如果加上 P 参数,则先看是否有已经编译好的 pkg 下载,直接从 pkg 升级,省去自己编译。\n下载站点可以通过修改 /usr/local/etc/pkgtools.conf 更改。\nportupgrade -arR 升级所有已经安装的软件,并且检查依赖关系。"
June 24, 2010
Five Minutes程延辉 介绍开心农场架构
"Five Minutes 公司程延辉(小名康天) 介绍开心农场架构,social game的技术挑战,支持千万级DAU的social game技术架构。这是一个对于开发者来说,非常精彩,非常有实用性指导的一次演讲,详细介绍了很多技术内幕。\n\u0026raquo;猛击这里下载演讲ppt\u0026laquo;\nFive Minutes 公司的著名social game 开心农场,目前非常受用户欢迎,包括国外的Facebook,国内的开心网都是如此,是全球最大的social game,台下热烈掌声。呵呵。开心农场这个游戏从介绍看,相当成功,最早是08年9月在xiaonei上线,而后在51等平台推广,包括Facebook。现在已经有1570万游戏用户了,其中包括50万的Facebook用户。\n开心农场架构主要难点:1。如何存储大规模的用户数据千万级2。如果应对大量访问每天数亿请求量3。如果应对数据的频繁修改,每秒数万次数据修改。\n解决的方式\n优化:\n1。负载均衡,web服务器平行扩展。\n2。服务器性能优化。\n3。异步处理,缓存数据接口,Linux内核参数优化,挖掘PHP的效率,用fastcgi模式运行php, …"
June 24, 2010
UPDATE 时主键冲突引发的思考
"假设有一个表,结构如下:\nmysql\u0026gt; CREATE TABLE `a` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `id2` int(10) unsigned NOT NULL DEFAULT \u0026#39;0\u0026#39;, PRIMARY KEY (`id`) ) ENGINE=MyISAM; 该表中只有6条记录,如下:\nmysql\u0026gt; select * from a; +----+---------+ | id | city_id | +----+---------+ | 2 | 2 | | 3 | 3 | | 5 | 5 | | 4 | 4 | | 6 | 6 | | 7 | 7 | +----+---------+ 注意上面id的显示顺序,由于没有指定排序字段,myisam表引擎是随机显示记录列表的。 现在想要把id字段分别-1,执行以下语句,得到报错: mysql\u0026gt; update a set id=id-1; ERROR 1062 (23000): Duplicate entry \u0026#39;4\u0026#39; …"
June 20, 2010
开源数据库 Sharding 技术 (Share Nothing)
"注:此文首发于 《程序员》杂志 2008 年 7 月刊。\n从 Shard 到 Sharding “Shard” 这个词英文的意思是”碎片”,而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏(MMORPG)中。”Sharding” 姑且称之为”分片”。\nSharding 不是一门新技术,而是一个相对简朴的软件理念。如您所知,MySQL 5 之后才有了数据表分区功能,那么在此之前,很多 MySQL 的潜在用户都对 MySQL 的扩展性有所顾虑,而是否具备分区功能就成了衡量一个数据库可扩展性与否的一个关键指标(当然不是唯一指标)。数据库扩展性是一个永恒的话题,MySQL 的推广者经常会被问到:如在单一数据库上处理应用数据捉襟见肘而需要进行分区化之类的处理,是如何办到的呢? 答案是:Sharding。\nSharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。\n事关数据库扩展性 说起数据库扩展性,这是 …"
June 20, 2010
闲谈 Web 图片服务器
"现在很多中小网站(尤其是 Web 2.0 站点) 都允许用户上传图片,如果前期没有很好的规划,那么随着图片文件的增多,无论是管理还是性能上都带来很多问题。就自己的一点理解,抛砖引玉,以期能引出更具价值的信息。\n事关图片的存储 把图片存储到什么介质上? 如果有足够的资金购买专用的图片服务器硬件或者 NAS 设备,那么简单的很;如果有能力自己开发单独存储图片的文件系统,那么也不用接着往下看了。\n如果上述条件不具备,只想在普通的硬盘上存储,首先还是要考虑一下物理硬盘的实际处理能力。是 7200 转的还是 15000 转的,实际表现差别就很大。是选择 ReiserFS 还是 Ext3 ,怎么也要测试一下吧? 创建文件系统的时候 Inode 问题也要加以考虑,选择合适大小的 inode size ,在空间和速度上做取舍,同时防患于未然,注意单个文件系统下文件个数别达到极限。\n独立,独立的服务器 无论从管理上,还是从性能上看,只要有可能,尽量部署独立的图片服务器。这几乎成为常识了(不过在我做过面向 Web 的项目之前就这个问题也被人笑话过)。具备独立的图片服务器或者服务器集群后,在 Web 服务器 …"
June 20, 2010
小规模低性能低流量网站设计原则
"到处都是什么大规模啊,高流量啊,高性能之类的网站架构设计,这类文章一是满足人们好奇心,但看过之后也就看过了,实际收益可能并不大;另外一个副作用是容易让人心潮澎湃,没学走先学跑,在很多条件仍不具备的情况下,过度设计、过度扩展(高德纳大爷也说过,”过早优化是万恶之源”),所以,这里反弹琵琶,讨论一下小规模、低性能、低流量的网站该如何搞法。\n如果站点起步阶段可能就是一台机器(或是一台虚拟机,比如 JobsDigg.com ),这个时候,去关注什么数据拆分啊,负载均衡啊,都是没影子的事情。很多大站点的经验绝不能照搬,辩证的参考才是硬道理。\n拥抱熟知的技术 动手构建站点的时候,不要到处去问别人该用什么,什么熟悉用什么,如果用自己不擅长的技术手段来写网站,等你写完,黄花菜可能都凉了。所以,有现成的软件组件可用,就不要自己重新发明轮子。人家说 Python 牛,但自己只懂 PHP ,那就 PHP 好了,如果熟悉 .net ?,那也不错。用烂技术不是丢人的事情,把好技术用烂才丢人。\n架构层次清晰化 起步的阶段应该清楚的确定下来架构的层次。如果都搅和在一起,业务一旦扩增开来,如果原有的一堆东西拆不开就是 …"