记一次innobackupex工具恢复数据库过程

innobackupex工具恢复数据库

今天正在午休的时候,同事突然给了一份dummy.tar的innobackupex备份数据,需要我恢复一下.因为是innobackupex全量备份,那么第一件事情自然就是准备虚拟机了.好在我平常就有镜像当前操作系统作为沙箱环境的习惯.接下来事情就简单了.

安装数据库

  • 操作系统环境(virtualbox):ubuntu16.0.4

首先安装mysql

sudo apt install mysql

接着安装innobackupex工具,innobackupex工具实际上是percona公司推出的一款数据库备份工具,它实际的名字其实是percona-xtrabackup,所以接下来要把这个工具下载下来

我的操作系统是ubuntu16.0.4,根据页面上对应的版本,选择对应的下载资源

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/debian/xenial/x86_64/Percona-XtraBackup-2.4.12-r170eb8c-xenial-x86_64-bundle.tar

解压

tar -xvf Percona-XtraBackup-2.4.12-r170eb8c-xenial-x86_64-bundle.tar

安装

sudo dpkg -i *.deb

修复依赖

sudo apt -f install

验证

which innobackupex

恢复数据

我的备份文件是dummy.tar,解压之后的格式如下,如果你的备份文件不包含下面的文件,说明你的备份文件不对

.
├── backup-my.cnf
├── ib_buffer_pool
├── ibdata1
├── mysql
├── performance_schema
├── sys
├── xtrabackup_checkpoints
├── xtrabackup_info
└── xtrabackup_logfile

我的压缩包一开始就是没有tar后缀的tar文件,结果就一直没办法备份下来,然后尝试性质的使用tar解压一下,才把目录给解压出来的

  • 恢复数据(恢复数据之前,必须要关闭数据库,并且当前用户需要有对数据库目录的权限)

使用apt安装的mysql,数据目录在/var/lib/mysql ,配置文件在/etc/mysql/my.cnf

关闭数据库

sudo service mysql stop

删除数据库原有的文件(删除之前,要确保你的数据库没有可用的数据,如果有可用的数据库,一定要先做备份,或者选择虚拟机来进行恢复工作)

sudo rm -rf /vat/lib/mysql/*

恢复数据

恢复数据有两个过程,首先是apply-log 然后才是cpoy-back

sudo innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123456 --use-memory=4G --apply-log /backup/mysql/data/dummy 
sudo innobackupex --defaults-file=/etc/mysql/my.cnf --user=root --password=123456 --copy-back /backup/mysql/data/dummy

恢复mysql权限(可能需要的操作如果权限不对,mysql将无法启动)

sudo own mysql:mysql -R /var/lib/mysql

重新启动数据库

sudo service mysql start

备份之后,数据库密码就不再是你原来的密码了,而是你备份的数据库的密码

发表评论