失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MySQL备份恢复工具xtrabackup

MySQL备份恢复工具xtrabackup

时间:2024-02-01 09:05:16

相关推荐

MySQL备份恢复工具xtrabackup

1、简介

XtraBackup是Percona提供的一个开源的、免费的MySQL数据库备份工具,它能够对InnoDB和XtraDB数据库进行热备份,据官方介绍,XtraBackup具有以下特点:

1. 备份过程快速、可靠;

2. 备份过程不会打断正在执行的事务;

3. 能够基于压缩等功能节约磁盘空间和流量;

4. 自动实现备份检验;

5. 恢复速度快。

2、安装XtraBackup

最新版本可以从/software/percona-xtrabackup获得。

# yum install/downloads/XtraBackup/Percona-XtraBackup-2.2.10/binary/redhat/6/x86_64/percona-xtrabackup-2.2.10-1.el6.x86_64.rpm

3、创建所需用户

#创建具有所需完整备份最低权限的数据库用户示例:

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cret';

mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';

mysql> FLUSH PRIVILEGES;

4、完全备份

# innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/

#检查输出最后一行的确认消息

innobackupex: Backup created in directory ’/path/to/BACKUP-DIR/-03-25_00-00-09’

innobackupex: MySQL binlog position: filename ’mysql-bin.000003’, position 1946

111225 00:00:53 innobackupex: completed OK!

5、准备(Prepar)一个完全备份

# innobackupex --apply-log /path/to/BACKUP-DIR

111225 1:01:57 InnoDB: Shutdown completed; log sequence number 1609228

111225 01:01:57 innobackupex: completed OK!

# 注意:在实现"准备"的过程中,innobackupex通常还可以使用--use-memory选项来指定其可以使用的内存的大小,默认为100M。如果有足够的内存可用,可以多划分一些内存给prepare的过程,以提高完成速度。

6、从一个完全备份中恢复

#innobackupex命令的--copy-back选项用于执行恢复操作,通过复制所有数据相关的文件到mysql服务器的DATADIR目录中来执行恢复过程。

#innobackupex --copy-back /path/to/BACKUP-DIR

# 如果执行正确,会出现类似几行

innobackupex: Finished copying back files.

111225 01:08:13 innobackupex: completed OK!

# 注意:删除数据目录之前,先停止mysqld服务,然后直接用命令恢复启动即可,不需要重新初始化数据库。当数据恢复到DATADIR目录后,还需要确保所有数据文件的属主和属组均为正确的用户,否则,在启动mysqld之前还需要事先修改数据文件的属主和属组。

# chown -R mysql:mysql /data/mysql

7、增量备份

# 每个InnoDB的页面都会包含一个LSN信息,每当相关的数据发生改变,相关的页面的LSN就会自动增长。这也是InnoDB表可以进行增量备份的基础,即innobackupex通过备份上次完全备份之后发生改变的页面来实现。

创建一个增量备份(需要做一个完全备份为基础):

# innobackupex --user=DBUSER --password=DBUSERPASS--incremental /data/backups --incremental-basedir=BASEDIR

#其中,BASEDIR指的是完全备份所在的目录,此命令执行结束后,innobackupex命令会在/backup目录中创建一个新的以时间命名的目录以存放所有的增量备份数据。另外,在执行过增量备份之后再一次进行增量备份时,其--incremental-basedir应该指向上一次的增量备份所在的目录。

#注意:增量备份仅能应用于InnoDB或XtraDB表,对于MyISAM表,执行增量备份其实进行的是完全备份。

8、准备增量备份

# "准备"增量备份与完全备份有点不同,需要注意的是:

1.需要在每个备份(包括完全和各个增量备份)上,将已经提交的事务进行"重放"。"重放"之后,所有的备份数据合并到完全备份上;

2.基于所有的备份将未提交的事务进行"回滚"。

操作步骤:

#innobackupex --apply-log --redo-only BASE-DIR

13 22:00:12 InnoDB: Shutdown completed; log sequence number 1291135

13 22:00:12 innobackupex: completed OK!

#innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1

13 22:08:43 InnoDB: Shutdown completed; log sequence number 1358967

13 22:08:43 innobackupex: completed OK!

#innobackupex --apply-log --redo-onlyBASE-DIR --incremental-dir=INCREMENTAL-DIR-2

completed OK!

#其中BASE-DIR指的是完全备份所在的目录,而INCREMENTAL-DIR-1指的是第一次增量备份的目录,INCREMENTAL-DIR-2指的是第二次增量备份的目录,其它依次类推,如果有多次增量备份,每一次都要执行如上操作。

如果觉得《MySQL备份恢复工具xtrabackup》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。