有时候为了方面的导入数据,可以使用MyISAM存储引擎的表,直接把数据文件Copy一份放到对应的目录下,这样MySQL就能直接识别到,但是在主从复制的环境里这样做是有问题的,因为在从库上并没有这个表,从而导致后续的一些操作失败,比如在主库上执行导入数据的SQL语句,则在从库会报错如下:
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1146
Last_Error: Error 'Table 'banpingdb.blog_score' doesn't exist' on query. Default database: 'banpingdb'. Query: 'replace INTO blog_score_result(id,score,avg)
SELECT b.id, min(s.comment), min(s.price) FROM blog_score s,a_blog b where s.name=b.biz_name
group by b.id'
同样的信息通过日志也一样会看到:
111215 19:17:54 [ERROR] Slave SQL: Error 'Table 'banpingdb.blog_score' doesn't [...]
Xtrabackup是备份MySQL的很好的工具,目前最新的版本是1.6.3,和之前出过的1.6版本改进了不少,官方Percona目前对1.6.3的文档也改进了很多。安装包不再包含MySQL源码文件了,要根据需要从Percona在Amazon aws的服务器上下载,当然也可以自己下载需要的文件。
安装Xtrabackup,可以通过源码安装,也可以拿二进制程序过来直接使用,以下是源码安装的过程:
[root@data banping]# wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6.3/source/xtrabackup-1.6.3.tar.gz
[root@data banping]# tar zxf xtrabackup-1.6.3.tar.gz
[root@data banping]# cd xtrabackup-1.6.3
[root@data xtrabackup-1.6.3]# AUTO_DOWNLOAD="yes" ./utils/build.sh 5.5
自动下载的是libtar-1.2.11.tar.gz和mysql源码文件,mysql的版本根据给定的参数识别,可选的有以下版本:
Value Alias Server innodb51_builtin 5.1 build against built-in InnoDB in MySQL 5.1 innodb51 plugin build agsinst InnoDB plugin in MySQL 5.1 innodb55 5.5 build against InnoDB in MySQL 5.5 xtradb51 [...]
引言
NoSQL是伴随着web2.0的迅猛发展而在2009年被提出的一个概念,一般可以通俗的理解为高性能的Key Value存储结构的数据库,当然也有其他更广泛的类型。它基于CAP和BASE理论,强调最终一致性,具有数据结构灵活、扩展方便、大数据量下读写性能高效等特点,在互联网行业被广泛采用。本系列文章将评测广受关注的几个NoSQL数据库产品。本文关注的是HandlerSocket Plugin for MySQL。
介绍
HandlerSocket是日本DeNA公司的架构师Yoshinori开发的一个NoSQL产品,以MySQL Plugin的形式运行。其主要的思路是在MySQL的体系架构中绕开SQL解析这层,使得应用程序直接和Innodb存储引擎交互,通过合并写入、协议简单等手段提高了数据访问的性能,在CPU密集型的应用中这一优势尤其明显。其架构图如下:
图片来源:HandlerSocket作者博客
另外,HandlerSocket还帮我们解决了缓存的问题,因为Innodb已经有了成熟的解决方案,通过参数可以配置用于缓存数据的内存大小,这样只要我们分配合理的参数,就能在应用程序无需干涉的情况下实现热点数据的缓存,降低缓存维护的开发成本。
因为HandlerSocket是MySQL的一个Plugin,集成在mysqld进程中,对于NoSQL无法实现的复杂查询等操作,仍然可以使用MySQL自身的关系型数据库功能来实现。在运维层面,原来广泛使用的MySQL主从复制等经验可以继续发挥作用,相比其他或多或少存在一些bug的NoSQL产品,数据安全性更有保障。
可以说这是一个很有创意的产品,因此HandlerSocket的作者在2010年10月在博客上宣称这一产品能达到75K QPS的时候,在业界引起了广泛的关注,包括MySQL官方在新的5.6版本中推出的Memcached API,相信也是受了HandlerSocket的启发。
安装
一、安装MySQL
通过编译源码的方式安装MySQL,这里选择的版本是5.5.8版本。由于这不是本文的重点,这里只简单的提及一下要点。
首先到MySQL的官网http://dev.mysql.com/downloads/mysql/下载源码,要注意的是从MySQL 5.5版本开始需要Cmake编译工具和bison。然后开始安装:
[root@localhost handlersocket]# tar zxvf mysql-5.5.8.tar.gz
[root@localhost handlersocket]# cd mysql-5.5.8
[root@localhost mysql-5.5.8]# cmake . -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/home/handlersocket/mysql558/ -DSYSCONFDIR=/home/handlersocket/mysql558/ -DWITH_EMBEDDED_SERVER=on -DWITH_READLINE=on -DWITH_SSL=yes -DENABLED_LOCAL_INFILE=on -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1
[root@localhost mysql-5.5.8]# make
[root@localhost mysql-5.5.8]# make [...]
本文开头提到的问题就是在这个锁表的过程中不成功,造成等待而最终超时退出。 今天凌晨2点50分,一台MySQL服务器的备份遭遇了一个错误,信息如下: innobackupex: Error: Connection to mysql child process (pid=20080) timedout. (Time limit of 900 seconds exceeded. You may adjust time limit by editing the value of parameter "$mysql_response_timeout" in this script.) while waiting for reply to MySQL request: 'FLUSH TABLES WITH READ LOCK;' at /home/mysql/backup/xtrabackup-1.6/innobackupex line 336. 这是使用XtraBackup容易引起的一个经典错误,引起这个错误的原因也很简单,就是XtraBackup在备完innodb表的时候,要获得对所有表的锁定来备份MyISAM等其他表,来保证数据的一致性,如果数据库不断的有DML操作,XtraBackup就可能迟迟无法获得对所有表的锁定,最后超时。 让我们先了解一下XtraBackup备份MySQL的原理和过程。
前几天一台MySQL服务器的备份遭遇了一个错误,信息如下:
innobackupex: Error: Connection to [...]
XtraBackup是percona公司提供的开源工具,以热备Innodb表著称而被广泛采用。
XtraBackup对Innodb的备份之所以是热备,无需锁表,是基于Innodb自身的崩溃恢复机制,它首先复制所有的Innodb数据文件,这样复制出来的文件肯定是不一致的,然后对每个文件进行崩溃恢复处理,最终达到一致。就和MySQL在启动Innodb的时候一样,会通过比较数据文件头和redo log文件头信息来检查数据是否是一致的,如果不一致就尝试通过前滚(把redo log中所有提交的事务写入数据文件)和回滚(从数据文件中撤销所有redo log中未提交的事务引起的修改)来使数据达到最终一致。
This works because InnoDB maintains a redo log, also called the transaction log. This contains a record of every change to InnoDB's data. When InnoDB starts, it inspects the data files and the transaction log, and performs two steps. It applies committed transaction log entries to the data files, and [...]
技术组织
最近评论
- 皇冠网址 - www.2532777.com|3ey2wm 发表在《过年》
- www.198818.com|osk4tf 发表在《过年》
- pary 发表在《为Postfix增加DKIM功能》
- 竹纤维产品 发表在《过年》
- Asher 发表在《从2011到2012》
- sphinx安装 - 凹凸曼博客 发表在《安装sphinx的php扩展小记》
历史归档
广告位

