zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Percona Xtrabackup快速备份MySQL

mysql备份 快速 xtrabackup Percona
2023-09-11 14:16:12 时间

老规矩,开场白,刚开始用mysqldump,备份100G+的数据库,再加上服务器繁忙,备份速度像蜗牛似的,于是寻找更高效的备份方法。网上都说用xtrabackup比较适合备份大的数据库,而且备份效率也高,就尝试使用一次,结果明显感觉比mysqldump 备份与恢复速度就是快不少,那以后就用它了。大礼拜日的在家也没事,结合生产环境,写了这篇文档,刚接触的朋友,可以参考下,不多说,入正题!

1、初次备份前准备工作 1.1 了解备份方式 热备份:读写不受影响(mysqldump-- innodb) 温备份:仅可以执行读操作(mysqldump-- myisam) 冷备份:离线备份,读写都不可用 逻辑备份:将数据导出文本文件中(mysqldump) 物理备份:将数据文件拷贝(xtrabackup、mysqlhotcopy) 完整备份:备份所有数据 增量备份:仅备份上次完整备份或增量备份以来变化的数据 差异备份:仅备份上次完整备份以来变化的数据    1.2 创建备份用户

mysql grant reload,lock tables,replication client on *.* to bak@localhost identified by bak2015; mysql flush privileges; 1.3 安装方式

CentOS:


# rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm # yum install percona-xtrabackup

xtrabackup2.2不支持MySQL5.1的Innodb引擎,如需要可安装2.0版本

Ubuntu:


# sudo apt-get install xtrabackup  

14.04默认有这个包,14.04之前版本如果没有在这个地址下载对应的版本。

1.4 了解常用参数 --user=     #指定数据库备份用户 --password=  #指定数据库备份用户密码 --port=     #指定数据库端口 --host=     #指定备份主机 --socket=    #指定socket文件路径 --databases=  #备份指定数据库,多个空格隔开,如--databases="dbname1 dbname2",不加备份所有库 --defaults-file=       #指定my.cnf配置文件 --apply-log         #日志回滚 --incremental=          #增量备份,后跟增量备份路径 --incremental-basedir=     #增量备份,指上次增量备份路径 --redo-only         #合并全备和增量备份数据文件 --copy-back         #将备份数据复制到数据库,数据库目录要为空 --no-timestamp          #生成备份文件不以时间戳为目录名 --stream=             #指定流的格式做备份,--stream=tar,将备份文件归档 --remote-host=user@ip DST_DIR #备份到远程主机 2、完整备份与恢复 2.1 完整备份 

# innobackupex --user=bak --password=bak2015 /mysql_backup   2.2 备份恢复

# innobackupex --defaults-file=/etc/mysql/my.cnf --copy-back /home/loongtao/mysql_backup/2015-02-08_11-56-48/

2.3 备份文件说明


# ls 2015-02-08_11-56-48 backup-my.cnf:记录innobackup使用到mysql参数 xtrabackup_binary:备份中用到的可执行文件 xtrabackup_checkpoints:记录备份的类型、开始和结束的日志序列号 xtrabackup_logfile:备份中会开启一个log copy线程,用来监控innodb日志文件(ib_logfile),如果修改就会复制到这个文件 3、完整备份+增量备份与恢复 3.1 完整备份

# innobackupex --user=bak --password=bak2015 /mysql_backup

备份后位置是:/mysql_backup/2015-02-08_11-56-48

3.2 增量备份1

# innobackupex --user=bak --password=bak2015 --incremental /data1/mysql_backup --incremental-basedir=/mysql_backup/2015-02-08_11-56-48  #指定上次完整备份目录 3.3 增量备份2

# innobackupex --user=bak --password=bak2015 --incremental /data1/mysql_backup --incremental-basedir=/mysql_backup/2015-02-08_12-16-06  #指定上次增量备份目录 3.4 查看xtrabackup_checkpoints文件

一目了然,可以看到根据日志序号来增量备份

