2009年12月16日 谭俊青 没有评论

  MySQL 5.5第一个版本释出,基于MySQL5.4,性能相对于当前MySQL5.0、5.1有很大的提升,更让人可喜的是MySQL5.5内置了Google的半同步(semi-sync-replication)补丁,以此可以搭建一个相对来说比较完美的MySQL高可用方案,之前我已经在“MySQL新版(5.x)及特性”中提到过,很是让人期待!

MySQL半同步流程设计图

MySQL半同步流程设计图

半同步的配置很简单:

master  > INSTALL PLUGIN rpl_semi_sync_master SONAME ‘libsemisync_master.so’;
slave-x > INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘libsemisync_slave.so’;

master  > SET GLOBAL rpl_semi_sync_master_enabled=1;
slave-x > SET GLOBAL rpl_semi_sync_slave_enabled=1;

对于半同步需要说明的是:
1:不需要所有的slave都确认接收到复制事件
2:slave确认并不是表示执行完成
3:如果slave没有跟上同步设置将被中断继续原来的异步模式直到跟上再重新开启

注意:当前MySQL5.4, MySQL5.5都还不是GA版本,生产环境请慎重选择,升级前也请备份好数据。

分类: MySQL HA, MySQL Replication 标签:
2009年12月4日 谭俊青 没有评论

  MySQL 5.1.42 预计在今年(2009)12月18日发布,其中会包含最新的Innodb Plugin。新的InnoDB Plugin在除了支持Data compression和Fast index create特性之外,兼容之前的表空间,并加入了大量Google的patch,极大的提高了Innodb的性能

MySQL 5.4 GA 预计可能在明年夏季,roadmap如下图:
milestone_release_2

MySQL 5.5 会加入Google semi-replication patch,Google原链接

MySQL Cluster Manager 加入自动管理功能,不过应该会收费。

———————————————-
这几天去fetion看了他们的DB,服务器奢侈(可能穷惯了),性能也很强劲30k+的QPS。不过构架有些问题,以后我想应该会改;另外还去了现场帮客户解决问题。至此来北京的计划全部打乱。下次一定提前安排,组织一次MySQL实验室聚会。

2009年12月2日 谭俊青 没有评论

geographic-replication-deep-dive(PDF)下载

其中异构复制的时候有些技巧,比如 不同的mysqld只复制一部分表,从而避免延时的出现。

2009年11月26日 谭俊青 没有评论

gearman_stack

上面是Gearman的一个角色功能图,它在整个系统体系里面担任中间代理人的作用,负责接收和分配任务并返回结果。这样它能很好的胶合各个子系统从而实现项目目标。

之所以介绍这个,我是想将它用到MySQL的监控管理备份平台上,DB服务器上运行worker daemon连接到管理节点上,这样需要对DB进行动作的时候,只要在管理节点上通过gearman下达任务即可,而且不同的地方可以用最合适的语言去实现,实现开发效率和运行效率的平衡和统一。开发人员能给我们带来这么好的东东,实乃大幸。Gearman可用的地方非常多,它在一定程度上开阔了人的思路,提供了一个相对通用的解决方案。

----------     ----------     ----------     ----------
| Client |     | Client |     | Client |     | Client |
----------     ----------     ----------     ----------
     \             /              \             /
      \           /                \           /
      --------------               --------------
      | Job Server |               | Job Server |
      --------------               --------------
            |                            |
    ----------------------------------------------
    |              |              |              |
----------     ----------     ----------     ----------
| Worker |     | Worker |     | Worker |     | Worker |
----------     ----------     ----------     ----------

Gearman的官方网站在这里

分类: C, MySQL, news / tools 标签:
2009年11月22日 谭俊青 没有评论

2009-11-19 02:00 (+8:00) 的web presentation,里面介绍了InfiniDB(基于列的事务存储引擎)
Building High-Performance MySQL Query Systems and Analytic Applications PPT下载(PDF)

分类: MySQL, news / tools 标签:
2009年9月25日 谭俊青 1 条评论

前段时间看innodb plugin源码的时候,看到有如下一段
include/univ.i

/* The 2-logarithm of UNIV_PAGE_SIZE: */
#define UNIV_PAGE_SIZE_SHIFT    14
/* The universal page size of the database */
#define UNIV_PAGE_SIZE          (1 << UNIV_PAGE_SIZE_SHIFT)

/* Maximum number of parallel threads in a parallelized operation */
#define UNIV_MAX_PARALLELISM    32

