xtrabackup备份(MySQL备份)与恢复
xtrabackup备份(MySQL备份)与恢复
1. innobackupex参数选项
--no-timestamp: 不创建一个时间戳
--defaults-file=[MY.CNF] //指定配置文件:只能从给定的文件中读取默认选项。 且必须作为命令行上的第一个选项;必须是一个真实的文件,它不能是一个符号链接。
--databases=# //指定备份的数据库和表,格式为:--database="db1[.tb1] db2[.tb2]" 多个库之间以空格隔开,如果此选项不被指定,将会备份所有的数据库。
--include=REGEXP //用正则表达式的方式指定要备份的数据库和表,格式为 --include=‘^mydb[.]mytb’ ,对每个库中的每个表逐一匹配,因此会创建所有的库,不过是空的目录。--include 传递给 xtrabackup --tables。
--tables-file=FILE //此选项的参数需要是一个文件名,此文件中每行包含一个要备份的表的完整名称,格式为databasename.tablename。该选项传递给 xtrabackup --tables-file,与--tables选项不同,只有要备份的表的库才会被创建。
注意:部分备份(--include、--tables-file、--database)需要开启 innodb_file_per_table 。
--compact //创建紧凑型备份,忽略所有辅助索引页,只备份data page;通过--apply-log中重建索引--rebuild-indexs。
--compress //此选项指示xtrabackup压缩备份的InnoDB数据文件,会生成 *.qp 文件。
--apply-log //应用 BACKUP-DIR 中的 xtrabackup_logfile 事务日志文件。一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处于不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件使得数据文件处于一致性状态。
--use-memory=# //此选项接受一个字符参数(1M/1MB,1G/1GB,默认100M),仅与--apply-log一起使用,该选项指定prepare时用于崩溃恢复(crash-recovery)的内存。
--copy-back //拷贝先前备份所有文件到它们的原始路径。但原路径下不能有任何文件或目录,除非指定 --force-non-empty-directories 选项。
--incremental-basedir=DIRECTORY //该选项接受一个字符串参数,该参数指定作为增量备份的基本数据集的完整备份目录。它与 --incremental 一起使用。
--incremental-dir=DIRECTORY //该选项接受一个字符串参数,该参数指定了增量备份将与完整备份相结合的目录,以便进行新的完整备份。它与 --incremental 选项一起使用。
--redo-only //在“准备基本完整备份” 和 “合并所有的增量备份(除了最后一个增备)”时使用此选项。它直接传递给xtrabackup的 xtrabackup --apply-log-only 选项,使xtrabackup跳过"undo"阶段,只做"redo"操作。如果后面还有增量备份应用到这个全备,这是必要的。有关详细信息,请参阅xtrabackup文档。
--parallel=NUMBER-OF-THREADS //此选项接受一个整数参数,指定xtrabackup子进程应用于同时备份文件的线程数。请注意,此选项仅适用于文件级别,也就是说,如果您有多个.ibd文件,则它们将被并行复制; 如果您的表一起存储在一个表空间文件中,它将不起作用。
2.全量备份恢复
创建备份恢复的用户并赋权
create user pxb@'localhost' identified by '123456';
grant reload,process,lock tables,replication client on . to pxb@localhost;
创建存放备份文件的目录
mkdir -pv /var/data
进行数据库全量备份:
innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 /var/data/
[root@aliy ~]# ll /var/data/2018-08-28_09-06-39/
total 18460
-rw-r----- 1 root root 417 Aug 28 09:06 backup-my.cnf
-rw-r----- 1 root root 18874368 Aug 28 09:06 ibdata1
drwxr-x--- 2 root root 4096 Aug 28 09:06 mysql
drwxr-x--- 2 root root 4096 Aug 28 09:06 performance_schema
drwxr-x--- 2 root root 4096 Aug 28 09:06 test
-rw-r----- 1 root root 113 Aug 28 09:06 xtrabackup_checkpoints
-rw-r----- 1 root root 454 Aug 28 09:06 xtrabackup_info
-rw-r----- 1 root root 2560 Aug 28 09:06 xtrabackup_logfile
全量备份恢复
systemctl stop mariadb
rm /var/lib/mysql -rf
mkdir /var/lib/mysql
准备一个完全备份: --apply-log,执行之后 xtrabackup_checkpoints 文件中的 backup_type = full-prepared
innobackupex --apply-log /var/data/2018-08-28_09-06-39/
执行恢复操作:
innobackupex --defaults-file=/etc/my.cnf --copy-back /var/data/2018-08-28_09-06-39/
更改data目录权限并启动mysql:
chown -R mysql:mysql /var/lib/mysql
systemctl start mariadb
3. 增量备份恢复
所谓增量备份恢复就是在全量的基础上进行增量备份。
增量备份1:以全量为基准
innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --incremental /var/data/inc --incremental-basedir=/var/data/2018-08-28_10-01-53/ --parallel=2
中途进行了数据添加操作。
增量备份2:以增量备份1为基准
innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --incremental /var/data/inc/ --incremental-basedir=/var/data/inc/2018-08-28_10-04-22/ --parallel=2
增量备份的恢复:
步骤:
- 恢复完全备份
- 恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份要去掉--redo-only)
- 对整体的完全备份进行恢复,回滚提交的数据
准备一个全备:
innobackupex --apply-log --redo-only /var/data/2018-08-28_10-01-53/
将增量1应用到完全备份
innobackupex --apply-log --redo-only /var/data/2018-08-28_10-01-53 --incremental-dir=/var/data/inc/2018-08-28_10-04-22/
将增量2应用到完全备份,不用加--redo-only参数
innobackupex --apply-log /var/data/2018-08-28_10-01-53 --incremental-dir=/var/data/inc/2018-08-28_10-07-40/
把所有的完全备份合并到一起进行一次apply操作,回滚提交的数据
innobackupex --apply-log /var/data/2018-08-28_10-01-53/
模拟:将数据库里的内容删除
systemctl stop mariadb
mv /var/lib/mysql /var/lib/mysql.bak
mkdir /var/lib/mysql
恢复:
innobackupex --defaults-file=/etc/my.cnf --copy-back /var/data/2018-08-28_10-01-53/
chown -R mysql:mysql /var/lib/mysql
systemctl start maraidb
流备份以及压缩备份
Xtrabackup对备份的数据文件支持“流”功能,即可以将备份的数据通过STDOUT传输给tar程序进行归档,而不是默认的直接保存至某备份目录中。要使用此功能,仅需要使用--stream选项即可。如:
innobackupex --stream=tar /data/backup/|gzip >/data/backup/`date +%F`.tar.gz
也可以使用如下命令将数据备份至其他服务器
innobackupex --default-file=/etc/my.cnf --stream=tar /backup | ssh user@www.magedu.com " cat -> /backups/
date +%F_%H-%M-%S
.tar"
同时也可将备份的数据文件存储到远程的主机,使用--remote-host
来实现
innobackupex --remote-host=root@www.magedu.com /path/IN/REMOTE/HOST/to/backup
xtrabackup备份(MySQL备份)与恢复的更多相关文章
- 使用第三方工具Xtrabackup进行MySQL备份
使用Xtrabackup进行MySQL备份: 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtr ...
- Percona XtraBackup 关于 MySQL备份还原的详细测试
一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...
- Xtrabackup实现MySQL备份
一.xtrabackup介绍 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)它由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上 ...
- 基于xtrabackup实现mysql备份还原
简介 Xtrabackup2.2版之前包括4个可执行文件: innobackupex: Perl 脚本 xtrabackup: C/C++ 编译的二进制 xbstream: 支持并发写的流文件格式 x ...
- 使用Xtrabackup进行MySQL备份 zz
zz from http://www.magedu.com/ 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对i ...
- linux备份mysql文件并恢复的脚本,以及其中出现的错误:ERROR: ASCII '\0' appeared in the statement
首先是在网上找了一下教程,代码很简单 #!/bin/bash folder=~/test time=`date +%Y%m%d` mysqldump -u user -p pwd -hlocalhos ...
- Mysql备份系列(1)--备份方案总结性梳理
mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...
- Mysql备份方案总结性梳理
Mysql备份方案总结性梳理 服务器 mysql 日志 数据库 配置 Mariadb binlog mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种 ...
- MySQL 备份数据那点事
mysqldump 什么是 mysqldump ? mysqldump 是 MySQL 用于执行逻辑备份的一款工具,可以根据原始数据库对象以及表的定义和数据来生成一系列可以被执行的 SQL 语句. 通 ...
- mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数 ...
随机推荐
- systemd-unit
参考: systemd unit 中文手册
- 1.XGBOOST算法推导
最近因为实习的缘故,所以开始复习各种算法推导~~~就先拿这个xgboost练练手吧. (参考原作者ppt 链接:https://pan.baidu.com/s/1MN2eR-4BMY-jA5SIm6W ...
- Little Sub and Isomorphism Sequences ZOJ - 4089
ZOJ - 4089 思路:可以反正 最长重构序列必然符合 此模式 x + { } 与 { } + x 那么 题意转化为了 找两个距离最长的相同的数.eeee 先离散化 然后 ...
- kvm虚拟机网络管理
一.Linux Bridge网桥 管理 # brctl show 显示当前网桥连接状态 # brctl addbr br1vlan-10 添加网桥 # brctl delbr br1vlan-10 删 ...
- git diff old mode 100644 new mode 100755
今天执行git diff filename ,出现 old mode 100644 new mode 100755 的提示,如下图: 但是发现文件内容并没有发生改变 想起来中间执行过chmod 的操 ...
- 使用Skaffold一键将项目发布到Kubernetes
当前skaffold版本为v0.4,还未发布正式版本,不建议在生产环境中使用: skaffold用于开发人员快速部署程序到Kubernetes中:skaffold提供了dev.run两种模式:使用sk ...
- GeoHash(Java实现)
package com.koubei.collect_script.demo; import java.util.ArrayList; import java.util.Arrays; import ...
- linux android开发环境搭建
android开发环境搭建的一些有用链接:1.sdk manager的国内服务器http://www.cnblogs.com/huangjacky/p/4077982.html2.常见问题的解决htt ...
- [LeetCode] Rectangle Overlap 矩形重叠
A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bot ...
- 771. Jewels and Stones
You're given strings J representing the types of stones that are jewels, and S representing the ston ...