xtrabackup实战备份及还原mysql5.6.21

percona:

    ibbackup: InnoDB online physical backup

        full

        incremental

    MyISAM: warm backup,full

percona:Xtrabackup

1、简介

    xtrabackup是由percona提供的mysql数据备份工具,据官方介绍,这也是世界上唯一一款开源的能够对innodb和xtradb(增强版的innodb)数据库进行热备的工具,特点:

(1)备份过程快速、可靠;

(2)备份过程不会打断正在执行的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动实现备份校验;

(5)还原速度快;

    mysqldump是基于逻辑备份,对数据量比较大的数据库,还原起来会非常慢。

2、安装

其最新版的软件可从http://www.percona.com/downloads/XtraBackup/获得

2.1解决依赖关系

#yum install -y perl-DBI perl-DBD-MySQL perl-Time-HiRes

2.2

#yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

#yum install -y xtrabackup

3、备份实现

3.1环境说明

innobackupex备份生产环境的mysql数据库,线上物理服务器,配置较高,4颗32核CPU E5-4627,64G内存,704G(SSD,RAID5)

innobackupex还原生产环境的mysql数据库,线下虚拟机,配置较低。

因此要修改拷贝线上环境过来的my.cnf文件,如果是线上服务器还原,不需要更改备份的my.cnf

3.2完全备份详见附件脚本,按照日期归档。(切记要把/etc/my.cnf和mysql.user表备份下来,很关键)

#!/bin/bash

bak_dir=/dbbackup

bak_date=`date +%y%m%d_%H%M%S`

if [ ! -d "$bak_dir" ];then

  mkdir -p "$bak_dir"

  cd "$bak_dir"

  cp /etc/my.cnf .

  mysqldump -uroot -p xxxx mysql > mysql.bak.sql

else

  cd "$bak_dir"

  cp /etc/my.cnf .

  mysqldump -uroot -p xxxx mysql > mysql.bak.sql

fi

innobackupex --user=xxxxxx --password='xxxxxx' --database=ttpai --no-timestamp "$bak_dir"/"$bak_date"

innobackupex --apply-log "$bak_dir"/"$bak_date"

tar czf "$bak_date".tar.gz "$bak_date"

if [ $? -eq 0 ];then

  ls -l | grep '^d'|xargs rm -rf

  echo "$bak_date mysql full backup success.. " >> /var/log/dbbackup.log

else

  echo "$bak_date mysql full backup failture.." >> /var/log/dbbackup.log

fi

3.3二进制日志备份,后面补上。

4、恢复实现

一切没有演练还原操作的备份,都是不负责任的,不然等到哪天数据库崩溃的时候,肯定没那么多时间演练,自然就得卷铺盖走人。下面继续实战还原备份操作。这过程中,我就遇到不少问题,可能大家也会遇到,给大家做个参考。

4.1首先把备份的压缩包拷贝到/usr/local/src并解压

4.2初始化mysql服务器

# cd /usr/local/mysql

# scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

4.3还原准备

# mv /usr/local/src/150105_162006/my.cnf /usr/local/src

# mv /usr/local/src/150105_162006/mysql.bak.sql /usr/local/src

4.4执行还原

# innobackupex --copy-back /usr/local/src/150105_162006(观察是否输出compelete OK)

# chown -R mysql.mysql data/*

4.5还原后设置

# cp /usr/local/src/my.cnf /etc/my.cnf

# vi /etc/my.cnf (排查了mysql启动失败日志,报mysql.user表不存在)

在[mysqld]下面增加

skip-grant-tables

# service mysqld restart

# mysql -uroot -p -D mysql < /usr/local/src/mysql.bak.sql(导入mysql的user表)

# vi /etc/my.cnf

注释skip-grant-tables

# service mysqld restart

4.6检查是否还原成功

本文出自 “hanyun.fang” 博客,转载请与作者联系!

你可能感兴趣的:(mysql5.6,xtrabackup)