本来可以一篇写完,结果由于不可抗因素(笔记本没电了╮(╯▽╰)╭),导致分为了上下两篇。
基于xtrabackup实现备份恢复
mariadb 10.2.15要使用最新的2.4.11版本(这里版本一定要选择好,否则会无法备份文后会附加下载链接)
完全备份和恢复
1.安装percona-xtrabackup
yum localinstall percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm -y
2.完全备份(先导入了一个自建的hellodb作为测试数据)
# innobackupex (--user=root) /backup/默认就是以root用户去备份,这里省略了
innobackupex /backup/
3.删除数据模拟损坏
rm -rf /data/mysql/*
4.整理日志信息
innobackupex --apply-log /backup/2018-06-15_22-12-06/
5.停止数据库
systemctl stop mariadb
6.恢复数据到目录并修改权限
innobackupex --copy-back /backup/2018-06-15_22-12-06/
chown -R mysql:mysql /data/mysql/
7.启动mariadb,验证是否成功
systemctl start mariadb
实现增量备份
1.要实现增量备份也是要在完全备份的基础上实现
innobackupex /backup/
原始数据库状态 2.为了看起来明了简单这里做3次增量备份,并且设置对应的目录存放,生产中也可以做类似分类,这样可以使得备份目录看起来简单明了。
mkdir /backup/inc{1,2,3}
3.模拟修改数据库并且每次修改后都做一次增量备份
#第一次修改数据库
mysql >create database db1;
#做增量备份
innobackupex --incremental /backup/inc1/ --incremental-basedir=/backup/2018-06-16_09-53-14
#第二次修改
mysql >create database db2;
#做增量备份
innobackupex --incremental /backup/inc2/ --incremental-basedir=/backup/inc1/2018-06-16_09-55-34
#做第三次修改(这里导入一个有数据的数据库)
mysql <hellodb_innodb.sql
#做增量备份
innobackupex --incremental /backup/inc3/ --incremental-basedir=/backup/inc2/2018-06-16_09-57-57
下图是最后的数据库信息 4.模拟损坏数据
rm -rf /data/mysql/*
ls /data/mysql/
5.停止数据库并准备恢复数据
#整合增量备份
innobackupex --apply-log --redo-only /backup/2018-06-16_09-53-14/
innobackupex --apply-log --redo-only /backup/2018-06-16_09-53-14/ --incremental-dir=/backup/inc1/2018-06-16_09-55-34
innobackupex --apply-log --redo-only /backup/2018-06-16_09-53-14/ --incremental-dir=/backup/inc2/2018-06-16_09-57-57
innobackupex --apply-log --redo-only /backup/2018-06-16_09-53-14/ --incremental-dir=/backup/inc3/2018-06-16_09-59-48
#关闭数据库,如果是新机器数据没启动就不用关闭,但是新环境记得要修改数据库配置文件与原相同
systemctl stop mariadb
#查看数据目录是否为空,并导入数据
ls /data/mysql/
innobackupex --copy-back /backup/2018-06-16_09-53-14/
#修改权限
chown -R mysql:mysql /data/
#启动数据库
systemctl start mariadb
6.登陆数据库并检查,数据完全恢复
实现单表备份和恢复
清除之前是备份 1.备份单表
innobackupex --include="hellodb.stdents" /backup/
#导出建表过程,并且删除无用的字段
mysql -e 'show create table hellodb.students' > students.sql
2.模拟表损坏或者被删除
mysql -e 'drop table hellodb.students'
3.恢复数据
# 整理数据
innobackupex --apply-log --export /backup/2018-06-16_10-21-54/
#恢复表结构
mysql hellodb < students.sql
#删除表空间
mysql -e 'alter table hellodb.students discard tablespace'
#恢复文件(在备份目录里)
cp students.cfg students.exp students.ibd /data/mysql/hellodb/
#修改权限
chown -R mysql:mysql /data/mysql/hellodb/*
#导入表空间
mysql -e 'alter table hellodb.students import tablespace'
4.验证是否恢复
xtrabackup下载地址 https://www.percona.com/downloads/XtraBackup/LATEST/ 使用的hellodb.sql文件地址 https://pan.baidu.com/s/1uI3Br-HJ8t5-C-_bfZenPg