xtrabackup备份恢复Mysql

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介:

Mysql增量备份
Xtrabackup中包含两个工具:
        xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表(MYISAM表)。
        innobackupex - 对xtrabackup封装的perl脚本,提供了myisam表备份的能力。(能进行整库和数据表备份)。

MySQL主从同步原理

MySQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态),Slave MySQL上通过一个I/O线程从Master MySQL上读取binlog,然后传输到Slave MySQL的中继日志中,然后Slave MySQL的SQL线程从中继日志中读取中继日志,然后应用到Slave MySQL的数据库中。这样实现了主从数据同步功能。

XtraBackup备份原理

innobackupex在后台线程不断追踪InnoDB的日志文件,然后复制InnoDB的数据文件。数据文件复制完成之后,日志的复制线程也会结束。这样就得到了不在同一时间点的数据副本和开始备份以后的事务日志。完成上面的步骤之后,就可以使用InnoDB崩溃恢复代码执行事务日志(redo log),以达到数据的一致性。
备份分为两个过程:

  1. backup,备份阶段,追踪事务日志和复制数据文件(物理备份)。

  2. preparing,重放事务日志,使所有的数据处于同一个时间点,达到一致性状态。

XtraBackup的优点

  1. 可以快速可靠的完成数据备份(复制数据文件和追踪事务日志)

  2. 数据备份过程中不会中断事务的处理(热备份)

  3. 节约磁盘空间和网络带宽

  4. 自动完成备份鉴定

  5. 因更快的恢复时间而提高在线时间

一、安装percona-xtrabackup

1.官网下载

2.yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQ

3.rpm -ivh 安装包.rpm

二、innobackupex备份全库

1.备份

1
2
innobackupex --defaults- file = /usr/local/mysql_2/my .cnf 
--user=root --password=password  --socket= /tmp/mysql_2 .sock  /usr/local/backup

当然也可以只备份指定的库和表

2.恢复

1
2
innobackupex --defaults- file = /usr/local/mysql_2/my .cnf --socket= /tmp/mysql_2 .sock --user=root --password=password --apply-log  /usr/local/backup/2016-01-26_18-32-02
innobackupex --defaults- file = /usr/local/mysql_2/my .cnf --socket= /tmp/mysql_2 .sock --user=root --password=password --copy-back   /usr/local/backup/2016-01-26_18-32-02

三、全量备份及恢复

  1. 备份

1
xtrabackup --defaults- file = /usr/local/mysql_2/my .cnf --user=root --password=password --socket= /tmp/mysql_2 .sock --backup --target- dir = /usr/local/backup/base/2016-2-10

2.恢复

1
2
  xtrabackup --defaults- file = /usr/local/mysql_2/my .cnf --user=root --password=password
  --socket= /tmp/mysql_2 .sock --prepare --target- dir = /usr/local/backup/base/2016-2-10/

1
2
xtrabackup --defaults- file = /usr/local/mysql_2/my .cnf --user=root --password=password
  --socket= /tmp/mysql_2 .sock --prepare --target- dir = /usr/local/backup/base/2016-2-10/

执行两次prepare,是因为第二次prepare会帮助我们生成redo log文件(重做日志文件),加快MySQL数据库启动的速度

3.

//将数据库停掉

#/etc/init.d/mysqld stop

//删除数据库目录下的ib*(ib开头的所有)文件。

#rm  /data/mysql_2/ib*

//将/usr/local/Backup/base/2016-2-10目录下的ib*文件拷贝到数据库目录。

#cd /data/mysql_2/

#cp /usr/local/Backup/base/2016-2-10/ib* ./

#chown -R mysql:mysql /data/mysql_2/

4.重启mysql,进入mysql检查是否恢复

四、增量备份及恢复

1.先全量备份:

1
xtrabackup --defaults- file = /usr/local/mysql_2/my .cnf --user=root --password=password --socket= /tmp/mysql_2 .sock --backup --target- dir = /usr/local/backup/base/2016-2-10

2.在全量的基础上增量备份: 

1
xtrabackup --defaults- file = /usr/local/mysql_2/my .cnf --user=root --password=password --socket= /tmp/mysql_2 .sock --backup --target- dir = /usr/local/backup/incre/1  --incremental-basedir= /usr/local/backup/base/2016-2-10/

