MySQL  - 讨论区

标题:使用Percona XtraBackup进行数据库备份

2013年12月09日 星期一 10:53

对于一个现代化的互联网企业,最重要的财产就是其业务的数据。为数据库制定完善的备份方案是DBA最重要的职责之一。

常见的备份方案有:

1,通过mysqldump进行备份,这种方案属于逻辑备份,备份速度慢,恢复速度也慢。备份过程会阻塞本机MySQL数据库的写入操作。

2,通过mylvmbackup配合LVM(逻辑卷管理器)进行备份,这种方案属于物理备份,具有闪电般的速度,瞬间即可备份完毕。但要求数据库的磁盘需要使用LVM进行管理。

3,将一台MySQL Slave服务停止,然后拷贝文件。这种方案也属于物理备份,备份速度取决于拷贝文件的速度。备份过程需要停止本机MySQL进程。

Percona XtraBackup是一种更先进的备份方案,具有如下优势:

1,无需停止MySQL服务。

2,备份InnoDB数据的过程中,不会阻塞写入操作。

3,适用于多种数据库版本(MySQL 5.1,5.5,5.6)。

4,对服务器没有特殊要求。

5,物理备份,速度快。

6,使用方便,可以直接备份到远程服务器

安装过程非常简单:

配置软件安装源(/etc/yum.repos.d/percona.repo):

[percona]
name = CentOS $releasever - Percona
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
enabled = 1
gpgcheck = 1
gpgkey=http://www.percona.com/downloads/RPM-GPG-KEY-percona

然后执行:

yum install -y percona-xtrabackup

下面的是将本地数据库直接备份到远端服务器的一个示例:

在远端服务器端执行:

nc -l 9999 |tar ixvf -

在MySQL服务器端执行:

innobackupex --defaults-file=/etc/my.cnf --socket=/data/mysql/3306/mysql.sock --stream=tar ./ |nc remote.machine 9999

然后在远端服务器执行:

innobackupex --apply-log .

这样就得到了一份完整可用的数据,在备份文件夹中的xtrabackup_binlog_info文件里,有binlog的信息,可以用于change master操作。

更多Percona XtraBackup的相关文档请参考:

http://www.percona.com/doc/percona-xtrabackup/2.1/index.html

http://www.percona.com/doc/percona-xtrabackup/2.1/howtos/setting_up_replication.html

 

2013年12月09日 星期一 11:08

孟叔,XtraBackup先进的原理是啥?

2013年12月09日 星期一 20:50

根据我的理解,原理可以简单总结为:

1,跟踪REDO LOG文件,将备份过程中所有新增的REDO LOG都保存起来。

2,拷贝所有InnoDB数据文件。

3,Apply第一步保存的REDO LOG,使数据达到一致和完整。

更权威的解释可以参考:

http://www.percona.com/doc/percona-xtrabackup/2.1/how_xtrabackup_works.html

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号