MySQL高级技术

利用MySQL Cluster 7.0 + LVS 搭建高可用环境

目录:

1、前言


随着数据量规模的扩大,企业对 MySQL 的要求就不仅仅是能用了,也在寻求各种高可用方案。以前我们的大部分高可用方案其实还存在一定缺陷,例如 MySQL Replication 方案,Master 是否存活检测需要一定时间,而和 Slave 的切换也需要时间,因此其高可用程度较大依赖监控软件或自动化管理工具。而早先的 MySQL Cluster 实在不能令人满意,性能差的不行,也让我们的期待一次次落空。本次 MySQL Cluster 7.0 的推出,终于实现了质的飞跃,性能上得到了很大提高。MySQL Cluster 7.0 新特性主要体现在以下几个方面:

  • 数据节点多线程
  • 可以在线增加节点
  • 大记录存取改进
  • 支持windows平台

本身MySQL Cluster已经实现了高可用,不过由于SQL节点无法对外部负载均衡,因此我们采用 LVS 来实现这一需求。

[MySQL优化案例]系列 -- 在5.1的分区功能中混用InnoDB和MyISAM

MySQL 5.1中增加了分区(partition)功能,有了这个功能,以前很头疼的分表方案,现在就变得不再那么麻烦了。不过,如果采用了MyISAM引擎,而且在数据量较大的情境下,并发读写仍然是个问题,尤其是对索引的更新。为此,可以在分区表中采用MyISAM和InnoDB引擎混用的方法,大致如下:

InnoDB数据表空间文件平滑迁移

前言

InnoDB存储引擎满足了MVCC和ACID特性,在需要支持事务的环境下必不可少。有些环境下,采用InnoDB可能效果比MyISAM还要来的好。不过,在很多人眼中看来,InnoDB表空间文件由于无法实现跨服务器平滑迁移,因此不愿意使用。实际情况真是这样吗?本文就来探讨一下InnoDB表空间文件的平滑迁移可能性。

如何迁移?

从MySQL文档中我们了解到,InnoDB的表空间可以是共享的或独立的。如果是共享表空间,则所有的表空间都放在一个文件里:ibdata1,ibdata2..ibdataN,这种情况下,目前应该还没办法实现表空间的迁移,除非完全迁移,因此不在本次讨论之列;我们只讨论独立表空间的情况。

[InnoDB系列] - InnoDB Buffer Pool保存和还原补丁

参考文章:Making MySQL more usable: InnoDB save/restore buffer pool patch
Jeremy Cole同学写了个补丁,用于将InnoDB 缓冲池(buffer pool)里的列表在关闭mysqld时保存到本地文件中,重启启动时再加载到内存中去。该补丁目前只适用于MySQL 5.1版本。作者计划该补丁至少应具备以下几点要求:

  • 可以自定义本地文件名
  • 可以在启动时自主选择是否需要加载到内存中
  • 支持在接受用户请求前先加载一部分,剩下的可以放到后台进程中继续加载

MySQL 微秒慢查询补丁

原文出自:The new cool MySQL patch has landed! Check your queries performance!,本文做只部分翻译。

MySQL微秒慢查询(microtime slow query)补丁包具有以下特色:

  • 识别连接

  • 每个慢查询结果中都记录了是哪个连接线程引起的,如下:

    # Thread_id: 571
    

[深入理解MySQL系列] - sort_buffer

注:本系列文章主要探讨 MySQL 内存利用以及执行计划相关的一些知识点,从而为 MySQL 优化打下更好的基础。

环境说明

OS: AS4U6, 2.6.9-67.0.15.ELsmp, 16G Ram, MD3000阵列, xfs文件系统
MySQL 5.1.26 - percona(innodb plugin, innodb stat, user stat, msl, show patch, acc-pslist 补丁)

[InnoDB系列] - InnoDB VS PBXT实测

1、前言

PBXTPrimeBase 公司推出的MySQL插件引擎,其功能和 InnoDB 类似,主要特性如下:

  • MVCC Support:
    MVCC stands for Multi-version Concurrency Control. MVCC allows reading the database without locking.
  • Fully ACID complient:
    This means that transactionally safe, and able to handle multiple concurrent transactions.
  • Row-level locking:
    When updating, PBXT uses row-level locking. Row-level locking is also used during SELECT FOR UPDATE.
  • Fast Rollback and Recovery:
    PBXT
    uses a specialized method to identify garbage which makes "undo"
    unncessary. This make both rollback of transactions and recovery after
    restart very fast.
  • Deadlock Detection:
    PBXT identifies all kinds of deadlocks immediately.
  • Write-once:
    PBXT
    uses a log-based storage which makes it possible to write transactional
    data directly to the database, without first being writen to the
    transaction log.
  • Referential Integrity:
    PBXT supports foreign key definitions, including cascaded updates and deletes.
  • BLOB streaming:
    In combination with the BLOB Streaming engine PBXT can stream binary and media directly in and out of the database.

[InnoDB系列] - 实例解析Innodb的隔离级别以及锁模式

1、隔离级别为:READ COMMITTED

 

READ COMMITTED

一个有些象Oracle的隔离级别。所有SELECT ... FOR UPDATE和SELECT ... LOCK IN SHARE
MOD语句仅锁定索引记录,而不锁定记录前的间隙,因而允许随意紧挨着已锁定的记录插入新记录。UPDATE和DELETE语句使用一个带唯一搜索条件的唯一的索引仅锁定找到的索引记录,而不包括记录前的间隙。在范围类型UPDATE和DELETE语句,InnoDB必须对范围覆盖的间隙设置next-key锁定或间隙锁定以及其它用户做的块插入。这是很必要的,因为要让MySQL复制和恢复起作用,“幽灵行”必须被阻止掉。

实测Raid5 VS Raid1+0下的innodb性能

声明:本文拒绝任何形式的转载,如有违者,将保留追究权利!

1、说明

硬件:
Raid 5: DELL 2950, 8G RAM, 3块SEAGATE SAS 140G 盘构成
Raid 1+0: DELL 2950, 8G RAM, 4块SEAGATE SAS 140G 盘构成

软件:

Red Hat Enterprise Linux AS release 4 (Nahant Update 6)
Linux imysql.cn 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:58:43 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux

mysql 5.0.45

sysbench-0.4.8

innodb主要相关参数:

聚合内容