3.恢复

1
mysql>drop database db3;
1
xtrabackup --defaults- file = /usr/local/mysql_2/my .cnf --user=root --password=password --socket= /tmp/mysql_2 .sock --prepare --apply-log-only --target- dir = /usr/local/backup/base/2016-2-10/
1
xtrabackup --defaults- file = /usr/local/mysql_2/my .cnf --user=root --password=password --socket= /tmp/mysql_2 .sock --prepare --apply-log-only --target- dir = /usr/local/backup/base/2016-2-10/  --incremental- dir = /usr/local/backup/incre/1/
1
xtrabackup --defaults- file = /usr/local/mysql_2/my .cnf --user=root --password=password --socket= /tmp/mysql_2 .sock --prepare --apply-log-only --target- dir = /usr/local/backup/base/2016-2-10/

增量备份也可以在前一个增量备份的基础继续增量备份,只不过这种方法会比较不安全,丢失前面的增量备份将导致后面的增量备份全都失效。

4.

//将数据库停掉

#/etc/init.d/mysqld stop

//删除数据库目录下的ib*(ib开头的所有)文件。

#rm  /data/mysql_2/ib*

//将/usr/local/Backup/base/2016-2-10目录下的ib*文件拷贝到数据库目录。

#cd /data/mysql_2/

#cp /usr/local/Backup/base/2016-2-10/ib* ./

#cp -r /usr/local/Backup/base/2016-2-10/db3 ./

#chown -R mysql:mysql /data/mysql_2/

4.重启mysql,进入mysql检查db3是否恢复




      本文转自YU文武貝 51CTO博客,原文链接:,http://blog.51cto.com/linuxerxy/1741522如需转载请自行联系原作者






相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11月前
|
SQL 存储 关系型数据库
MySQL备份:mydumper 备份恢复工具生产实战
MySQL备份:mydumper 备份恢复工具生产实战
|
关系型数据库 MySQL 数据库
HBR混合云备份的MySQL云备份底层使用的是xtrabackup吗?
HBR混合云备份的MySQL云备份底层使用的是xtrabackup吗?
96 1
|
存储 关系型数据库 MySQL
利用Xtrabackup进行mysql增量备份和全量备份
利用Xtrabackup进行mysql增量备份和全量备份
1031 0
|
关系型数据库 MySQL 数据库
零基础带你学习MySQL—备份恢复数据库(三)
零基础带你学习MySQL—备份恢复数据库(三)
|
11月前
|
关系型数据库 MySQL 机器人
【MySQL】两个脚本自动化搞定 MySQL 备份恢复--XtraBackup
【MySQL】两个脚本自动化搞定 MySQL 备份恢复--XtraBackup
|
11月前
|
运维 关系型数据库 MySQL
"MySQL运维精髓:深入解析数据库及表的高效创建、管理、优化与备份恢复策略"
【8月更文挑战第9天】MySQL是最流行的开源数据库之一,其运维对数据安全与性能至关重要。本文通过最佳实践介绍数据库及表的创建、管理与优化,包括示例代码。涵盖创建/删除数据库、表结构定义/调整、索引优化和查询分析,以及数据备份与恢复等关键操作,助您高效管理MySQL,确保数据完整性和系统稳定运行。
785 0
|
11月前
|
存储 关系型数据库 MySQL
XtraBackup 的版本大揭秘:突破迷雾,揭开其支持 MySQL 版本的震撼真相,捍卫数据安全!
【8月更文挑战第7天】XtraBackup 是 MySQL 备份领域的热门工具,适用于多个版本。它为 MySQL 8.0 提供高效备份,确保数据安全。同样支持 MySQL 5.7 和其他稳定版如 5.6,精确备份各类数据结构。
235 0
|
存储 关系型数据库 MySQL
XtraBackup支持哪些MySQL数据库版本?
【5月更文挑战第13天】XtraBackup支持哪些MySQL数据库版本?
1205 0
|
监控 关系型数据库 MySQL
Percona Xtrabackup快速备份MySQL
Percona Xtrabackup快速备份MySQL
|
关系型数据库 MySQL 数据库
xtrabackup 备份还原mysql
通过使用xtrabackup 备份还原mysql数据库
120 3

推荐镜像

更多