wKioL1TXGvCSc7KkAALo5ttBsM8636.jpg

QQ图片20150208160818.png

3.5 备份恢复 3.5.1 备份恢复思路

将增量备份1、增量备份2...合并到完整备份,加到一起出来一个新的完整备份,将新的完整备份以拷贝的形式到数据库空目录(rm /var/lib/mysql/* -rf)

3.5.2 预备完整备份

xtrabackup把备份过程中可能有尚未提交的事务或已经提交但未同步数据文件的事务,写到xtrabackup_logfile文件,所以要先通过这个日志文件回滚,把未完成的事务同步到备份文件,保证数据文件处于一致性。


# innobackup --apply-log --redo-only 2015-02-08_11-56-48 3.5.3 合并第一个增量备份

# innobackupex --apply-log --redo-only /mysql_backup/2015-02-08_11-56-48/ --incremental-dir=mysql_backup/2015-02-08_12-16-06 3.5.4 合并第二个增量备份

# innobackupex --apply-log --redo-only /mysql_backup/2015-02-08_11-56-48/ --incremental-dir=mysql_backup/2015-02-08_16-06-53 3.5.5 恢复完整备份

这时2015-02-08_11-56-48完整备份已经包含所有增量备份,可以通过查看checkpoints来核实


# innobackupex --defaults-file=/etc/mysql/my.cnf --copy-back /mysql_backup/2015-02-08_11-56-48/ 3.5.6 修改恢复数据文件权限

# chown -R mysql.mysql /var/lib/mysql 3.5.7 启动MySQL,查看数据库恢复情况

# /etc/init.d/mysqld start 4、备份文件归档压缩 4.1 归档并发送到备份服务器

# innobackupex --databases=test --user=bak --password=bak2015 --stream=tar /mysql_backup 2 /mysql_backup/bak.log |ssh root@192.168.18.251 "cat - /mysql_backup/`date +%F`.tar"

解压:tar -ixvf `date +%F`.tar

4.2 归档备份

# innobackupex --databases=test --user=bak --password=bak2015 --stream=tar /mysql_backup /mysql_backup/`date +%F`.tar

解压:tar -ixvf `date +%F`.tar

4.3 压缩归档备份

# innobackupex --databases=test --user=bak --password=bak2015 --stream=tar /mysql_backup |gzip /mysql_backup/`date +%F`.tar.gz

解压:tar -izxvf `date +%F`.tar.gz


原文发布时间为:2015-07-09


本文来自云栖社区合作伙伴“Linux中国”


【MySQL】Xtrabackup备份工具使用 Xtrabackup是由percona提供的mysql数据库备份工具,支持在线热备份(备份时不影响数据读写). Xtrabackup有两个主要的工具:xtrabackup、innobackupex 1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项
Percona XtraBackup 关于 MySQL备份还原的详细测试 Percona XtraBackup 关于 MySQL备份还原的详细测试一. Percona XtraBackup 的优点。(1)无需停止数据库进行InnoDB热备; (2)增量备份MySQL; (3)流压缩传输到其它服务器; (4)在线移动表; (5)能够比较容易地创建主从同步; (6)备份MySQL时不会增大服务器负载。
MySQL下xtrabackup与MTS造成的死锁 测试背景 MySQL的物理备份在企业版中是有的,但是community版本的话是不提供这个版本的,但是percona作为MySQL的技术服务公司,开源了自己的物理备份工具--xtrabackup。
转:https://blog.csdn.net/anzhen0429/article/details/76359069 XtraBackup的全备份+XtraBackup增量备份+binlog日志进行恢复最新数据。
利用Xtrabackup工具备份及恢复(MySQL DBA的必备工具) 利用Xtrabackup工具备份及恢复(MySQL DBA的必备工具) Xtrabackup——MySQL DBA的必备工具 文档参照http://www.percona.com/docs/wiki/percona-xtrabackup:start mysql要使用5.1.50版本或以上。
一 简介: Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。