innodb_support_xa={TRUE|FLASE}
存储引擎事务在存储引擎内部被赋予了ACID属性,分布式(XA)事务是一种高层次的事务,它利用“准备”然后“提交”(prepare-then-commit)两段式的方式将ACID属性扩展到存储引擎外部,甚至是数据库外部。然而,“准备”阶段会导致额外的磁盘刷写操作。XA需要事务协调员,它会通知所有的参与者准备提交事务(阶段1)。当协调员从所有参与者那里收到“就绪”信息时,它会指示所有参与者进行真正的“提交”操作。 此变量正是用于定义InnoDB是否支持两段式提交的分布式事务,默认为启用。事实上,所有启用了二进制日志的并支持多个线程同时向二进制日志写入数据的MySQL服务器都需要启用分布式事务,否则,多个线程对二进制日志的写入操作可能会以与原始次序不同的方式完成,这将会在基于二进制日志的恢复操作中或者是从服务器上创建出不同原始数据的结果。因此,除了仅有一个线程可以改变数据以外的其它应用场景都不应该禁用此功能。而在仅有一个线程可以修改数据的应用中,禁用此功能是安全的并可以提升InnoDB表的性能。作用范围为全局和会话级别,可用于选项文件,属动态变量。 sync_binlog = 1 mysql> LOCK TABLES mydb.tb1 READ, mydb.tb2 READ, ... mysql> FLUSH TABLES mydb.tb1, mydb.tb2, ... mysq> SET SQL_LOG_BIN=0; mysql> SOURCE somefile.sql;mysql> SET SQL_LOG_BIN=1;
percona:
ibbackup: InnoDB online physical backup full incremental MyISAM: warm backup, full $5000 mysqldump LVM --> mylvmbackup(perl scripts) percona: xtrabackup xtradb: innodb的增强版 innodb xtrabackup+二进制日志; mysql:安装xtrabackup 下载地址http://www.percona.com/software/percona-xtrabackup
可以下载源码也可以下载rpm我这里使用rpm
yum install percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm有依赖所以yum装[root@localhost ~]# rpm -ql percona-xtrabackup/usr/bin/innobackupex/usr/bin/xbcrypt/usr/bin/xbstream/usr/bin/xtrabackup/usr/share/doc/percona-xtrabackup-2.2.4/usr/share/doc/percona-xtrabackup-2.2.4/COPYING
安装完成
[root@localhost ~]# innobackupex --user=root /backup/发现报错了 可能版本太高换了个低版本可以[root@localhost ~]# rpm -e percona-xtrabackup[root@localhost ~]# rpm -ivh percona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm warning: percona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEYPreparing... ########################################### [100%] 1:percona-xtrabackup ########################################### [100%][root@localhost backup]# innobackupex --user=root --password= --host=localhost /backup/140919 16:16:51 innobackupex: Connection to database server closed140919 16:16:51 innobackupex: completed OK!
xtrabackup 从一个完全备份还原
但是一般情况下,这个备份是不能用于恢复的,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件处于不一致的状态,我们现在就是要通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
innobackupex --apply-log /backup/2014-09-19_16-29-10/
删除数据库目录内容、初始化数据库内容
然后用命令
innobackupex --copy-back /backup/2014-09-19_16-29-10/ 恢复,注意恢复后的文件属主,组
启动mysql
差异备份
[root@localhost backup]# innobackupex --incremental /backup/ --incremental-basedir=/backup/2014-09-19_17-47-03/140919 17:49:20 innobackupex: Connection to database server closed140919 17:49:20 innobackupex: completed OK!
在次增量备份要指定第一次增量备份那个目录或者完全备份路径
[root@localhost backup]# innobackupex --incremental /backup/ --incremental-basedir=/backup/2014-09-19_17-42014-09-19_17-47-03/ 2014-09-19_17-49-14/ [root@localhost backup]# innobackupex --incremental /backup/ --incremental-basedir=/backup/2014-09-19_17-49-14/
准备还原操作
停掉数据库,删除数据目录所有内容(实际环境当中应该备份二进制)
innobackupex --apply-log --redo-only /backup/2014-09-19_17-47-03/innobackupex --apply-log --redo-only /backup/2014-09-19_17-47-03/ --incremental-dir=/backup/2014-09-19_17-49-14/innobackupex --apply-log --redo-only /backup/2014-09-19_17-47-03/ --incremental-dir=/backup/2014-09-19_17-53-49/chown -R mysql.mysql ./*/etc/init.d/mysqld start
OK数据回来了!