技术细节

  • 作者:周振兴 mail
    来自:supu@TaobaoDBA 2009年10月13日星期二
    摘要:上篇中我们介绍了Xtrabackup的编译安装,以及如何使用innobackupex来备份和恢复数据库。本文将继续介绍Xtrabackup中的另一个工具xtrabackup(二进制脚本)。innobackupex对xtrabackup进行了封装可以同时备份InnoDB和MyISAM数据表,在备份MyISAM表时会进行全局锁表,如果单独使用xtrabackup,我们不仅可以实现真正的“在线”备份,还可以进行增量备份InnoDB。本文将介绍如何单独使用xtrabackup来备份你的InnoDB数据。(本文PDF版本:上篇 下篇

    (more…)

  • 迥异的Linux Shell Script

    ·

    发布说明

    • 2024年09月,更新说明为什么Linux Shell(准确的说,应该是Shell或Unix Shell)会显得“迥异”
    • 2009年,初次发布

    摘要:如果你已经习惯编写Shell脚本,那么一切都显得很自然了。但像我这样,之前已经习惯了C语言(风格)的编程,就觉得Shell并不是那么友好。这里将记录一些Shell和”C风格”迥异的地方,以供参考。本文测试环境:GNU bash, version 3.00.15(1)-release (i386-redhat-linux-gnu)。文章中很多实例直接来在参考文件[1]、[2]。

    Linux
    (more…)
  • 作者:mail
    来自:TaobaoDBA 2009年9月2日星期三
    摘要:本文介绍了XtraBackup的安装(编译安装)和使用。Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。本文测试使用的是0.8版本,与当前最新版本是0.9区别并不大。Xtrabackup有两个主要的工具:xtrabackup、innobackupex,其中xtrabackup只能备份InnoDB和XtraDB两种数据表,innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表。本文仅仅介绍了innobackupex的备份和恢复。

    (more…)

  • innodb_flush_method 与 File I/O

    ·

    陶方在《innodb_flush_method带来的性能影响》中从实验角度比较了fdatasync,O_DSYNC和O_DIRECT在性能上的差异。本文将试图从Linux/Unix”文件I/O”(unbuffered I/O)的角度来解释innodb_flush_method是如何影响MySQL的I/O。【附录1】

    innodb_flush_log_at_trx_commit参数确定日志文件何时write、flush。innodb_flush_method则确定日志及数据文件如何write、flush。在Linux下,innodb_flush_method可以取如下值:fdatasync, O_DSYNC, O_DIRECT,那这三个值分别是如何影响文件写入的?首先我们需要先来了解Linux的文件I/O是如何工作的。
    (more…)

  • sphinx使用介绍(前篇)

    ·

    到今天为止校内论坛Discuz)上的主题数量已经到达了40w,所有回复约500W。随着数据量的增大,DZ自带的站内搜索给数据库的带来的压力越来越大,甚至会导致数据库停止服务(MyISAM在SLOW Query和update并发问题)。取代站内搜索,我们使用了google的自定义搜索服务,google的速度非常快,但是对于论坛来说,Google不能返回实时的搜索结果,而且也无法定制搜索(如安装标题、作者、内容)。

    所以,我们将尝试使用sphinx来解决这个问题。先看看sphinx是怎样工作的: (more…)

  • InnoDB之Dirty page、Redo log

    ·

    在InnoDB中,buffer pool里面的dirty page一方面可以加快数据处理速度,同时也会造成数据的不一致(RAM vs DISK)。本文介绍了dirty page是如何产生,以及InnoDB如何利用redo log如何消除dirty page产生的数据不一致。

    1. 当事务(Transaction)需要修改某条记录(row)时,InnoDB需要将该数据所在的page从disk读到buffer pool中,事务提交后,InnoDB修改page中的记录(row)。这时buffer pool中的page就已经和disk中的不一样了,我们称buffer pool中的page为dirty page。Dirty page等待flush到disk上。
      dirty_pages
      (more…)