Rss Feed
  1. 设置mysql主从 

    2011 年 11 月 15 日 by admin

    log-bin=/data/mysql/logs/mysql-bin

    binlog-do-db=test
    binlog-do-db=test2

    binlog-ignore-db=mysql
    # binary logging format – mixed recommended
    binlog_format=mixed

    # required unique id between 1 and 2^32 – 1
    # defaults to 1 if master-host is not set
    # but will not function as a master if omitted
    server-id       = 21
    replicate-do-db = test
    replicate-do-db = test2

    slave-skip-errors = 1032,1062,126,1114,1146,1048,1396,1050

    CHANGE MASTER TO MASTER_HOST=’127.0.0.1′, MASTER_PORT=63306,MASTER_USER=’backup’, MASTER_PASSWORD=’backup’,
    Master_Log_File=’mysql-bin.000020′,MASTER_LOG_POS=1


  2. MySQL EXPLAIN extended +show warnings

    2011 年 06 月 04 日 by admin

    以下的文章主要讲述的是MYSQL EXPLAIN语句中的extended 选项的实际应用与具体的操作步骤,我们大家都了解MySQL数据库中有一个explain 命令,其主要功能是用来分析select语句的运行效果,例如explain可以获得select语句。

    使用的索引情况、排序的情况等等。除此以外,explain 的extended 扩展能够在原本explain的基础

    上额外的提供一些查询优化的信息,这些信息可以通过MySQL的show warnings命令得到。下面是一个最简单的例子。

    首先执行对想要分析的语句进行MySQL explain,并带上extended选项

    1. MySQL> explain extended select * from account\G;

     

    1. id: 1
    2. select_type: SIMPLE
    3. table: account
    4. type: ALL
    5. possible_keys: NULL
    6. key: NULL
    7. key_len: NULL
    8. ref: NULL
    9. rows: 1
    10. filtered: 100.00
    11. Extra:
    12. 1 row in set, 1 warning (0.00 sec)

    接下来再执行Show Warnings

    1. MySQL> show warnings\G;

     

    1. Code: 1003
    2. Message: select `dbunit`.`account`.`id` AS `id`,`dbunit`.`account`.`name` AS `name` from `dbunit`.`account`
    3. 1 row in set (0.00 sec)

    从 show warnings的输出结果中我们可以看到原本的select * 被MySQL优化成了

     

    1. select `dbunit`.`account`.`id` AS `id`,`dbunit`.`account`.`name` AS `name`。

    explain extended 除了能够告诉我们MySQL的查询优化能做什么,同时也能告诉我们MySQL的查询优化做不了什么。MySQL performance的Extended EXPLAIN这篇文中中作者就利用explain extended +show warnings 找到了MySQL查询优化器中不能查询优化的地方。

    1. EXPLAIN extended SELECT * FROM sbtest WHERE id>5 AND id>6 AND c=”a” AND pad=c

    语句的输出我们得知MySQL的查询优化器不能将id>5 和 id>6 这两个查询条件优化合并成一个 id>6。

    在MySQL performance的explain extended文章中第三个例子和静室的MySQL explain的extended选项文章中,

    两位作者也对explain extended做了进一步的实验,从这个两篇文中中我们可以得出结论是从

    explain extend的输出中,我们可以看到sql的执行方式,对于分析sql还是很有帮助的。

    下面特别摘抄了静室的explain的extended选项这篇文章中的内容

    以下代码和分析摘抄至静室的explain的extended选项

    1. MySQL>explain extended select * from t where a in (select b from i);
    2. +—-+——————–+——-+——+
    3. | id | select_type | table | type |
    4. +—-+——————–+——-+——+
    5. | 1 | PRIMARY | t | ALL |
    6. | 2 | DEPENDENT SUBQUERY | i | ALL |
    7. +—-+——————–+——-+——+
    8. 2 rows in set, 1 warning (0.01 sec)

    子查询看起来和外部的查询没有任何关系,为什么MySQL显示的是DEPENDENT SUBQUERY,

    和外部相关的查询呢?从explain extended的结果我们就可以看出原因了。

    1. MySQL>show warnings\G

     

    1. Level: Note
    2. Code: 1003
    3. Message: select `test`.`t`.`a` AS `a`,`test`.`t`.`b` AS `b`,`test`.`t`.`c` AS `c`
    4. from `test`.`t` where
    5. <in_optimizer>(`test`.`t`.`a`,
    6. <exists>(select 1 AS `Not_used` from `test`.`i`
    7. where (<cache>(`test`.`t`.`a`) = `test`.`i`.`b`)))
    8. 1 row in set (0.00 sec)

    在这里MySQL改写了SQL,做了in的优化。

    以上代码和分析摘抄至静室的explain的extended选项

    不过需要注意的一点是从EXPLAIN extended + show warnings得到“优化以后”的查询语句

    可能还不是最终优化执行的sql,或者说MySQL explain extended看到的信息还不足以说明MySQL最

    终对查询语句优化的结果。同样还是MySQL formance的explain Extended这篇文章的第二个

    例子就说明了这种情况

    1. MySQL> EXPLAIN extended SELECT t1.id,t2.pad FROM sbtest t1, sbtest t2 WHERE t1.id=5
    2. AND t2.k=t1.k;
    3. +—-+————-+——-+——-+—————+———+———+——-+——-+——-+
    4. | id | select_type | TABLE | type | possible_keys | KEY | key_len | ref | rows | Extra |
    5. +—-+————-+——-+——-+—————+———+———+——-+——-+——-+
    6. | 1 | SIMPLE | t1 | const | PRIMARY,k | PRIMARY | 4 | const | 1 | |
    7. | 1 | SIMPLE | t2 | ref | k | k | 4 | const | 55561 | |
    8. +—-+————-+——-+——-+—————+———+———+——-+——-+——-+
    9. 2 rows IN SET, 1 warning (0.00 sec)
    10. MySQL> SHOW warnings \G

    1. row Level: Note

    1. Code: 1003
    2. Message: SELECT `test`.`t1`.`id` AS `id`,`test`.`t2`.`pad` AS `pad` FROM `test`.`sbtest` `t1`
    3. JOIN `test`.`sbtest` `t2` WHERE ((`test`.`t2`.`k` = `test`.`t1`.`k`) AND (`test`.`t1`.`id` = 5))
    4. 1 row IN SET (0.00 sec)

    从Explain的结果中我们可以得到t1表的查询使用的是”const”类型,也就是说MySQL查询的时候

    会先由t1.id=5 找到t1.k 再利用t1.k的值去t2表中查询数据,很显然这样的查询优化结果没有在

    接下来的Show Warings输出中找到。

    总结

    还是引用静室 在explain的 extended选项这篇文章中的几句话”从MySQL explain extend的输出中,我们可以看到sql的执行方式,对于分析sql还是很有帮助的”。


  3. 一淘网技术简介

    2011 年 04 月 15 日 by admin

    一淘网( www.etao.com )于2010年10月9日10:39正式上线,很多同学和同行对一淘的系统架构和面临的关键技术问题都很感兴趣,这篇短文希望能给予简要的介绍。

    系统架构

    一淘的系统架构如上图所示。可以看到,一淘有三个数据来源:互联网、外部合作方和淘宝主站。其中,互联网数据通过crawl的方式获得,而后两者则通过feed的方式提供。

    抓取系统的功能包括:网页抓取、抓取调度、域名解析、死链检测、JavaScript执行等。目前,一淘的资讯、话题、问答combo中的大部分数据都是通过抓取系统从互联网获得的。它是一淘一个重要的“原料厂”。

    离线处理系统是一个功能众多、可灵活定制的Pipeline,其主要功能有:网页编码识别与转换、网页解析与内容抽取、购物相关站点发现、列表页识别、网页分类与消重、链接提取与合并、关键词提取、众多网页静态feature的提取。它是一淘的“加工厂”。

    存储系统负责存储抓取系统和离线处理系统的产出,同时向这两个“厂”提供高性能、大容量的存取服务。目前我们采用的是Hadoop+HBase的体系结构,将网页、链接、图片进行了分类存放。存储系统是一淘存放原料、半成品的“核心仓库”。

    在线引擎负责对一淘前端搜索请求返回查询结果,它生成索引的数据来自存储系统。在线引擎是一淘面向用户的“成品生产车间”。值得一提的是,一淘采用了阿里集团新一代的HA2引擎技术,HA2结合了开源引擎和阿里上一代引擎技术的设计优点,在支持全文检索的同时,兼备了商品搜索的各种功能。它目前提供的主要特性有:

    • 数据规模:支持的数据规模从一台机器(partition)到几百台机器;
    • 更新速度:支持全量数据更新,以及最快支持分钟级的增量更新;
    • 数据类型:允许用户定义各种的数据类型,从单字段到几十个字段。字段的类型可以是text, string, number等;
    • 查询语法:支持简单的单一条件查询, 以及复杂的各种条件组合查询、过滤;
    • 相关性计算:支持最多三阶段相关性计算,提供丰富的信息供用户自定义每一个阶段的算分方法;
    • 统计导航:支持对检索到的结果做灵活的分组统计和智能导航。

    一淘前端负责向终端用户展现搜索结果页,它是一淘的“门店”,设有各式各样橱窗:商品、淘吧、资讯、论坛、问答、图片、网页等。保证这个门店正常运转的机制包括:

    • Bootstrap:负责查询词合法性检查、编码识别与转换、停止词和违禁词过滤。
    • Query Planner:负责查询词重写(Query Rewrite)、主辅词识别、商品类目预测、Combo排序、大小写转换、同义词和多义词,等等。
    • RMOD:负责向各类后端服务接口发起并发请求,并将返回结果进行整合用于页面展现。
    • Cache:负责分布式缓存搜索结果数据,从而缩短响应时间,提高前端系统的吞吐量。

    此外,为了一淘团队的运营效率,我们还在构建一套“从收集Query和Click日志开始,进行数据统计、关联分析、异常报警和人工调整等相关流程”的以Query为中心的运营工具。

    一淘的小二们深知:如何使我们打造的这些橱窗所展现的内容具有越来越精准的 “导购相关性”,是一淘面向用户的核心价值。如何进入朝这个方向持续发展的正循环呢?我们目前的思路是:构建一套结合“Query分析”和“网页分析”的多层次排序模型,在保证相关性的前提下,灵活快速地调整模型结构以适应变化的业务需求。

    Query分析的目的是理解用户的查询意图,并将此意图转化成排序时可用的信息影响最终排序结果,如:

    • 浏览型:没有明确的购物对象和意图,边看边买,用户比较随意和感性。Query例如:”2010年10大香水排行”,”2010年流行毛衣”, “zippo有多少种类?”;
    • 查询型:有一定的购物意图,体现在对属性的要求上。Query例如:”适合老人用的手机”,”500元 手表”;
    • 对比型:已经缩小了购物意图,具体到了某几个产品。Query例如:”诺基亚E71 E63″,”akg k450 px200″;
    • 确定型:已经做了基本决定,重点考察某个对象。Query例如:”诺基亚N97″,”IBM T60″。

    随着一淘用户越来越多,我们也会进一步挖掘用户查询需求,拓展意图分析种类。

    网页分析期望得到:网页质量、所在站点的权威度、内容的主题词、是否为购物类文章等。这些信息将和Query分析的产出合并,一起在不同层次参与搜索结果相关性的排序过程。

    一淘正在建立一套“用户行为/模型提升”的自循环体系,这其中以用户行为为主、辅以完善模型改进流程和丰富相关平台工具,期望这样可以越来越自动化地、持续地提升相关性效果,更加智能地满足用户的搜索意图。

    与淘宝的关系

    就淘宝目前绝对领先的市场占用率而言,能充分利用好淘宝的站内数据,对一淘来说无疑是很重要、也很幸运的。

    系统架构上讲,一淘有很多大数据量的离线计算任务是在淘宝上千台基于Hadoop的分布式计算平台上完成的, 在其上获取淘宝的商品、交易和用户数据是一件非常便捷的事情,平台强大的计算和存储能力也进一步激发了一淘工程师们的想象力和创造力。比如:一淘首次将淘 宝用户的搜索查询词和直接购买的宝贝相关联,并实现了分钟级别的引擎更新,这为用户们提供了最及时导购风向标。此外,一淘还直接调用了很多线上服务的接 口,例如:宝贝搜索、产品搜索、合并同款等。

    产品服务上讲,一淘是淘宝主站与全网电子商务网站联系的重要纽带。简单地讲,淘宝站内数据(如:产品库、类目 体系)可以保障一淘的导购搜索相关性有非常正向的促进作用;一淘通过Open Search和外网商品信息抓取,也可以为其他电子商务网站带去更多高质量的商业流量;而互联网的商品、资讯、论坛等信息又有助于一淘的搜索结果更全面、 信息更权威;一淘搜索质量的提高反过来可以帮助改善淘宝的用户体验(如:无结果页、购前调研),一淘的用户行为分析和趋势预测也可以作为淘宝运营收集反馈 信息的重要通道。

    结束语

    通过上面的介绍,我们不难理解一淘对于所采用技术的实用性、高效性和扩展性方面都会有业界领先的要求。这其中主要涉及的领域包括:

    • 海量网页的抓取和抽取
    • 分布式存储和计算平台
    • 大规模数据(网页/商品)处理与分析
    • 购物搜索相关性体系
    • 高性能可定制的全文检索引擎
    • 快速响应业务需求的前端架构

    这些技术方向,我们会在今后的Blog中进行进一步的展开、更深入的阐述。


  4. mysql 死锁处理方法以及与索引的关系

    2011 年 04 月 14 日 by admin

    死锁:

    所谓死锁<DeadLock>:

    是指两个或两个以上的进程在执行过程中,

    因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.

    此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.

    表级锁不会产生死锁.所以解决死锁主要还是真对于最常用的InnoDB.

    处理过程

    1. show processlist; 找出死锁的线程id

    2. 然后 kill id

    3.  Show innodb status 查看哪些SQL 造成死锁;

    4. 优化sql 语句;

    分析

    innodb默认采用行级锁, 其实锁定的是使用索引的数据;

    如果一个表中有多个索引在查询和更新时,在编写sql语句时,就要小心了!


  5. RHEL 6五大新特性 效率提升明显

    2011 年 04 月 13 日 by admin

    红帽企业级Linux 6版本是红帽最新发布的一款最成功的数据中心平台,该版本能够提供先进性能的应用程序以及优秀的可扩充性和安全性。通过该版操作系统,你可以轻松的在你的 数据中心上搭载虚拟化和云计算服务,减少实际操作的复杂性、减少实际开销、充分发挥系统的性能。那么目前备受关注的Redhat 企业版Linux 6究竟有哪些新特性呢?

    效率、可扩充性和可靠性

    红帽企业版Linux 6支持更多的插座、内核、线程和内存空间。文件系统任务安排时间表的编排上更注重任务的运行时间、任务的轻重缓急等因素的综合考虑,利用硬件响应和多核拓扑结构优化系统任务的执行和资源分配。

    红帽企业版Linux 6的文件系统默认是ext4(第四扩展文件系统),该版本更加健壮、规模可以拓展到16TB,还包含了可升级到100TB的XFS文件系统。其NFSv4 显著改进了NFSv3的不足,并且是向后兼容的。新的文件系统允许运行在用户空间中,并且用户还可以在基于FUSE 的新文件系统(例如云文件系统)上进行测试和开发。

    在高可用性上,重新设计了基于Conga的Web接口,增加了额外的功能,使用起来更加容易。集群沟通管理系统Corosync技术也更加成熟、稳 定和轻量级。改进后使用的KVM服务器虚拟机可以在物理和虚拟主机故障或者关机状态下管理服务。一个简单的集群指令就可以用来管理不同服务器的日志,并通 过一致的格式来记录事件,具有更高的可读性。

    在电源管理上,红帽企业版Linux 6的内核时钟新的设计技术,可以让系统处于最小系统消耗状态。尽可能的减少了I/O子系统的电源消耗。系统管理员还可以通过控制电流阀值来减少电源的消耗。此外,优化了实时设备的访问也帮助减少文件系统写元数据的能耗开销。

    前所未有的资源管理

    在系统资源的分配上,红帽企业版Linux 6的Cgroups 可以组织系统任务以便进行跟踪,并让其他系统服务可以控制 cgroup 任务可能消耗的资源(分区)。 两个用户空间工具 cgexec 和 cgclassify 提供 cgroup 的简单配置和管理功能。同时在cgroup上应用了内存资源控制器和网络资源控制器,以达到对内存资源和网络流量的限制应用。

    在存储上,红帽企业版Linux 6支持基于SAN的大型存储、自动I/O 校准和自我调整以及扩展了 SCSI 和 ATA 标准和 I/O 提示,允许自动调整和 I/O 校准。

    红帽企业版Linux 6在联网功能上支持IPv6。多队列联网功能改进了处理并行性,让用户可以从多个处理器和 CPU 内核获得更好的性能。 对数据中心桥接的支持包括数据流量优先级和流量控制,以提高服务质量。此外针对数据流量优先级和流量控制,以提高服务质量。

    稳定的应用程序开发与生产平台

    在Web基础架构上主要改进了Apache、Squid和Memcached三个方面的改进,红帽企业版Linux 6支持Apache2.2版本,而Squid的主要是在可管理性和IPv6上性能支持。新版红帽支持Memcached 1.4.4,该版是一个高性能、高度可扩展、分布式、基于内存的对象缓存系统,大大提高了动态 Web 应用程序的速度。

    在Java性 能的支持上,红帽企业 Linux和OpenJDK的紧密集成包括在SystemTap 中支持Java 探测器,从而可支持更好的Java 调试。我们都知道Tomcat 6是运行在Java平台的开源和同类最佳应用服务器。通过支持 Java Servlets 和Java 服务器页面 (JSP),Tomcat 为开发和部署动态 Web 应用程序提供稳定可靠的环境。所以在红帽企业Linux也完善了Tomcat 6的支持。

    此外,红帽企业Linux还在应用程序、数据库PostgreSQL 8.4.4、MySQL 5.1.47和MySQL 5.1.47上也做了多项的调整,在性能上有了大大的还进。

    集成虚拟化

    红帽企业 Linux主要是基于内核的虚拟化,将KVM 管理程序完全集成到内核中,因此所有 RHEL 系统的改善均有利于虚拟化环境。而且该应用程序环境对物理系统和虚拟系统都是一致的。这样用户就可以在主机之间轻松移动虚拟机由此带来的部署灵活性使管理 员可以在非高峰阶段将资源整合到更少的机器,或在维护停机时间释放硬件。

    利用内核的硬件抽象使应用程序能够独立于底层硬件从物理环境转移到虚拟化环境。提高了CPU 和内存可扩展性使每个服务器可容纳更多虚拟机。虚拟技术采用了先进的办虚拟化接口,包括时钟(由空循环内核支持)、中断控制器、自旋锁子系统和 vmchannel 等非传统设备。

    企业可管理性

    红帽企业Linux 6的安装选项已重新整理为“工作负载配置文件”,使每个系统安装都能向特定任务提供合适的软件。基于标准的 Linux 可管理性规范 (SBLIM) 使用基于 Web 的企业管理 (WBEM) 来管理系统。用Dracut 取代了 mkinitrd,最大限度地减少底层硬件改变的影响,更易于维护,并使支持第三方驱动程序更容易。

    改进了打印技术的支持,使得打印机能及时发现来CUPS和system-config-printer 的打印机配置服务。增加基于SNMP 的墨水和碳粉供应水平监控和打印机状态监控简化了监控功能,让用户可以有效地管理墨水和硒鼓库存。

    此外,红帽企业 Linux的Samba改进了包括支持 Windows 2008R2 信任关系:Windows cross-forest、传递信任和单向域信任。允许应用程序使用 OpenChange 来访问使用本地协议的 Microsoft Exchange Server,允许 Evolution 等邮件客户端与 Exchange Server 更紧密地集成。


  6. Navigation »