我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用XtraBackup备份MySQL

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用XtraBackup备份MySQL

一、使用每表单个表空间

这样ibdata1文件不会过大。

xtrabackup可以使用部分备份了,需要在一个表一个文件的状况下才能使用。

1.在使用xtrabackup之前,我们需要查看我们当前mysql是否是使用每表单个表空间,如果不是则必须将其修改为每表单独表空间:


1

mysql> show global variables like '%innodb_file_p%';

2

+-----------------------+-------+

3

| Variable_name | Value |

4

+-----------------------+-------+

5

| innodb_file_per_table | OFF |

6

+-----------------------+-------+

7

1 row in set (0.00 sec)

这里是关闭状态,由此我们要启动这个功能,将来一旦要用到xtrabackup或各种高级功能的话建议刚安装mysql的时候直接将默认配置去写进配置文件,中途再更改的话会非常麻烦。


2.重新导出导入数据,修改为每表一个文件:


1

[root@test2 ~]#mysqldump -uroot --lock-all-tables --all-databases --master-data=2 --events> ./1.sql

2

关闭数据库

3

[root@test2 ~]#/etc/init.d/mysqld stop

4

Shutting down MySQL.. SUCCESS!

5

编辑配置文件加入以下参数

6

[root@test2 ~]# vim/etc/my.cnf

7

innodb_file_per_table= 1

8

而后删除数据文件并重新初始化

9

[root@test2 data]#pwd

10

/mydata/data

11

删除所有数据文件

12

[root@test2 data]# rm -fr *

13

初始化mysql

14

[root@test mysql]#pwd

15

/usr/local/mysql

16

[root@test mysql]# scripts/mysql_install_db --user=mysql--datadir=/mydata/data/ --basedir=/usr/local/mysql/

17

[root@test mysql]#/etc/init.d/mysqld start

18

再次查看是否是每表单独表空间

19

mysql> showglobal variables like '%innodb_file_per%';

20

+-----------------------+-------+

21

|Variable_name | Value |

22

+-----------------------+-------+

23

|innodb_file_per_table | ON |

24

+-----------------------+-------+

25

1 row in set (0.00sec)

26

恢复数据

27

mysql> source~/1.sql

28

[root@test2 data]#ll wpdb/

29

total 220

30

-rw-r--r--. 1 mysqlmysql 61 Apr 6 11:05 db.opt

31

-rw-r--r--.1 mysql mysql 8646 Apr 6 11:05 students.frm

32

-rw-r--r--.1 mysql mysql 98304 Apr 6 11:05students.ibd

33

-rw-r--r--. 1 mysql mysql 8556 Apr 6 11:05 tb4.frm

34

-rw-r--r--. 1 mysql mysql 98304 Apr 6 11:05 tb4.ibd

35

如上所示每个表都有单独对应的表空间了

36


3.指定datadir:


1

vim /etc/my.cnf

2

添加一行:

3

datadir = /data/server/mysql/data

二、安装percona-xtrabackup


1

解决依赖关系

2

[root@test ~]# yum-y install libaio perl-Time-HiRes perl-DBD-MySQL perl-IO-Socket-SSL

安装percona-xtrabackup:

1.rpm

[root@test2 tools]#rpm -ivh percona-xtrabackup-2.1.4-656.rhel6.x86_64.rpm

使用wget下载rpm包,然后通过rpm包安装

参考:http://www.cnblogs.com/cosiray/archive/2012/03/02/2376595.html

参考:http://blog.163.com/ji_1006/blog/static/10612341201382355716623/

2.yum


1

自动

2

$ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

3

然后会看到:

4

Retrieving http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

5

Preparing...                ########################################### [100%]

6

   1:percona-release        ########################################### [100%]

7

手动

8

[percona]

9

name = CentOS $releasever - Percona

10

baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/

11

enabled = 1

12

gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona

13

gpgcheck = 1

14

测试安装库

15

使用yum list | grep percona来确保安装

16

yum list | grep percona

三、使用percona-xtrabackup

innobackupex是perl脚本对xtrabackup的封装,和功能扩展。

1.配置权限


1

grant RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'back'@'localhost'identified by 'back';

2.创建全备


1

innobackupex --user=back --password=back --no-timestamp /tmp/mysqlback/

内部机制:在备份的时候innobackupex会调用xtrabackup来备份innodb表,并复制所有的表定义,其他引擎的表(MyISAM,MERGE,CSV,ARCHIVE)

--no-timestamp,指定了这个选项备份会直接备份在BACKUP-DIR,不再创建时间戳文件夹。

--default-file,指定配置文件,用来配置innobackupex的选线。


3.使用innobackupex预备全备(备份好了,先不要做这个,直接保存。只有需要直接用来还原时候做这个)


1

innobackupex --apply-lop mysqlback/

--user-memory:指定预备阶段可使用的内存,内存多则速度快,默认为10MB


1

innobackupex --apply-log --use-memory=4G /path/to/BACKUP-DIR

4.全备还原

1)停止服务:

service mysqld stop

2) 删除datadir目录数据

