使用rpm包安装xtrabackup

## 安装依赖包
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL rsync ## 安装libev4包
rpm -ivh libev4-4.15-7.1.x86_64.rpm ## 安装percona-xtrabackup
rpm -ivh percona-xtrabackup--2.4.-.el6.x86_64.rpm

为备份操作创建MySQL账户。

## xtrabackup备份创建备份用户
CREATE USER 'backuper'@'localhost' IDENTIFIED BY 'backup@123';
GRANT SELECT, RELOAD, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT ON *.* TO 'backuper'@'localhost';
FLUSH PRIVILEGES;

创建备份文件目录

mkdir /export/mysql_backup

对数据库进行完整备份,如果在从库上进行备份,请添加--slave_info –safe-slave-backup参数来获取复制主库的binlog信息。默认备份会将当前库的binlog信息保存到xtrabackup_binlog_info文件中,而--slave_info参数将复制主库的binlog信息保存到xtrabackup_slave_info中,如果使用备份来添加复制,请注意选取正确的binlog信息。

## 进行完整备份并压缩
innobackupex --defaults-file="/export/servers/mysql/etc/my.cnf" \
--host="localhost" \
--port= \
--user="backuper" \
--password="backup@123" \
--socket="/export/data/mysql/tmp/mysql.sock" \
--stream=tar \
"/export/mysql_backup/" | gzip -> "/export/mysql_backup/mysql_full_backup.tar.gz"

注意检查命令是否成功执行,使用tar备份能有效降低备份文件的大小,但是压缩和加压缩都会严重消耗cpu资源。

============================================================

假设进行完上面操作,将备份文件拷贝到新的服务器上,同样放到/export/mysql_backup/下

解压备份文件

## 切换到备份压缩文件所在目录
## 强烈建议创建一个空的目录来存放备份文件,以避免解压后的文件与其他文件冲突
cd /export/mysql_backup/ ##加压备份
tar xvf mysql_full_backup.tar.gz

使用xtrabackup备份得到的数据是备份结束时间点的数据,备份期间所产生的事务日志被保存到备份文件xtrabackup_logfile中,因此需要先对备份文件进行日志重做和回滚未提交事务。--apply-log还会根据backup-my.cnf来生成新的事务日志文件。

#使用apply-log参数来处理事务日志
innobackupex --apply-log /export/mysql_backup/

由于在还原时要求目标目录为空,而即使新安装的MySQL服务器也会存在一些如系统数据库的数据文件,因此在将备份还原到MySQL之前,需要将当前MySQL数据目录下的文件进行情况,为保险期间,建议先使用mv命令来改名。

#备份当前MySQL的数据目录
mv /export/data/mysql /export/data/mysql_bak

xtrbackup备份操作只备份数据相关的文件,并不会备份如错误日志/慢日志等文件或目录,而上一步操作mv可能移除掉部分文件目录,因此需要手动再创建一遍。

## 创建MySQL数据目录
mkdir -p /export/data/mysql/tmp /export/data/mysql/data /export/data/mysql/dumps /export/data/mysql/log

使用move-back参数来将数据移动到MySQL数据目录下,同样也可以使用--copy-back参数来只拷贝而不复制。

innobackupex --defaults-file="/export/servers/mysql/etc/my.cnf" --move-back /export/mysql_backup/

数据复制到MySQL数据目录后,需要修改这些数据文件的所有者,保证MySQL服务有权限操纵。

#修改MySQL数据目录的权限
chown -R mysql:mysql /export/data/mysql

最终启动MySQL服务,检查数据是否正常

##==================================================##

