[置顶] 长期出售:Godaddy老域名,Godaddy历史BA老域名!

[置顶] 长期出售:搜狗pr域名,搜狗收录域名,搜狗权重域名!

[置顶] 长期出售:高外链域名,高反链域名,权重域名,有收录的域名!

主机健康状态监控

在数据库运行环境中,需要关注的主机状态主要有网络通信、系统软件错误、磁盘空间、内存使用,进程数量等。

    1、网络通信
   
    网络通信可以说是最容易检测的了,基本上只需要通过网络ping就可以获知是否正常。如果还不放心,或者所属网段内禁止使用了ping,也可以从监控主机进行固定端口的telnet尝试或ssh登录尝试。由于网络出现故障的时候被动的信息采集方式也会失效(无法与外界通信),所以网络通信的检测主要还是依靠主动检测。

监控系统设计

当MySQL主机达到一定规模时,基本上很难通过人工到各个主机上面来定时检查各自的状态,不论是运行状态还是性能状态。甚至不能像只有少数MySQL主机的时候那样简单地通过发送邮件的方式将相关信息发出。毕竟,量大了之后,检查邮件的时间成本也是很大的。这时候就需要进行统一的监控信息采集、分析、存储、处理来帮助我们过滤可以忽略的正常信息,并画出相关信息的趋势图,以帮助判断系统的运行状况和发展趋势。

    系统监控在很多人眼中是一个没有多少技术含量的事情,其实并非如此。且不说一个大型网站的所有设备的监控,就是仅仅搭建一个比较完善的几十台MySQL集群系统的监控,很可能就会让很多人束手无策,或者功能不够完善。

检测用户是否使用了cookie

我们可以使用浏览器的设置功能来禁止cookie的使用,对于程序设计人员来说,得知客户是否启用了cookie是十分重要的。因为如果用户禁用了cookie,那么对于使用了cookie的网页可能会出现访问错误。
 
       例如,如果用户禁止了cookie,而网页的程序设计却采用session来记录用户信息,并且在session实现时仍然用cookie来保存sessionID。那么,就可能发生用户已经输入了用户名和口令并通过验证之后,在进入新的网页时这些信息都丢失,又要求输入用户名和口令,会让用户觉得十分不方便。另外从服务器的角度来说,它为用户已经保存了一个session,但是因为它的sessionID并没有保存下来,导致用户进入第二个页面以后又要为它建立一个session,这样服务器端的负担就十分大。
 
       又如网页设计人员如果使用cookie来记录用户的某些偏爱,用户花了很长的时间来设定,但是下次再访问时,以前的设置因为没有保存而都不存在,这会让用户感到困惑。
 
       对于网页设计人员来说,如果用户在访问网页时出现了问题,却不知道问题产生的原因,就会让用户觉得十分不方便。设计人员可以使用cookie的功能,但是在用户禁止了这个功能时,网页的程序应该能够测试出来并告知用户问题产生的原因。如果用户希望正确访问网页,可以提示用户重新设置cookie的选项。
 
       1、使用session进行检查
 
       可以使用session对象来检查用户是否启用了会话cookie。当然,如果使用这种方法,就必须采用cookie保存sessionID的方法来实现session。由于这时session的使用是依赖于临时会话cookie的,所以当用户禁止了会话cookie时,session不起作用。这时需要程序能够测试出这个问题。
 
       使用session对象检查cookie是否禁止的技巧是在session中存储某些信息时,它可以在随后的页面中访问。如果在后面的页面中这个值不存在,那么就说明没有启用会话cookie,否则就说明启用了会话cookie。

Dual Master复制架构

有些时候,简单地从一个MySQL复制到另一个MySQL的基本Replication架构,可能还会需要在一些特定的场景下进行Master的切换。如在Master端需要进行一些特别的维护操作时,可能需要停止MySQL的服务。这时候,为了尽可能减少应用系统写服务的停机时间,最佳的做法就是将slave节点切换成Master来提供写入的服务。

    但是这样一来,原来Master节点的数据就会和实际的数据不一致了。当原Master启动可以正常提供服务的时候,由于数据不一致,不得不通过反转原Master-slave关系,重新搭建Replication环境,并以Master作为slave来对外提供读服务。重新搭建Replication环境会给我们带来很多额外的工作量,如果没有合适的备份,可能还会让Replication的搭建过程非常麻烦。

