xtrabackup的安装和mysql数据库备份和恢复

xtrabackup的简单介绍

  1. MySQL中的xtrabackup的原理解析
    1.首先会启动一个xtrabackup_log后台检测的进程,实时检测mysql redo的变化,一旦发现redo有新的日志写入,立刻将日志写入到日志文件xtrabackup_log中
    2.复制innodb的数据文件和系统表空间文件idbdata1到对应的以默认时间戳为备份目录的地方
    3.复制结束后,执行flush table with read lock操作
    4.复制.frm .myd .myi文件
    5.并且在这一时刻获得binary log 的位置
    6.将表进行解锁unlock tables
    7.停止xtrabackup_log进程
  2. xtrabackup的优势
    1.备份快速可靠地完成
    2.备份期间不间断的事务处理
    3.节省磁盘空间和网络带宽
    4.自动备份验证
    5.由于更快的恢复时间,正常运行时间更长

xtrabackup的安装

  1. 官方地址:https://www.percona.com/doc/percona-xtrabackup/2.2/installation/yum_repo.html
    因为用的是5.5的mysql数据库,所以选择的2.2版本
  2. 安装Percona存储库
    yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
  3. 测试存储库yum list| grep percona能看到很多包就行了。在这里插入图片描述
  4. 安装Percona XtraBackup
    yum install percona-xtrabackup-22

innobackupex备份

  1. 安装后有innobackupex和xtrabackup两种命令做备份,我选的是innobackupex备份。
  2. 编写脚本,备份单个或者多个库 --databases 用于指定要备份的数据库, 备份多个库使用方法: --databases=“db1 db2” 用空格分开。不加是全部数据库都备份。
#!/bin/bash
#author menard 2019-08-23
#xtrabackup、innobackupex方式备份数据库
host=localhost
post=3306
user=root
password=pass
file=/server/mysql/mysql.sock
f=/etc/my.cnf
dir=/data_backup/
date=`date "+%F"`
innobackupex --defaults-file="$f" --host="$host" --port="$port"--user="$user"  --password="$password" --socket=$file --stream=tar "$dir" | gzip > $dir/data_full_$date.tar.gz
  1. 执行脚本,出现这种情况说明脚本没问题,正在备份。查看备份目录可以看到有备份文件生成并且在增大
    在这里插入图片描述
    在这里插入图片描述

innobackupex恢复数据

  1. 将备份好的文件拷贝到新的服务器。
  2. 解压gunzip data_full_2019-08-23.tar.gz解压后是一个tar包,因为我备份时加了参数stream=tar,解压tar包时一定要注意,必须要加-i,不然解压后只有一个backup-my.cnf
    gunzip data_full_2019-08-23.tar.gz
    tar -ixf data_full_2019-08-23.tar -C dir
  3. 停止mysql服务
    service mysqld stop
  4. 因为还原数据的话数据库目录必须是空的,所以可以把原数据库目录改名再创建一个空目录。
    mv /var/lib/mysql /var/lib/mysql_back
    mkdir /var/lib/mysql
  5. 通过命令恢复数据,两条命令都必须执行。上面一条是对ibdata1、ib_logfile0、ib_logfile1文件做处理,不执行第一条的话数据库会报数据错误的问题错。下面一条是把备份文件拷贝到数据库目录。
    innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log 备份数据目录
    innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back 备份数据目录在这里插入图片描述
  6. 修改数据库权限后启动数据库。
    chown -R mysql. /var/lib/mysql
    service mysqld start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Menardღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值