尝试将 UNIV_PAGE_SIZE_SHIFT 改成13 (相当于page size为8K),编译通过并可以正常使用。
后来找到Google的MySQL团队发表的一篇文章,文中的介绍 Innodb page size 可以选择 8K、 16K、 32K、 64K。不过因为Innodb每个page都有不小的冗余空间,从空间和内存利用的角度来讲,page size越大越好。但是从checkpoint的角度来讲恰恰相反,page size越小,性能越好(上次演讲的时候我介绍过原理)。所以最后选择多大的page size可以根据实际的业务测试而定。

分类: C, MySQL Innodb 标签:
2009年9月10日 谭俊青 10 条评论

昨天(2009-9-9)参加了sun的培训日活动,一到会场我就后悔了,因为我没想到会议有那么正式,而我穿着有点不修边幅… 活动是成功的,因为我以为周三可能去的人不会太多,想不到会场会满座,虽然有比较浓重的广告味道,也不乏技术交流的气氛。我讲的主题是 《Innodb Optimization How and Why》,从原理上剖析innodb的性能及优化,怎么优化,为什么要这么优化。随后Q/A环节大家都很活跃,由于时间问题没能回答所有朋友的问题,如果有什么疑问可以发我email或者qq,msn交流,我很乐意跟大家讨论。 PPT下载

2009-09-09 Sun MySQL Day

2009-09-09 Sun MySQL Day Q&A 现场

分类: MySQL 标签:
2009年8月13日 谭俊青 7 条评论

InnoDB Plugin 1.0.4 这次加入了不少第三方的代码,个人比较在意的是 Google 和 Percona 提供的部分。Innodb从而实现了性能上很大的提升,不想以前在并发稍大(比如>8),吞吐量升值会下将,现在却又很大的提升。

个人关注的改进部分有:

1: Multiple Background Threads

最初由Google提供的补丁,参数 innodb_file_io_threads 可以设置io threads的数量,之前是假的…

2:Master Thread I/O Capacity Tuning

之前innodb在代码里面写死了 innodb_io_capacity 为100,但是现在db服务器很多都是用多块硬盘做raid10,IOPS 一般都远不止100,因此这次改进之后  innodb_io_capacity 变成可以动态调整的参数,用于DBA选择一个合适的值。

3:Group Commit

这个据说以前4.x之前就支持的,现在又回来了,支持多个事务同时提交(主要是redo log,之前是因为binlog的2-phase commit protocal的原因中止的),从而提高吞吐量。

4:Adaptive Flushing

这个非常有用,大家知道在脏数据到达设置的阀值比例之后,会开始主动做checkpoint,当checkpoint无可避免的时候,这时候会堵塞用户线程,从而出现性能的突然下降。现在这个问题得到巧妙的解决,会根据算法动态的调整checkpoint的速率,避免出现性能的突然降低。

REFERENCE:

http://www.innodb.com/wp/2009/08/11/innodb-plugin-104-released/

http://www.innodb.com/wp/products/innodb_plugin/license/third-party-contributions-in-innodb-plugin-1-0-4/

分类: MySQL, MySQL Innodb 标签:
2009年8月5日 谭俊青 9 条评论

Yasufumi 提供了一个用户在innodb crash后快速恢复的补丁

如果最后该补丁能够纳入官方体系,那么Innodb将在性能上又有很大的提升。

上次MySQL中文实验室的聚会中介绍了buffer大小,redo log大小,checkpoint对性能的影响。那么如果大的redo log能在crash后快速回复的话,我们可以将redo log设置到最大,这样可以尽可能降低checkpoint的次数,来提升数据库的性能。

再者还可以将redo log 4G的限制从源码上解决,从而适应现在动则上10G的buffer。

分类: MySQL Innodb 标签:
2009年7月27日 谭俊青 6 条评论

2009-07-25 也就是上周六,MySQL中文实验第一次聚会成功举办

这次从原理和结构上剖析innodb的组成和工作机制,从而让大家清晰的认识到要怎么优化,为什么要如此优化。

到场的朋友主要来自上海和杭州。同时感谢爱可生公司提供投影仪和小礼品。

PS: 这次聚会我个人犯了些错误,没有提前找大家确认,有几位报名的朋友没到,不过额外增加了几个新面孔,还有几位美女。

分类: MySQL 标签:
2009年7月2日 谭俊青 没有评论

mysql 分区表没有全局索引 by ivan
因此表分区要求涉及的列都包含在pk和uk里面
这样就可以保证插入和更新的值在某个分区里是唯一的时候,那么全局就一定是唯一的

