摘要:作用是主要用来修改表结构,特点是修改过程中不会造成读写阻塞。原理是新建一张表,并修改新表结构至满足需求。在旧表建触发器,然后将旧表的数据copy到新表中。最后删除旧表,再将新表重命名成旧表。在copy数据的时候,如果旧表的数据发生改变,会通过触发器把更改映射到新表中。使用:Usage: pt-online-schema-change [OPTIONS] DSN ,详细查看pt-online-schema-change --help例子:pt-online-schema-change -u root -p rongzhongpwd --alter='engine=innodb' 阅读全文
posted @ 2012-10-16 10:48 雪刚 阅读(314) 评论(0) 推荐(0) 编辑
摘要:简介:percona-toolkit 是一堆工具集。对DBA来说非常有帮助。安装起来非常方便,简单安装后,工具集内所有工具都可以使用。正所谓简洁而不简单。percona-toolkit 包下载地址:http://www.percona.com/redir/downloads/percona-toolkit/2.1.5/percona-toolkit-2.1.5.tar.gz1 . 解压后,会有个README文件。里面详解安装过程 To install all tools, run: perl Makefile.PL make make test make inst... 阅读全文
posted @ 2012-10-16 10:31 雪刚 阅读(135) 评论(0) 推荐(0) 编辑
摘要:表A lefttable,表B righttableleft join: 与right join 相类似,反之亦然。1. select lefttable.*,righttable.* from lefttable left join righttable on lefttable.id = righttable.id and righttable.name = "xxx" where lefttable.name = "XXX";2. select lefttable.*,righttable.* from lefttableleft joinrigh 阅读全文
posted @ 2012-04-13 18:07 雪刚 阅读(233) 评论(0) 推荐(0) 编辑
摘要:前提:现在有主从结构,主库没有配置持久化,从库配置AOF。场景1:哪一天主库突然宕了,怎么办?非常危险的动作:重新启动主库。要知道这样一来,最坏情况数据将全部丢失。因为主库没有配置持久化,所以主库的data目录只有从库连接主库请求resync的时候做快照留下来的dump.rdb文件。如果重启主库,主库会按照data目录下的dump.rdb来恢复数据。因此,如果从库是从最开始就配置好了的而且没有发生过再次请求resync,那么此时的dump.rdb将是空的。主库按照空的dump.rdb恢复数据,自然数据全无,从库发现主库能够连接上时会自动请求resync,从库也将拷贝一份空白的数据。这个时候怎么 阅读全文
posted @ 2012-02-21 16:18 雪刚 阅读(5830) 评论(2) 推荐(3) 编辑
摘要:研读infoQ上《Redis复制与可扩展集群搭建》(http://www.infoq.com/cn/articles/tq-redis-copy-build-scalable-cluster)后,思考后,写下这篇看后感。文章主要写了四点,1. 对现有的Redis主从复制缺陷的思考,以及提出的主动复制解决思路。2. 对动态扩容的思考3. Redis复制改进思路4. Redis与MySQL整合思路在下只对1,2,4这三点说下感受。针对第一点,目前我们知道Redis主从的实现,以及持久化的实现还不是非常完美。文章也说了持久化虽然有三种形式:快照,AOF以及VM,但是相对较好的只有 快照与AOF。主从 阅读全文
posted @ 2012-02-21 14:57 雪刚 阅读(1440) 评论(0) 推荐(0) 编辑
摘要:说起来,布署调试系统之前试过两次,到后来都因为没坚持下来而半途作费。这次终于成功了。(1) 为了少走弯路,建议下载5.1.x版本。 网上关于在win32系统布署调试环境的贴子本来就少,官网的资料也都是英文,对于不习惯看英文的人可算是折磨。并且,就那么少的贴子说的内容说的还是5.1.x版本的办法(我事后才知道),对于习惯下载最新版人的人来说,算是一头雾水,因为刚开始要用win目录下的configure.js文件,而5.5.x版本并没有这个文件。还以为自己下错版本了。所以,建议第一次想研读源码的人最好下载5.1.x版本的源码。我这里给个地址。http://dev.mysql.com/get/Do. 阅读全文
posted @ 2011-12-20 14:40 雪刚 阅读(1485) 评论(3) 推荐(0) 编辑
摘要:本文主要是通过阅读姜承尧先生的《MySQL技术内幕》,从中了解到master thread的工作原理。我主要写下自己的学习笔记,好记忆不如烂笔头。 master thread可以分为主循环(loop),background循环,flush循环,suspend循环。可以这么理解,先运行主循环,如果当前数据库空闲,或者调用stop关闭命令时,进入background循环,在background循环最后,如果当前数据库不再空闲,就重新进入主循环,否则进入flush循环。在flush循环最后,如果数据库还是空闲就进入suspend循环,master thread挂起。 主循环分成两部分,一部分... 阅读全文
posted @ 2011-12-02 14:45 雪刚 阅读(718) 评论(0) 推荐(1) 编辑
摘要:二进制文件是什么 二进制文件就是类似于mysql-bin.000001,mysql-bin.000002这样的文件。在my.cnf配置log-bin指定二进制文件位置与名称及开启二进制文件。二进制文件的作用 我想大家都知道二进制文件的好处,主从数据同步,数据恢复都需要用到二进制文件。开启它会对性能一定影响,官网给的数据是影响1%,不过考虑到主从结构以及非常重要的数据恢复,这点影响完全有必要承受。二进制文件的工作方式 我这里不对日志内部结构做说明,因为这涉及到日志格式。这里我只说明它的基本工作思路。也就是数据是怎么写到日志里面去的。 首先,MySQL会针对每一个事务,向二进制文件写入... 阅读全文
posted @ 2011-12-01 15:43 雪刚 阅读(306) 评论(0) 推荐(0) 编辑
摘要:弄清楚一样东西,我们需要知道它是什么,它是如何工作的,它有什么作用,它有哪些危害。这一系列,我将尽量按照这种思路来作说明。Innodb 日志缓冲是什么? 它是内存中具有固定大小的内存块。其大小由innodb_log_buffer_size参数设置。 当每个事务提交后,相应的页数据会发生变化,按理说应该将缓冲池中相关的脏页同步到磁盘.idb文件中。但是对于数据库存储服务而言,这些都是随机IO,如果每一个事务commit后都同步到磁盘,这是无法想像的,它的性能会非常的低。因此,事务commit后,MySQL不立即将脏页同步到磁盘上,至于它真正同步的机制,这一章节,我们将不讨论。到这里,我想细心.. 阅读全文
posted @ 2011-11-30 17:47 雪刚 阅读(432) 评论(0) 推荐(0) 编辑
摘要:Redis处理的速度很快,因为它是基于内存的。在内存能够足够容纳数据的时候,所有的数据都存放在内存。这个时候不论是读取数据还是写入数据都是非常快的。但是如果数据量很大,大到内存已经无法全部容纳的时候,我想对存储有一定了解的人都在想,这个时候redis是怎么处理的呢?处理速度是否会直线下降? 幸亏,答案是否定的。Redis使用到了VM,在redis.conf设置vm-enabled yes 即开启VM功能。 通过VM功能可以实现冷热数据分离。使热数据仍在内存中,冷数据保存到磁盘。这样就可以避免因为内存不足而造成访问速度下降的问题。在这里,需要特别提到的是,Redis并没有使用OS提供的Sw... 阅读全文
posted @ 2011-11-16 10:58 雪刚 阅读(3396) 评论(0) 推荐(0) 编辑