(转)innodb_doublewrite_file
原文:http://www.orczhou.com/index.php/2010/02/innodb-double-write/记得刚开始看InnoDB文档的时候,Double Write一节(其实只有一小段)就让我很困惑。无奈当时内力太浅,纠缠了很久也没弄明白。时隔几个月,重新来整理一下。涉及到的概念:Buffer Pool简称BP,Dirty Page,Log file,Flush,innodb tablespace。1. 什么是Double Write在InnoDB将BP中的Dirty Page刷(flush)到磁盘上时,首先会将Page刷到InnoDB tablespace的一个区域中,我们称该区域为Double write Buffer。在向Double write Buffer写入成功后,再择机将数据拷贝
HandlerSocket安装记录
HandlerSocket[@more@]tar zxvf ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-23-g4cfc840.tar.gzcd ahiguti-HandlerSocket-Plugin-for-MySQL-4cfc840./autogen.shYou should add the contents of `/usr/share/aclocal/libtool.m4' to `aclocal.m4'.cat /usr/share/aclocal/libtool.m4 >> aclocal.m4./configure --with-mysql-source=/root/Percona-Server --with-mysql-bindir=/usr/local/Percona-Server-5.1.51-rel11.5-132-Linux-x86_64/bin --with-mysql-plugindir=/usr/local/Percona-Server-5.1.51-rel11.5-132-Linux-x86_6
MySQL存储过程中的sql_mode问题
在my.cnf中设置了sql_mode='STRICT_TRANS_TABLES';却发现还是有非法数据的写入,比如无符号整数字段本来值是0,还可以减,结果当然溢出了,经检查发现存储过程中默认的sql_mode并没有使用global的sql_mode,测试如下:CREATE PROCEDURE p_test()BEGIN select @@session.sql_mode,@@global.sql_mode;END;call p_test();+--------------------+---------------------+| @@session.sql_mode | @@global.sql_mode |+--------------------+---------------------+| | STRICT_TRANS_TABLES |+--------------------+-------
error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such
error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory问题解决办法:locate libmysqlclient.so.16如我的mysql安装在/usr/local/mysql下,则结果为/usr/local/mysql/lib/mysql/libmysqlclient.so.16vi /etc/ld.so.conf增加一行 /usr/local/mysql/lib/mysql然后执行ldconfig生效。[@more@]
Heartbeat+DRBD实现MySQL高可用性
DRBD是一种块设备,可以被用于高可用(HA)之中。它类似于一个网络RAID-1功能。当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。 [@more@]1.3 环境准备 两台主机:192.168.100.8,192.168.100.9 需要为本地主机和远程主机,指定一个DRBD使用的硬盘分区。这两个分区的大小必须相同。我们指定两台主机的/dev/sda2分区作为DRBD的使用的分区.这两个分
Amoeba实现MySQL的负载均衡、故障转移
Amoeba(变形虫,读:阿米巴)项目,专注分布式数据库proxy开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。 主要解决: • 降低数据切分带来的复杂多数据库结构 • 提供切分规则并降低数据切分规则给应用带来的影响 • 降低db 与客户端的连接数[@more@]1.3 安装Amoeba Amoeba 框架是基于JDK1.5开发的,采用了JDK1.5的特性。支持Mysql 协议版本10(mysql 4.1以后的版本),因此,使用Amoeba需要安装JDK
(转)解读MySQL的InnoDB引擎日志工作原理
作者:happytest 原文: http://happytest.blog.51cto.com/324097/62848 当你使用UPDATE, INSERT, DELETE语句更新数据的时候,你就改变了两个地方的数据:log buffer和data buffers。Buffers是固定长度的内存块,通常是512字节。 LOG BUFFER DATA BUFFER================= ================ Log Record #1 = = Page Header == Log Record #2 = = Data Row == Log Record #3 = = Data Row == Log Record #4 = = Data Row ================== ===============例如:INSERT IN
MySQL Cluster 配置文件
MySQL Cluster 配置文件[@more@]1、管理节点config.ini[tcp default]SendBufferMemory=2MReceiveBufferMemory=2M[ndb_mgmd default]PortNumber=1185DataDir=/u01/mysql-cluster/data/ndb_mgmd[ndb_mgmd]id = 1hostname=localhost[ndbd default]NoOfReplicas=2#DataDir=/u01/mysql-cluster/data/ndbd[ndbd]hostname=localhostid=2DataDir=/u01/mysql-cluster/data/ndbd1[ndbd]hostname=localhostid=3DataDir=/u01/mysql-cluster/data/ndbd2[mysqld]id=4hostname=localhost[mysqld]id=5hostname=localhost[mysqld]id=6hostname=localhost启动
(转)MySQL ORDER BY 的实现分析
作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接:http://www.jianzhaoyang.com/database/mysql_order_by_implement总的来说,在 MySQL 中的ORDER BY有两种排序实现方式,一种是利用有序索引获取有序数据,另一种则是通过相应的排序算法,将取得的数据在内存中进行排序。 下面将通过实例分析两种排序实现方式及实现图解: 假设有 Table A 和 B 两个表结构分别如下: [@more@]sky@localhost : example 01:48:21; show create table AG*************************** 1. row **
(转)使用Xtrabackup备份MySQL数据库(续)
作者:NinGoo | 【转载须以超链接形式标明文章原始出处和作者信息】 原文: http://www.ningoo.net/html/2009/using_xtrabackup_backup_mysql_database_2.html在上一篇里,演示了使用xtrabackup对InnoDB进行在线物理热备,使用innobackupex脚本,可以很简单的一条命令行搞定InnoDB和MyISAM的物理备份。本文则演示如何从xtrabackup的备份中进行恢复。本次恢复的是一个600GB大小的InnoDB数据库,备份的时候没有使用gzip压缩。首先将备份好的tar文件解开到目标数据库的数据路径下,这一步类似oracle的restore database:[@more@]tar -ixvf my
(转)使用Xtrabackup备份MySQL数据库
作者:NinGoo | 【转载须以超链接形式标明文章原始出处和作者信息】 原文: http://www.ningoo.net/html/2009/using_xtrabackup_backup_mysql_database.htmlMySQL数据库的备份,一直是个比较头痛的问题。各种工具虽然不少,但一个真正好用易用的,却又非常难找。Mysqldump做为数据的逻辑备份 工具还行,但是无法进行在线热备,而没有物理备份工具,在数据量比较大的时候,恢复的时间也会长得无法接受。InnoDB倒是有个商业的InnoDB Hotbackup,可以对InnoDB引擎的表实现在线热备。最近发现了一个工具,percona出品的Xtrabackup,是InnoD
Percona XtraDB Storage Engine安装笔记
XtraDB 是Percona公司开发的一个MySQL 的存储引擎,其设计的主要目的是用以替代现在的InnoDB。XtraDB 100%的兼容 InnoDB。在性能上有很大提高,评测可看这里http://www.mysqlperformanceblog.com/2009/07/14/performance-improvements-in-percona-5-0-83-and-xtradb/ 。以下是我安装过程笔记:[@more@] 1、下载XtraDBwget -c http://www.percona.com/mysql/xtradb/5.1.37-7/source/MySQL-percona-5.1.37-7.rhel5.src.rpm2、下载下来是rpm源码包,使用rpm解包rpm -ivh MySQL-percona-5.1.37-7.rhel5.src.rpm3、解压源码包cd /usr/src/redh
(转)InnoDB之Dirty Page、Redo log
作者:苏普 | 【转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】 地址:http://rdc.taobao.com/blog/dba/html/317_innodb-dirty-page-redo-log.html在InnoDB中,buffer pool里面的dirty page一方面可以加快数据处理速度,同时也会造成数据的不一致(RAM vs DISK)。本文介绍了dirty page是如何产生,以及InnoDB如何利用redo log如何消除dirty page产生的数据不一致。[@more@]当事务(Transaction)需要修改某条记录(row)时,InnoDB需要将该数据所在的page从 disk读到buffer pool中,事务提交后,InnoDB修改page中的记
使用mysqlsniffer捕获SQL语句
MySQL5.1之前general log不能在运行时启用或禁用,有时想捕捉SQL来查找问题就很麻烦,偶然间发现一个很不错的小工具:mysqlsniffer,可以用来捕捉SQL语句,使用帮助如下:mysqlsniffer --helpmysqlsniffer v1.2 - Watch MySQL traffic on a TCP/IP networkUsage: mysqlsniffer [OPTIONS] INTERFACEOPTIONS: --port N Listen for MySQL on port number N (default 3306) --verbose Show extra packet information --tcp-ctrl Show TCP control packets (SYN, FIN, RST, ACK) --net-hdrs Show major IP and
用mysqlbinlog查看row格式的事件
MySQL 5.1开始,binlog支持row-based的格式,默认情况下只能看到一些经过base-64编码的信息,如DELIMITER /*!*/;# at 7493962#090827 5:25:03 server id 1 end_log_pos 0 Start: binlog v 4, server v 5.1.26-rc-community-log created 090827 5:25:03BINLOG 'L6iVSg8BAAAAZgAAAAAAAAAAAAQANS4xLjI2LXJjLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC'/*!*/;# at 7493962# at 7494009#090827 13:20:40 server id 1 end_log_pos 7494009 Table_map: `test`.`test1` m
学习笔记:MySQL Cluster 的binlog
MySQL Cluster中,如果启用了binlog,在任何sql node的更新操作,都会写入所有node的binlog,当然,这是有条件的:更新操作的node上binlog_format=mixed或者row,反之,如果是statement,就只会在更新操作的node上写入binlog。 另外,MySQL Cluster Replication是要求binlog是row-based,所以要将master的binlog设置为mixed或row。手册中如是说:Replication of a MySQL Cluster as described in this section and those following is dependent on row-based replication. This means that the replication master MySQL server must
学习笔记:MySQL Cluster 的结果顺序
最近搭建了MySQL Cluster的环境来学习,发现一个很有意思的现象,在不加order by的情况下,返回的结果顺序是随机的,每次都不一样,如下[@more@]mysql> select * from test_ndb limit 3; +---+-------+ | i | a | +---+-------+ | 5 | test5 | | 1 | test1 | | 2 | test2 | +---+-------+ 3 rows in set (0.05 sec) mysql> select * from test_ndb limit 3; +---+-------+ | i | a | +---+-------+ | 7 | test7 | | 3 | test3 | | 6 | test6 | +---+-------+ 3 rows in set (0.03 sec) mysql> sel
(链接)MySQL Cluster的备份与恢复
http://yueliangdao0608.blog.51cto.com/397025/81534[@more@]
使用SHOW binlog events查看binlog内容
有时程序员需要跟踪sql来查找问题时,我经常会使用mysqlbinlog命令行查看binlog,觉得比较麻烦,今天突然发现原来mysql有个命令可以直接查看。SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] 用于在二进制日志中显示事件。如果您不指定'log_name',则显示第一个二进制日志。 LIMIT子句和SELECT语句具有相同的语法。[@more@]
MySQL从库切换成主库后的relay-bin问题
有一个数据库,之前是从库,后来切换成主库了,my.cnf中的关于主库的配置已经注释掉,show slave status结果是也空的,但一直发现每天用mysqldump备份(带--flush-logs)之后会产生一个relay-bin.xxxxxx,删除了relay-bin.*之后,还是会继续产生,怎么回事呢?还是求助google吧,终于找到原因。http://bugs.mysql.com/bug.php?id=6178原来从库切换主库之后,需要执行一下RESET SLAVE命令,不然主库配置还是会缓存在master.info文件中,执行RESET SLAVE后,会将master.info和relay-log.info删除。[@more@]