MySQL--使用xtrabackup进行备份还原的更多相关文章

  1. MYSQL的日志与备份还原

    一.错误日志 当数据库出现任何故障导致无法使用时,第一时间先去查看该日志 1.服务器启动关闭过程中的信息 2.服务器运行过程中的错误信息 日志存放路径,可以通过命令查看: 日志文件命名格式:host_ ...

  2. python之路--MySQL权限管理 数据备份还原

    一 权限管理 mysql最高管理者是root用户, 这个一般掌握在公司DBA手里, 当你想去对数据库进行一些操作的时候,需要DBA授权给你. 1. 对新用户增删改 1. 创建用户 # 要先use my ...

  3. MySQL之mysqldump数据备份还原

    一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...

  4. MySQL | 使用Xtrabackup进行备份和备份恢复

    备份 进行备份前需要先创建备份用户,直接使用 root 用户进行备份也行,但是这样不太规范. create user backup@'localhost' identified by '123456' ...

  5. MySQL - 日常操作二 备份还原

    登录mysql的命令 # 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 mysql -h 110. -P3306 -uroot -p mysql -uroot -p -S /dat ...

  6. Mysql表复制及备份还原

    1.复制表结构   1.1 含有主键等信息的完整表结构   CREATE table 新表名 LIKE book;     1.2 只有表结构,没有主键等信息   create table 新表名 s ...

  7. MySQL 利用binlog增量备份+还原实例

    一,什么是增量备份 增量备份,就是将新增加的数据进行备份.假如你一个数据库,有10G的数据,每天会增加10M的数据,数据库每天都要备份一次,这么多数据是不是都要备份呢?还是只要备份增加的数据呢,很显然 ...

  8. MySQL远程连接和备份还原

    连接远程数据库 mysql -h 数据库地址 -P 端口号 -u 用户名 -p mysql -h -u root -p 备份数据库, 热备份 mysqldump -h 127.0.0.1 -u roo ...

  9. 基于xtrabackup实现mysql备份还原

    简介 Xtrabackup2.2版之前包括4个可执行文件: innobackupex: Perl 脚本 xtrabackup: C/C++ 编译的二进制 xbstream: 支持并发写的流文件格式 x ...

随机推荐

  1. aa5

    var placeList = [ {name:'海门', geoCoord:[121.15, 31.89]}, {name:'鄂尔多斯', geoCoord:[109.781327, 39.6082 ...

  2. Dreamweaver扩展注意事项

    对Dreamweaver扩展做了一些整理. 扩展开发扩展(Extension),是应用程序给用户预留的二次开发接口.Dreamweaver提供了对菜单,插入栏(Insertbar),浮动框等GUI部件 ...

  3. vios 多 vlan设置

    [转 ]测试后修正 成功让IVM跑了多个VLAN,添加一块可携带多个vlanID的网卡,Nativevlan是改造的折中方法,如果不喜欢这种方法,附---删除多vlan网卡方法,一般情况下,lpar的 ...

  4. 深入理解Memcache原理 [转]

    1.为什么要使用memcache 由于网站的高并发读写需求,传统的关系型数据库开始出现瓶颈,例如: 1)对数据库的高并发读写: 关系型数据库本身就是个庞然大物,处理过程非常耗时(如解析SQL语句,事务 ...

  5. BOOTSTRAP定制

    1.补充:栅格系统中调整列的位置/顺序 (1)方法1:偏移量(col-*-offset-*) (2)方法2:对列进行push/pull操作 col-lg-pull-1        ~         ...

  6. 解决jquery1.9不支持browser对象的问题||TypeError: $.browser is undefined

    在插件的源代码里插入如下代码: (function(jQuery){ if(jQuery.browser) return; jQuery.browser = {}; jQuery.browser.mo ...

  7. jquery之右下角消息提示框

    messager.js (function (jQuery) { var window; var obj = new Object(); obj.version = '@1.0'; obj.title ...

  8. smarty模板中获得循环次数

    在smarty中可以有两种写法来获得循环次数(当然lz只会这两种:>,要是有大神会有其他的,欢迎补充) 写法一: {section name=loop loop=3} {$smarty.loop ...

  9. web应用程序传递连接字符串给FastReport数据源

    public static FastReport.Report fr = new FastReport.Report(); public static FastReport.EnvironmentSe ...

  10. 如何解决WebService参数传递中文乱码问题

    1,问题由来 我的主要工作是负责统一适配平台这块,主要任务是提供给客户统一的调用接口,客户使用这个接口可以通过我们再调不同厂家的接口.主要流程如下: 现在客户那边传来的请求报文里面包含中文,使用web ...