Posts tagged mysql

Transfer 2.0 介绍

23

       Transfer是一个主从多线程同步工具,直接patch在MySQL中。2011年开发完成。于去年的12.12上线,并撑住高峰期主从,保证从库无延迟,使得应用能够直接从从库上读数据。

       对Transfer1.0背景有兴趣的同学可以看我以前的一篇博客

新功能

       Transfer第一版本存在两个可改进的点:单表并发和事务支持。

a)      Transfer2.0支持单表并发,基本原理就是按照更新行的主键id (因此有一个限制是同步的表必须要有主键)。

b)      Transfer2.0支持slave回放主库事务时以事务为单位执行。
(更多…)

mysql.taobao.org对外开放

7

我们的mysql官方网站在这里:http://mysql.taobao.org, 正式对外开放了.
目前介绍了下我们目前在做的工作, 研究方向,以及部分资料可以下载, 后续我们会提供经过生产系统验证的mysql binary下载, 敬请期待!
截屏如下:

玩得开心!

Flash存储设备在淘宝的应用实践(2011年iDevOps系统技术沙龙)

1

MySQL Temporary Table相关问题的探究

12

问题的引入

让我们先来观察几条非常简单的MySQL语句:

mysql> create temporary table tmp(id int, data char(20));
Query OK, 0 rows affected (0.00 sec)

mysql> create table tmp(id int, data char(20));
Query OK, 0 rows affected (0.00 sec)

mysql> drop table tmp;
Query OK, 0 rows affected (0.00 sec)

mysql> drop table tmp;
Query OK, 0 rows affected (0.00 sec)

mysql> drop table tmp;
ERROR 1051 (42S02): Unknown table 'tmp'

这是丁奇提出的引导性的问题,几条语句看似简单,不过接下来我们提出的一连串问题与进
行的研究可都是围绕它们来的!

看到以上语句,你很容易会产生类似于以下的疑问:

1. 上述语句在一个session中先后创建了两个名为’tmp’的table,只不过一个是temporary
table,一个是normal table。问题来了:temporary table为何可以与同名的normal table
共存?

2. 上述语句成功执行了两条DROP TABLE语句,那么每一条语句操作的对象是哪个table呢?
亦即同名的temporary table与normal table之间的优先级关系是如何的?

很好,有了问题就知道了前进的方向!接下来我们就从这两个问题入手,由浅入深,开始我
们的探索之旅吧!
(更多…)

InnoDB的log写入策略及主从同步

3

      ib_logfile是InnoDB的事务日志文件。ib_logfile与bin-log共同控制事务恢复。本文简要说明其写入时机、写入策略, 以及分析系统异常对主从数据一致性的影响。

1、              基本概念 

     a)        ib_logfile文件个数由innodb_log_files_in_group配置决定,若为2,则在datadir目录下有两个文件,命令从0开始,分别为ib_logfile0和ib_logfile1.
(更多…)

在改进mysql主从复制中遇到memroy leak问题

4

最近在做mysql主从复制的改进, 把单线程的SQL thread(mysql的主从复制,只有两个线程,一个是向master要日志,并写入文件,我们叫IO threa,一个线程读日志, 并进行redo,我们叫SQL thread) 改造成多线程.后来经过发现,如果对master压力比较大,slave会落后master比较多,而已性能瓶颈主要在SQL thread.
后来大家编写完成,并通过了功能测试,然后进行压力测试,经过一个晚上发现,内存会张上去, 一个晚上会增加80m,然后第二天用valgrind跑, 发现一点leak都没有,包括reachalbe,感觉奇怪,后来自己再review自己代码,发现new的地方后有对应的delete.后来看我利用的mysql自己代码地方, 发现有如下代码
class Sql_alloc
{ (更多…)

让MySQL支持欧元字符

4

本文说明一下MySQL中不支持欧元字符的原因及解决方法。

1、              问题描述 

在mysql中插入的字符串中若包含欧元字符(€),会发现该字符及以后的字符串都变得不可见。实际上这里并非不可见,而是根本没有进入数据库中。简单描述步骤如下:

root@test 05:15:41>create table t(c char(32)) engine=innodb charset=gbk;

Query OK, 0 rows affected (0.01 sec)

root@test 05:16:29>insert into t values(concat(‘a’, char(128), ‘b’));

Query OK, 1 row affected, 1 warning (0.00 sec)

root@test 05:17:04>select * from t;
(更多…)

在information_schema中“创建”和维护表

2

Information_schema是MySQL自带的信息数据库。里面的“表”保存着服务器当前的实时信息。

最近实现的一个patch,是要在数据库中增加一个统计, 统计结果以表的形式呈现,因此必须在information_schema库中增加一个表,需要了解这些表的存在形式,以及“维护数据”的方式。

本文描述information_schema库中表的存在形式,访问时的调用方法,以及在该库中增加一个表需要的修改点。

1、              特殊的库、特殊的表 

稍微试验下会发现,这个库与其他的数据库不同,体现为以下几点:

a)        这个库中,不能创建表,所有的DDL语句都被提示”Access denied”

b)        这些“表”都是只读的。

(更多…)

mysql无法正常关闭问题追查

4

 

本文的追查过程来源于某次mysql无法正常关闭。

1、复现

第一次出现时环境比较复杂,多次试验后发现,如下过程能够稳定复现。

a)      系统环境

gcc版本

Using built-in specs.
(更多…)

Go to Top