xtrabackup如何备份mysql数据库
admin
2023-06-10 02:02:53
0次

参考:http://mingxiao.blog.51cto.com/8124243/1623634


一 全备

1.命令安装:

yum install -y gnupg
rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm(64位源)
rpm -Uhv https://www.percona.com/redir/downloads/percona-release/percona-release-0.0-1.i386.rpm(32位源)
yum install -y percona-xtrabackup


[root@aliyun-112 ~]# xtrabackup -v

xtrabackup version 2.3.3 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 525ca7d)

2.命令功能:

对InnoDB做数据备份的工具,支持在线热备份

3.命令参数:

--database=sundong  单独对hu数据库做备份 ,若是不添加此参数那就那就是对全库做备份 

--stream =tar   打包格式 目前只支持 tar and xbstream

2>/var/backups/hu.log 输出信息写入日志中 

1> /var/backups/hu.tar.gz 打包压缩存储到该文件中  

--incremental-dir=/var/backups/plus/  增量备份目录

--copy-back选项的命令从备份目录拷贝数据,索引,日志到my.cnf文   件里规定的初始位置

--apply-log选项的命令是准备在一个备份上启动mysql服务

--port=PORT

4.命令实例:

备份并打包压缩 (只备份hu这个数据库)

innobackupex  --defaults-file=/home/DB/mysql/my.cnf   --user=root --password=xxxxx  --database=hu  --stream=tar  /var/backups/ 2>/var/backups/hu.log   | gzip 1> /var/backups/hu.tar.gz

5 整库备份。(一次性备份所有的数据库)

  1. innobackupex --defaults-file=/etc/my.cnf    --user=root --password=cdqd  /var/backups/ 

(root为数据库用户名,cdqd为数据库密码,/etc/my.cnf为mysql配置文件所在位置,/var/backups/为备份文件存储目录)

6 恢复

 首先停掉数据库,然后删除数据库目录下的所有数据库文件。

首先写日志文件,然后恢复,如下。(注:2010-04-17_22-19-30是自动生成的以备份时间命名的文件夹,恢复时根据情况进行选择)

  1. # innobackupex  --defaults-file=/etc/my.cnf  --apply-log  /var/backups/2010-04-17_22-19-30 (写日志)

  2. # innobackupex   --defaults-file=/etc/my.cnf  --copy-back   /var/backups/2010-04-17_22-19-30 (恢复)


然后去你的备份目录查看是否有备份的文件,然后还需要更改权限(这步我是cd到原数据库目录下进行的)

#chown -R mysql:mysql *


重启数据库,开恢复是否成功。

二 增量备份与恢复

在这里为了表述清楚我们做两次增量备份。

为student表插入数据,为增量备份做基础。

mysql>use hu;
mysql>create table student (`id` int(4),`name` char(40),`values`char(40)) 
mysql> INSERT INTO student (Name) VALUES ('XiaoHei3'),('XiaoHei4');

完全备份:

innobackupex  --defaults-file=/etc/my.cnf  --user=root --password=123456   /data/backup

备份完成之后产生这个

2015-03-23_23-19-24/  文件夹,这是完全备份的目录


第一次增量备份,--incremental-basedir=指的是完全备份所在的目录。/backup是备份的目录

INSERT INTO student (Name) VALUES ('XiaoHei1'),('XiaoHei2');


[root@localhost /]#

 
innobackupex --incremental  /backup --incremental-basedir=/backup/2015-03-23_23-19-24/


执行完这个之后会产生一个2015-03-23_23-21-49/  ,第二次增量备份指定它就可以


mysql>

 INSERT INTO student (Name) VALUES ('XiaoHei5'),('XiaoHei6');


第二次增量备份,--incremental-basedir=指的是第上一次增量备份所在的目录,这里指第一次,以此类推。

[root@localhost /]# 
innobackupex --incremental /backup --incremental-basedir=/backup/2015-03-23_23-21-49/

 

步骤三:准备完全备份和增量备份
增量备份完成,下面要准备完全备份和增量备份。
--redo-only后面是完全备份所在目录。
--incremental-dir指增量备份所在目录,若有多个,按时间先后执行多次。

[root@localhost /]# 
innobackupex --apply-log --redo-only /backup/2015-03-23_23-19-24/
[root@localhost /]# 
innobackupex --apply-log --redo-only /backup/2015-03-23_23-19-24/ --incremental-dir=/backup/2015-03-23_23-21-49/    --incremental-dir指向第一次增量备份目录
[root@localhost /]# 
innobackupex --apply-log --redo-only /backup/2015-03-23_23-19-24/ --incremental-dir=/backup/2015-03-23_23-22-44/  --incremental-dir指向第二次增量备份目录



步骤四:模拟mysqld故障
[root@localhost /]# service mysqld stop
Shutting down MySQL. SUCCESS! 

[root@localhost /]# rm -rf /mydata/data/*

步骤五:恢复数据

[root@localhost data]# innobackupex --copy-back /backup/2015-03-23_23-19-24/ (第一次全备份的目录)

然后进入到备份目录查看是否有备份文件存在


注意:恢复数据后,在重启mysqld前,需要修改数据目录权限,默认是root用户,root组,需要改为mysql用户,mysql组。
[root@localhost data]# chown -R mysql.mysql ./*

service mysqld start

mysql> use hu;

Database changed
mysql> select * from student;
+----+-------------------+---------------+
| ID | Name              | Course        |
+----+-------------------+---------------+
|  1 | xiaoming          | English       |

|  2 | xiaohong          | Kuihuabaodian |

| 16 | XiaoHei1          |               |
| 17 | XiaoHei2          |               |
| 18 | XiaoHei3          |               |
| 19 | XiaoHei4          |               |
| 20 | XiaoHei5          |               |
| 21 | XiaoHei6          |               |
+----+-------------------+---------------+
9 rows in set (0.00 sec)

可以看到所有数据都完好无损,至此,备份恢复操作都已完成。




相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...