rm -rf data/*

3) 使用innobackupex --copy-back来还原备份,会根据my.cnf复制所有备份到datadir下:


1

<span data-wiz-span="data-wiz-span" >innobackupex --copy-back mysqlback/</span>

注:datadir必须是为空的,innobackupex –copy-back不会覆盖已存在的文件,还要注意,还原时需要先关闭服务,如果服务是启动的,那么就不能还原到datadir。

4) 修改数据的所有者和权限


1

<span data-wiz-span="data-wiz-span" > chown -R mysql:mysql data/</span>

5) 启动服务

service mysqld start

5.创建增量备份

在创建增量备份之前需要一个全备,不然增量备份是没有意义的.


1

innobackupex /data/backups

创建第一个增量备份


1

<span data-wiz-span="data-wiz-span" >innobackupex --incremental /data/backups --incremental-basedir=BASEDIR</span>

6.还原增量备份

在全备上,使用—redo-only只做已提交事务,不回滚未提交事务


1

<span data-wiz-span="data-wiz-span" >innobackupex --apply-log --redo-only BASE-DIR</span>

应用第一个增量备份


1

<span data-wiz-span="data-wiz-span" >innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1</span>

回滚未提交事务


1

<span data-wiz-span="data-wiz-span" >innobackupex --apply-log BASE-DIR</span>

还原增量备份,还原增量备份其实和还原全备一样


1

innobackupex --copy-back BASE-DIR

6. 单表备份:

备份单表:


1

innobackupex --user=root --password=simlinux.com  --defaults-file=/etc/my.cnf --include='se.searchaccount' --slave-info --safe-slave-backup --stream=tar /data/backup > /data/backup/searchaccount.tar.gz

    多个表:  --include='test.*|pms.*'

复制到其他服务器后,解压:


1

tar -ixf searchaccount.tar.gz -C /data/databak/

innobackupex预备:


1

innobackupex --apply-log --export /data/databak

7.单表还原:

定义表,先创建一个表,表结构需要和被还原的一样 (若是表已存在则不需要创建):


1

CREATE TABLE `searchaccount`...

然后discard表空间 (discard完表空间后再复制文件过来,再import,这样就不需要重启)


1

mysql > ALTER TABLE se.searchaccount DISCARD TABLESPACE;

文件复制到databdir相应的目录下(注意文件的所有者和文件权限),mysql需要.ibd和.cfg文件,mysql 5.6之后可以不使用cfg来进行import,XtraDB需要.ibd和.exp,mariadb 10.0可以直接通过ibd和frm文件import


1

cp /data/databak/se/{searchaccount.ibd,searchaccount.cfg} /usr/local/mysql/data/se/


1

chown mysql.mysql /usr/local/mysql/data/se/

然后import表空间


1

mysql > ALTER TABLE se.searchaccount IMPORT TABLESPACE;

8.使用xbstream流备份

1

 innobackupex --stream=xbstream /root/backup/ > /root/backup/backup.xbstream

9.使用tar备份


1

innobackupex --stream=tar ./ > /root/backup/out.tar

10.使用tar流并备份到其他服务器

1

ssh-keygen

2

ssh-copy-id -i mysql@127.0.0.1


1

 innobackupex --stream=tar ./ | gzip | ssh user@destination "cat - > /data/backup.tar"

加密码


1

innobackupex --stream=tar ./ | gzip | sshpass -p 'root123' ssh user@destination "cat - > /data/backup.tar"

11.压缩流


1

 innobackupex --stream=tar ./ | gzip - > backup.tar.gz

12.提取tar流,需要加i参数


1

 tar -xizf backup.tar.gz

参考:

innobackupex --user=root --password=root --stream=tar ./ | gzip | sshpass -p 'root123' ssh root@10.6.32.28 "cat - > /usr/programs/xtraback/backup.tar.gz"


innobackupex --defaults-file=/etc/my.cnf --user=root --password='123' --host=localhost --rsync --compress --compress-threads=5 --compress-chunk-size=64K --slave-info /root


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用XtraBackup备份MySQL

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL如何使用Xtrabackup备份

这篇文章给大家分享的是有关MySQL如何使用Xtrabackup备份的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。01 背景 Xtrabackup是Percona公司开发的一款开源的MySQL热备份工具,之
2023-06-14

MySQL使用Xtrabackup备份流程详解

01 背景 Xtrabackup是Percona公司开发的一款开源的MySQL热备份工具,之前的工作中也是经常使用,但是也仅仅是停留在使用的阶段,对于这个工具的细节,并没有做过多的研究,今天细细看了一下过程,还是有点收获的,写下来记录
2022-05-27

MySQL如何使用使用Xtrabackup进行备份和恢复

目录1 备份1.1 全备1.2 增备2 备份恢复2.1 准备数据2.2 进行恢复3 目录结构4 备份脚本4.1 脚本4.2 配置文件5 恢复脚本5.1 脚本5.2 配置文件1 备份 进行备份前需要先创建备份用户,直接使用 root 用户进行
2022-05-27

xtrabackup 实现MySQL数据库备份

mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的 数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了。 这时就 需要一种好用又高效的工具,xtrabackup就是其
xtrabackup 实现MySQL数据库备份
2018-06-08

编程热搜

目录