备份过程中要锁表2.为备份创建最小权限的用户
大表备份速度慢,而且会占用大量内存,可能引发内存溢出
而percona开发的innobackup是一款物理热备份工具,备份速度快,支持增量备份,备份过程中不锁表(myisam引擎表依然会锁表)。
xtrabackup住要有两个工具:
xtrabackup:是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;
innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。
mysql> CREATE USER ’bkpuser’@’127.0.0.1’ IDENTIFIED BY ’123456’;3.下载安装工具包
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ’bkpuser’@’127.0.0.1’;
mysql> FLUSH PRIVILEGES;
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.3/binary/redhat/6/x86_64/percona-xtrabackup-2.3.3-1.el6.x86_64.rpm4.全备份
rpm -i percona-xtrabackup-2.3.3-1.el6.x86_64.rpm
innobackupex --user=bkpuser --password=123456 --host=127.0.0.1 /tmp/mysqlbackup/ >2>&1查看备份文件,可以看到2016-03-08_13-46-05就是我们的全备分目录
创建数据目录:mkdir -p /var/lib/mysql
利用全备的redo日志,提交或者回滚事物:innobackupex --apply-log /tmp/mysqlbackup/2016-03-08_13-46-05
从备份目录恢复数据:cd/var/lib/mysql;innobackupex --copy-back /tmp/mysqlbackup/2016-03-08_13-46-05
授权:cd /var/lib;chown -R mysql.mysql mysql
恢复时为了防止大量二进制日志产生,可以关闭二进制日志。
启动数据库,注意此时要禁止连接,因为数据还未完全恢复:service mysqld start
找到原来的二进制文件,恢复数据到当前:mysqlbinlog --start-position=3029097 mysql-bin.000002|mysql -udba -p -h127.0.0.1 -P3307
恢复完成,数据库可以连接
7.innobackup增量备份
innobackupex --incremental /tmp/mysqlbackup/backup1 --incremental-basedir=/tmp/mysqlbackup/2016-03-08_13-46-05/
8.innobackup增量备份还原
首先需要将每个增备还原到全备,在从全备恢复数据库
innobackupex --apply-log --redo-only BASE-DIR
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-2
...
所有增量都做了之后,在执行恢复:
innobackupex --copy-back /path/to/BACKUP-DIR