垂直与水平联合切分的使用

 在实际的应用场景中,除了那些负载并不是太大、业务逻辑也相对简单的系统可以通过上面切分方法之一来解决扩展性问题之外,恐怕其他大部分业务逻辑复杂、系统负载大的系统,都无法通过上面任何一种数据的切分方法来实现较好的扩展性,这就需要将“垂直”和“水平”这两种切分方法结合使用,不同的场景使用不同的切分方法。

    一般来说,数据库中的所有表很难通过某一个(或少数几个)字段全部关联起来,所以仅仅通过数据的水平切分无法解决所有问题。而垂直切分也只能解决部分问题,对于那些负载非常高的系统,即使只是单个表都无法通过单台数据库主机来承担其负载。必须结合“垂直”和“水平”两种切分方式,充分利用两者的优点,避开其缺点。

利用Search实现高效的全文检索


    不论是使用Memcached还是使用Berkeley DB,大多数时候只能通过特定的方式来进行数据检索,满足少部分的检索需求。而大家应该也很清楚,数据库本身对于全模糊LIKE操作的性能是非常低下的,因为这种操作无法利用索引。虽然MySQL的MyISAM存储引擎支持了全文索引,但是官方版本还不支持多字节符集的数据,所以对于需要存放中文或要使用MyISAM之外的存储引擎的用户来说,仍是完全无法使用的。

    对于这种情况,只有一个办法可以解决,那就是通过全文索引软件,即常说的Search(搜索引擎),对数据进行全文索引,才能达到较为高效的数据检索。

数据存储优化

如果你已经了解InnoDB存储引擎的物理结构,那么我们可以通过分析InnoDB的物理文件结构寻找可以优化的线索。

    一、理解InnoDB数据及索引文件存储格式

    InnoDB存储引擎的数据存放在相同的文件中,这一点和MySQL默认存储引擎MyISAM的区别较大,后者分别存放于独立的文件。除此之外InnoDB的数据存放格式也比较独特,每个InnoDB表都会将主键以聚簇索引的形式创建。所有的数据都以主键升序排列在物理磁盘上面,所有主键查询并且以主键排序的查询效率也会非常高。

Dual Master与级联复制结合解决在线DDL变更问题

使用Dual Master加级联复制的组合架构,对MySQL的一个致命伤即在线DDL变更来说,也开源得到一定的解决。如当我们需要给某个表增加一个字段,可以通过如下操作在上述架构中实现:

    1)在Slave集群中抽出一台暂时停止服务,然后对其进行变更,完成后再放回集群继续提供服务;

    2)重复第一步的操作完成所有Slave的变更;

    3)暂停Master B的复制,同时关闭当前session记录二进制日志的功能,对其进行变更,完成后再启动复制;

数据的收集可能被线下的访问所影响

还有一个与方法无关的,却会影响数据准确性的因素。高价的商品,如汽车、贷款和按揭等,通常都是先在网上被发现,然后在线下产生交易。如何将线下交易和线上浏览行为联系起来是网络分析长期存在的一个难题。目前,最好的解决方法是利用网上优惠券,用户可以打印这些优惠券换取一些免费礼品,获得一定的折扣。如果你倾向于接受网络订单,你也可以采用类似的激励方法,提供一些仅限网络订购的特惠价,或者免费送货等服务。

用户拥有或者共享多台电脑

用户的行为会通过cookies进行收集的数据的准确性造成巨大的影响。考虑以下几种场景:

    一个用户,多台电脑。如今,人们上网的方式越来越多样化,在公司上,在家上,在网吧上。一个用户在3台不同的电脑上上网就会产生3个不同的cookies,而现今所有的网络分析解决方案都会将此计算成为3个不同的用户。

    多个用户,一台电脑。人们也常常会共享电脑,特别是在家庭中。这意味着cookies也是共享的,除非每次换人使用电脑的时候都注销,并以新用户登录。在有些情况下,cookies会被刻意删除。例如,网吧的电脑会在每次对话之后自动删除所有的cookies信息,所以,就算是一个用户经常光顾那个网吧,使用同样一台电脑,网络分析解决方案依然会把他看作是不同的用户。

«555657585960616263646566676869»
最近发表
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
搜索
Tags列表
网站收藏
图标汇集
  • 订阅本站的 RSS 2.0 新闻聚合
友情链接

热门搜索: 外链域名 高外链域名 高收录域名

Copyright www.thyst.cn. Some Rights Reserved.