生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx

上传人:b****1 文档编号:2394141 上传时间:2022-10-29 格式:DOCX 页数:27 大小:25.74KB
下载 相关 举报
生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx_第1页
第1页 / 共27页
生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx_第2页
第2页 / 共27页
生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx_第3页
第3页 / 共27页
生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx_第4页
第4页 / 共27页
生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx

《生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx》由会员分享,可在线阅读,更多相关《生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx(27页珍藏版)》请在冰豆网上搜索。

生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库.docx

生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库

生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库

一个合格的运维工程师或者dba工程师,如果有从事数据库方面的话,首先需要做的就是备份,如果没有备份,出现问题的话,你的业务就会出问题,你的工作甚至会。

所以备份是重要的,但光有备份还不行,备份后如果出现问题,你还得使用备份数据来恢复,但恢复数据的时间一般都是很长的,不符合业务需求,所以一个快速备份与恢复的软件就很有必要。

之前我在维护mysql数据库的时候,使用mysqldump来进行备份与恢复,在备份的时候锁住表,然后全部备份,在数据少的时候没问题,但如果数据很多,不允许锁表,同时需要恢复数据块的情况,mysqldump就不适合了,我在恢复一个4G数据文件的数据库的时候,恢复的数据是使用mysqldump的数据,恢复了3个小时还没有反应,造成的影响很严重,所以我开始寻找其他的别发软件来满足以上的需求,幸好找到了,就是使用xtrabackup来进行备份与恢复,恢复4G数据文件的数据库,仅需要14秒,同时在备份的时候不会锁表,而且支持增量备份,所以把我的比较分享给大家,希望对大家有益!

Xtrabackup是percona公司的开源项目,用以实现类似innodb官方的热备份工具InnoDBHotBackup的功能,能够非常快速地备份与恢复mysql数据库。

Xtrabackup中包含两个工具:

xtrabackup是用于热备份innodb,xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;

innobackupex是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。

由于innobackupex的功能更为全面和完善,所以,本文以innobackupex作为基础进行研究描述。

下面介绍xtrabackup的全部、增量的备份与恢复。

一、下载与安装

1、下载

wget

2、安装依赖库

如果是debian系列的话

apt-getinstalldebhelperautotools-devlibaio-devwgetautomakelibtoolbisonlibncurses-devlibz-devcmakebzr

如果是redhat系列的话

yuminstallcmakegccgcc-c++libaiolibaio-develautomakeautoconfbzrbisonlibtoolncurses-develzlib-devel

3、解压

tarzxvfxtrabackup-1.6.7.tar.gz

4、进入目录

cdxtrabackup-1.6.7

5、复制

cdbin

cp*/usr/bin

然后就安装完成了,下面开始备份

其中,

innobackupex是我们要使用的备份工具;

xtrabackup是被封装在innobackupex之中的,innobackupex运行时需要调用它;

xtrabackup_51是xtrabackup运行时需要调用的工具;

tar4ibd是以tar流的形式产生备份时用来打包的工具。

6、对某个数据库进行全部备份的命令介绍

innobackupex--user=root--password=123456--defaults-file=/etc/mysql/f--database=test--stream=tar/tmp/data/2>/tmp/data/err.log|gzip1>/tmp/data/test.tar.gz

说明:

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

2>/tmp/data/err.log输出信息写入日志中

1>/tmp/data/test.tar.gz打包压缩存储到该文件中

二、对数据库的全部备份与恢复

下面开始测试xtrabackup的全部备份

(1)先进入mysql里创建一个新的test数据库

root@client2:

/tmp#mysql-uroot-p

Enterpassword:

WelcometotheMySQLmonitor.Commandsendwith;or\g.

YourMySQLconnectionidis40

Serverversion:

5.5.28-0ubuntu0.12.04.3-log(Ubuntu)

Copyright(c)2000,2012,Oracleand/oritsaffiliates.Allrightsreserved.

OracleisaregisteredtrademarkofOracleCorporationand/orits

affiliates.Othernamesmaybetrademarksoftheirrespective

owners.

Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.

mysql>dropdatabasetest;

QueryOK,3rowsaffected(0.13sec)

mysql>createdatabasetest;

QueryOK,1rowaffected(0.00sec)

mysql>usetest;

Databasechanged

mysql>createtabletest(idint);

QueryOK,0rowsaffected(0.06sec)

mysql>insertintotestvalues

(1);

QueryOK,1rowaffected(0.04sec)

mysql>insertintotestvalues

(2);

QueryOK,1rowaffected(0.01sec)

mysql>insertintotestvalues(3);

QueryOK,1rowaffected(0.00sec)

mysql>insertintotestvalues(4);

QueryOK,1rowaffected(0.00sec)

mysql>insertintotestvalues(5);

QueryOK,1rowaffected(0.01sec)

mysql>select*fromtest;

+------+

|id|

+------+

|1|

|2|

|3|

|4|

|5|

+------+

5rowsinset(0.00sec)

mysql>flushprivileges;

QueryOK,0rowsaffected(0.00sec)

(2)然后备份test的整个数据库

使用下面的backup.sh脚本

root@client2:

/tmp#catbackup.sh

#!

/bin/bash

user='root'

passwd='123456'

database=test

my_config='/etc/mysql/f'

log=$database-$(date+%Y%m%d%H%M).log

str=$database-$(date+%Y%m%d%H%M).tar.gz

backup_dir='/tmp/data'

echo"Starttobackupat$(date+%Y%m%d%H%M)"

if[!

-d"$backup_dir"];then

mkdir$backup_dir

fi

innobackupex--user=$user--password=$passwd--defaults-file=$my_config--database=$database--stream=tar$backup_dir2>$backup_dir/$log|gzip1>$backup_dir/$str

if[$?

-eq0];then

echo"Backupisfinish!

at$(date+%Y%m%d%H%M)"

exit0

else

echo"BackupisFail!

at$(date+%Y%m%d%H%M)"

exit1

fi

现在开始运行此脚本

root@client2:

/tmp#shbackup.sh

Starttobackupat201303072101

Backupisfinish!

at201303072102

然后到data里查看结果

root@client2:

/tmp#cddata

root@client2:

/tmp/data#ll

total3272

drwxr-xr-x2rootroot4096Mar721:

01./

drwxrwxrwt13rootroot4096Mar721:

02../

-rw-r--r--1rootroot3780Mar721:

02test-201303072101.log

-rw-r--r--1rootroot3336909Mar721:

02test-201303072101.tar.gz

root@client2:

/tmp/data#cattest-201303072101.log

InnoDBBackupUtilityv1.5.1-xtrabackup;Copyright2003,2009InnobaseOy

andPerconaInc2009-2012.AllRightsReserved.

Thissoftwareispublishedunder

theGNUGENERALPUBLICLICENSEVersion2,June1991.

13030721:

01:

39innobackupex:

Startingmysqlwithoptions:

--defaults-file='/etc/mysql/f'--password=xxxxxxxx--user='root'--unbuffered--

13030721:

01:

39innobackupex:

Connectedtodatabasewithmysqlchildprocess(pid=12441)

13030721:

01:

45innobackupex:

Connectiontodatabaseserverclosed

IMPORTANT:

Pleasecheckthatthebackupruncompletessuccessfully.

Attheendofasuccessfulbackupruninnobackupex

p

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1