- 浏览: 799249 次
- 性别:
- 来自: 杭州
-
最新评论
-
137578346:
...
各版本MySQL并行复制的实现及优缺点 -
db_code_peon:
引用而这个“调整”,也不是简单的指针重赋,而是将这个page ...
MySQL源码学习:简述InnoDB的BP LRU策略 -
xtha21:
预申请ID的个数为:大于批量插入记录数的最近一个2的指数值再- ...
MySQL源码学习:innodb_autoinc_lock_mode 下自增id不连续的原因 -
lc15808798846:
奇哥好试了下,好像这个问题在5.7 已经不存在了,SQL不会h ...
autocommit=0引起的业务hang住 -
wangliushui:
Transfer 怎样保证事物的一致性,一个事物关联多个表的 ...
MySQL-Transfer2.2发布
文章列表
这次单独调查一下主从延迟的时间。这里说的主从延迟,并不是指“从库更新性能跟不上主库”, 而是“一个命令从主库更新完成到从库更新完成的延迟时间。
基本流程:
对于每一个连上来的从库,主库都有一个client线程与之对应。
先看主从的基本数据流
1、客户端SQL更新命令
2、主库执行
今天有同事问show variables 中的report_port 是什么意思:"明明端口是设置成3307,为什么这还写着3306"。简单写下。
1、作用
在主从环境下,我们可以用show slave status看当前从库连接的主库信息,若反过来,主库要看当前是有哪些从库连着自己呢?
2、Show slave hosts命令
背景说明
mysqldump这个工具用于导出数据,若要导出整个表,语法是 bin/mysqldump db t1;
也可以通过—where 指定查询条件 bin/mysqldump db t1 –where=’id=1’.
新需求
有这种需求,这个查询条件需要join另外一个表。比如导出的逻辑需要的是 (1) select t1.* from t1, t2 where t1.f1=t2.f1 and t2.f2=n;
背景知识1:
在主从库维护中,有时候需要跳过某个无法执行的命令,需要在slave处于stop状态下,执行 set global sql_slave_skip_counter=N以跳过命令。常用的且不易用错的是N=1的情况,但N>1时,则不那么顾名思义,本文详细介绍N的意义,及使用注意事项。
背景知识
大家都知道 replicate-wild-do-table可以配置只同步部分表,由于其支持通佩符,带来便利。但也存在一些风险。
问题描述:
假设M、S两个MySQL Server, S设置为M的从库,且设置replicate-wild-do-table=test.a%.
此时在M库按照如下顺序操作:
先说一下这里“跨库”的意思:当前use的是db1, 仍可以使用select * from db2.table1来访问table1表。
这样使得我们需要访问同一个MySQL下的其他表时不需要多一次use,也使得多个库间的表join这样的操作成为可能。
1、 ...
上一篇提出了一种改进主从延迟的方案。虽然能够实现主从无延迟同步,但在维护上比较复杂,还存在网络消耗问题,这里是一个改进的版本。
一、之前方案简述及问题分析
方案如图。其中用多个MySQL充当transfer的角色。每个transfer负责同步master的一部分表。在我的试验中有8个transfer,也就是有8个MySQL实例。
今天写个稍微复杂一点点的存储过程碰到两个容易忽略的点分享一下。如果有筒子刚好碰到相同的问题可以少再纠结一下, 木有啥技术含量的。。。
1、一个存储过程使用游标的例子
假设很简单的一个要求:从t表里面遍历出f,然后再到t2表中查找符合条件的记录打出来。
declare stopFlag int;
一、问题起源
MySQL的主从同步一直有从库延迟的问题,背景资料网上很多,原因简单描述如下:
1、 MySQL从库上有一个IO线程负责从主库取binlog到写到本地。另外有一个SQL线程负责执行这些本地日志,实现命令重放;
2、 正常网络状况下IO线程没有性能问题(这个待会会用到),问题是SQL线程只有一个,更新速度跟不上。所以经常会看到从库的CPU idle很高,但同步性能就是上不去。
前天同事问了个问题,今天又再翻了下group commit。关于这个话题Kristian Nielsen有一个很详尽的系列文章(http://kristiannielsen.livejournal.com/12254.html), 有四个页面,文中有链接。这里列出一些细节,主要是对上面文章补充一下。
Q:什么是group commit。
A:1) 简单说就是:好几个线程写文件,然后一个线程fsync;
2) 只有事务日志(ib_logfile)用到;
同事问了个线上现象:主备机器配置一样,主库上有更新查询,备库设置为主库的从库,没有其他更新和查询压力。但备库的io util比主库的重。本来看主库的压力比较大,想把一部分查询切到备库,一看io这样,不太敢切。
1、原因
这个原因两年前在之前公司碰到过一次,只是现象不同。那个现象描述起来比较复杂,这回刚好借这个现象说明一下。
原因还是从srv_master_thread说起。这个InnoDB后台的主进程一直在循环作各种事情。其中有一个for (i = 0; i < 10; i++) ,循环体每执行一次sleep 1秒,作一些flush和
今天刚刚知道Oracle有个索引统计的功能,可以统计每个索引的使用次数。作为一个Oracle的门外汉,我还是再次感叹人家做的是真细致。第二个想法就是给MySQL也加上。
Percona版本的information_schema.innodb_index_stats 已经有索引的统计信息,我们就在巨人的肩膀上踩一脚了。
先来看下原来的表结构。
CREATE TEMPORARY TABLE `INNODB_IN
最近在一个项目中DBA同学问了一个问题:为什么很多慢查询日志中显示 Rows_examined : 0?
需要说明的是, 这类慢查询语句都是类似 select count(*) from (…)t;
在说明这个问题之前,我们先指出两个相关背景:
1、MySQL的临时表,都是MyISAM的。
2、MyISAM表中的记录总数是额外存储的,
昨天一位同事问到一个问题,他的MySQL中导入数据的时候,发现唯一索引冲突,原因是有两行记录,区别只是有一条记录多了最后的一个空格。 希望有方法将他们设置不同。
复现:
CREATE TABLE `t` ( `c` varchar(20) NOT NULL DEFAULT '', PRIMARY KEY (`c`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;
insert into t(c) values("A");
insert into t(c) values("A &q ...
项目中碰到一个bug,需要将MySQL表中的数据导出,字段中间用逗号隔开。
1、复现
步骤:
版本 5.1.48
a) 准备数据
CREATE TABLE `test` (