但是带来的问题是,如果一张表有2列唯一索引的时候,这表就没法分区了。

关键字:表分区,分区表,primary key主键,unique key 唯一索引

————————————————

本人并没有去看这部分源码,以上结论纯属推理得出。

分类: MySQL 标签:
2009年6月18日 谭俊青 4 条评论

因为线上某个应用表分区太多,直接导致遍历表或者dump数据的时候导致内存耗尽死机。原因是Innodb的数据字典不会释放内存,会将所有表和分区的信息记录在内存当中,当表数量或者分区数到达一定数量之后(经验值:约10万张表或者10万个表分区,占用将近1G大小的内存),会导致内存耗尽。

my.cnf 配置参数: innodb_additional_mem_pool_size

查看数据字典使用多少内存:

SHOW engine innodb STATUS\G

Dictionary memory allocated xxxxxxx

针对这种情况,Vadim提供了一个限制数据字典占用内存大小(Limiting InnoDB Data Dictionary)的补丁,用来限制数据字典占用内存的大小,采用LRU淘汰算法,只保留最新使用的表信息。

分类: MySQL 标签:
2009年5月31日 谭俊青 没有评论

下载地址: http://google-mysql-tools.googlecode.com/svn/trunk/mysql-patches/all.v4-mysql-5.0.37.patch.gz

Features


  • displays more data in SHOW INNODB STATUS and SHOW STATUS including per-file IO statistics
  • uses less CPU while processing background IO requests
  • enforces innodb_max_dirty_pages_pct
  • prevents the insert buffer from getting full (and becoming useless)
  • changes the main background IO thread to be simpler and use more asynchronous IO
  • adds many my.cnf variables
  • Reimplements adaptive checkpoints as first described by Percona
  • Changes the computation of the percentage of dirty buffer pool pages. Before this change the percentage exluded pages borrowed from the buffer pool for other uses. While that may be more accurate, it also requires the caller to lock/unlock a hot mutex. It also made the percentage vary a bit too much as the insert buffer grew and shrank. The v4 patch doesn’t exclude the borrowed pages. As most of the borrowed pages should be used in the insert buffer and the insert buffer should be smaller (thanks to ibuf_max_pct_of_buffer), this is probably a good thing.


Performance


分类: MySQL, MySQL HA 标签:
2009年5月31日 谭俊青 没有评论

原文:http://blogs.sun.com/realneel/entry/inniostat_innodb_io_statistics

文中工具用到solaris下的dtrace数据,因此linux下不能使用.

例子:

#./inniostat -h
Usage: inniostat [-h] [-d] [-p pid] [interval]
                 -h : Print this message
                 -p : MySQL PID
                 -d : Dump dtrace script being used

# ./inniostat
 __physical__  ___Innodb___ ____read____     ______write______
   r/s    w/s    r/s    w/s   data    pre    log dblbuf dflush     Time
    24    121     24     50     24      0     50      0      0 16:00:57
    26    130     26     51     26      0     51      0      0 16:00:58
    18    134     18     54     18      0     54      0      0 16:00:59
    25    129     25     51     25      0     51      0      0 16:01:00
    29    116     46     47     17     29     47      0      0 16:01:01
    10    140     10    132     10      0     52      0     80 16:01:02
    29    129     35     53     14     21     53      0      0 16:01:03
Col Description
r/s Physical (Actual) reads per sec
w/s Physical (Actual) writes per sec
r/s Reads issued by Innodb per sec
w/s Writes issued by Innodb per sec
data Regular Reads issued by Innodb to the datafiles per sec
pre Prefetch Reads issued by Innodb to the datafiles per sec
log Log writes issued by Innodb per sec
dblbuf Double buffer writes per sec
dflush Writes due to flushing of Innodb buffers to disk.
分类: news / tools 标签:
2009年5月25日 谭俊青 没有评论

来源: http://lists.mysql.com/packagers/418

MySQL 6.0.11-alpha, a new version of the MySQL database system has been
released.  The main page for MySQL 6.0 release is at

  http://www.mysql.com/mysql60/

6.0.11 will be the last release of 6.0.  After this we will be
transitioning into a New Release Model for the MySQL Server

  http://forge.mysql.com/wiki/Development_Cycle

The goal of this transition is to enable more frequent and timely
releases of the MySQL Server.
希望新的Release Model能给mysql带来更大的活力。
分类: MySQL 标签:
Pages: Prev 1 2 3 4 5 6 7 Next