随笔分类 -  MYSQL

摘要:1. 在手动开启start transaction中,第一个SQL是DML,第二条SQL是DDL,手动执行rollback时,发现rollback无效。原因:在执行第二条DDL完成后会隐式执行commit.所以第一条SQL在这个时候就已经commit了的。最后执行rollbakc自然无效。2. 主从数据不同步解决思路:1. 使用sql_slave_skip_counter让SQL线程跑起来,结果是自然有些表数据不同步。2. 运行pt-table-checksum检查哪些表不同步。3. 运行pt-table-sync,指定--replicate,同步数据。3.查看binlog新方法: show 阅读全文
posted @ 2012-10-18 17:59 雪刚 阅读(200) 评论(0) 推荐(0) 编辑
摘要:版本:pt-table-checksum 2.1.5,pt-table-sync 2.1.5pt-table-checksum与pt-table-sync 这两个工具是双胞胎。pt-table-checksum用来检测主从表数据同步情况。pt-table-sync 就用来对不同步的表数据进行同步。并且,pt-table-sync可以使用到pt-table-checksum执行得到的结果。1 . pt-table-checksum 将检查结果写入一张表checksum中,再比较字段this_crc 与master_cnt的值是否不同。最后输出最终结果如下,DIFFS 显示不为0的就是数据不同步的 阅读全文
posted @ 2012-10-18 17:51 雪刚 阅读(761) 评论(0) 推荐(0) 编辑
摘要:作用是主要用来修改表结构,特点是修改过程中不会造成读写阻塞。原理是新建一张表,并修改新表结构至满足需求。在旧表建触发器,然后将旧表的数据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 雪刚 阅读(368) 评论(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 雪刚 阅读(203) 评论(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 雪刚 阅读(1749) 评论(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 雪刚 阅读(853) 评论(0) 推荐(1) 编辑
摘要:二进制文件是什么 二进制文件就是类似于mysql-bin.000001,mysql-bin.000002这样的文件。在my.cnf配置log-bin指定二进制文件位置与名称及开启二进制文件。二进制文件的作用 我想大家都知道二进制文件的好处,主从数据同步,数据恢复都需要用到二进制文件。开启它会对性能一定影响,官网给的数据是影响1%,不过考虑到主从结构以及非常重要的数据恢复,这点影响完全有必要承受。二进制文件的工作方式 我这里不对日志内部结构做说明,因为这涉及到日志格式。这里我只说明它的基本工作思路。也就是数据是怎么写到日志里面去的。 首先,MySQL会针对每一个事务,向二进制文件写入... 阅读全文
posted @ 2011-12-01 15:43 雪刚 阅读(401) 评论(0) 推荐(0) 编辑
摘要:二进制文件是什么 二进制文件就是类似于mysql-bin.000001,mysql-bin.000002这样的文件。在my.cnf配置log-bin指定二进制文件位置与名称及开启二进制文件。二进制文件的作用 我想大家都知道二进制文件的好处,主从数据同步,数据恢复都需要用到二进制文件。开启它会对性能一定影响,官网给的数据是影响1%,不过考虑到主从结构以及非常重要的数据恢复,这点影响完全有必要承受。二进制文件的工作方式 我这里不对日志内部结构做说明,因为这涉及到日志格式。这里我只说明它的基本工作思路。也就是数据是怎么写到日志里面去的。 首先,MySQL会针对每一个事务,向二进制文件写入... 阅读全文
posted @ 2011-12-01 15:43 雪刚 阅读(401) 评论(0) 推荐(0) 编辑
摘要:弄清楚一样东西,我们需要知道它是什么,它是如何工作的,它有什么作用,它有哪些危害。这一系列,我将尽量按照这种思路来作说明。Innodb 日志缓冲是什么? 它是内存中具有固定大小的内存块。其大小由innodb_log_buffer_size参数设置。 当每个事务提交后,相应的页数据会发生变化,按理说应该将缓冲池中相关的脏页同步到磁盘.idb文件中。但是对于数据库存储服务而言,这些都是随机IO,如果每一个事务commit后都同步到磁盘,这是无法想像的,它的性能会非常的低。因此,事务commit后,MySQL不立即将脏页同步到磁盘上,至于它真正同步的机制,这一章节,我们将不讨论。到这里,我想细心.. 阅读全文
posted @ 2011-11-30 17:47 雪刚 阅读(503) 评论(0) 推荐(0) 编辑
摘要:原文:http://raocl.wordpress.com/2011/01/10/test/ ,官方也有相关文档http://hackmysql.com/mysqlreportguide。不过我还是习惯看中文的。如果对某些中文翻译有疑惑可以对照着看中英文。mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大的帮助。找了一些mysql的资料,发现大多数是关于php+mysql开发的,服务配置基本就是固定的几条。干脆找上mysqlreport的官网,啃下来这篇指南。翻译都是随着我个人的语言习惯,对直接能用mysql命令上看到结果的英文则保留下来。方便 阅读全文
posted @ 2011-09-13 14:39 雪刚 阅读(460) 评论(0) 推荐(0) 编辑
摘要:MYSQL 中的datetime类型,在设计表时允许default null,但有时候需要建索引和其他的原因,需要改成 not null,这个时候就需要注意.1. 刚开始,列UPDATE_TIME datetime default null,如果没有为列设置值,该列为null,2.在表中UPDATE_TIME 列已有数据为null的时候,需要为列UPDATE_TIME 修改成 not null直接运行 alter table tableName modifyUPDATE_TIME datetime not null.这时候,原先为null的列,这时将会改变成'0000-00-00 00 阅读全文
posted @ 2011-09-08 14:10 雪刚 阅读(278) 评论(0) 推荐(0) 编辑
摘要:安装MYSQL已经不是什么新鲜事了,一直都是下载rpm包安装。今天上午在一台内网机器安装的时候,想搞明白它的原理,也记录一下我的心理体会。1:rpm -ivhMySQL-server-5.5.15-1.rhel5.x86_64.rpm这一步安装,是让MYSQL提供服务端服务,主要是在/var/lib/mysql 创建数据目录,以及在/usr/share/mysql有一些my.cnf例子2:rpm -ivhMySQL-client-5.5.15-1.rhel5.x86_64.rpm,主要是在/usr/bin下多了一些客户端工具,比如mysqldump,mysqladmin,mysqlbinlog 阅读全文
posted @ 2011-09-05 09:30 雪刚 阅读(276) 评论(0) 推荐(0) 编辑
摘要:show global 里这两个参数是用来统计联合查询过程中没有利用索引的情况。如果这两个值其中任何一个值不为0,那就应该检查SQL了。使用explian查看SQL的时候,会看到Extra列显示with join buffer.这个时候,MYSQL会为对应线程分配join_buffe_size大小的内存。它是真正的性能杀手,需要格对严肃对待。Sort_merge_passes 表示当需要排序时,在排序缓冲中无法将结果完全存放,则将会基于磁盘创建临时文件进行排序。如果该值较高,则应提高sort_buffer_size大小。最好的办法是找到是由哪些排序SQL造成的。 阅读全文
posted @ 2011-09-02 09:21 雪刚 阅读(993) 评论(0) 推荐(0) 编辑
摘要:mysql 把能够缓存的完整结果集缓存起来。如果查询语句包含任何不确定值的函数,得到的结果集是不确定的或者结果集大小超过了query_cache_limit限制,是不会被缓存的。MYSQL是判断不出一个SQL能否被缓存的,只能判断查询缓存是否有相同的SQL和产生的结果集到底是否能被缓存起来。在解析SQL过程中如果发现SQL语句含有不确定函数,那么就会标记产生的结果集不被缓存。解析过程发生在检查查询缓存之后。如果一张表发生任何改变,关于这张表的所有查询缓存都将失效。即使一些改变并不会改变之前查询的结果集。Mysql 检查缓存命中的方法非常简单,首先执行一次不区分大小写的检查来验证查询是否以字母S 阅读全文
posted @ 2011-08-31 17:56 雪刚 阅读(895) 评论(0) 推荐(0) 编辑
摘要:一般来讲:table_open_cache = max_connections * N ,N代表一个查询中最多打开的表数量。table_definition_cache = 设置足够大。对于open_files_limit,它代表同一时间点能打开的文件数上限,这里有两篇文章:http://www.orczhou.com/index.php/2010/10/mysql-open-file-limit/,http://blog.csdn.net/fbjwying2/article/details/6323897,里面具体的说了open_files_limit与哪些因素有关。我这里只简单说下我的理解 阅读全文
posted @ 2011-08-30 18:00 雪刚 阅读(1892) 评论(0) 推荐(1) 编辑
摘要:show global status like 'Not_flushed_delayed_rows' 是指等待写入insert delay队列的行数。通过这个可以大概看出,当前服务器中执行insert delay操作的情况。 阅读全文
posted @ 2011-08-30 16:59 雪刚 阅读(188) 评论(0) 推荐(0) 编辑
摘要:对于连接数的设置,show variables里有三个参数可以对它进行控制,max_connections与max_user_connections以及max_connect_errors。下面对这三个参数相关描述。max_connections:针对所有的账号所有的客户端并行连接到MYSQL服务的最大并行连接数。简单说是指MYSQL服务能够同时接受的最大并行连接数。max_user_connections : 针对某一个账号的所有客户端并行连接到MYSQL服务的最大并行连接数。简单说是指同一个账号能够同时连接到mysql服务的最大连接数。设置为0表示不限制。max_connect_error 阅读全文
posted @ 2011-08-30 16:52 雪刚 阅读(6326) 评论(0) 推荐(3) 编辑
摘要:Innodb_buffer_pool_pages_data: Innodb buffer pool缓存池中包含数据的页的数目,包括脏页。单位是page。Innodb_buffer_pool_pages_dirty: innodb buffer pool缓存池中脏页的数目。单位是page。Innodb_buffer_pool_pages_flushed: innodb buffer pool缓存池中刷新页请求的数目。单位是page。Innodb_buffer_pool_pages_free: ... 阅读全文
posted @ 2011-08-30 11:58 雪刚 阅读(1282) 评论(0) 推荐(0) 编辑
摘要:原文地址:http://www.chentaoqian.com/archives/587,http://www.chentaoqian.com/archives/590在数据库数据处理中, 缓冲在改善性能方面扮演着很重要的角色, 为了保证性能, innodb 维护了自己的缓冲池。 文章大体介绍一下innodb缓冲区实现和管理策略。在innodb中,需要用到数据页(需要保存到磁盘的数据)均是从这个缓冲池里分配出来的, 因此,可以说,缓冲池在对innodb的性能有很大的影响。几个基本的概念AWE:地址窗口化扩展,允许在 32 位版本的 Windows 操作系统上使用 4 GB 以上的物理内存。最多 阅读全文
posted @ 2011-08-29 17:06 雪刚 阅读(1887) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示